Java基础语法
2023-04-19 14:35:51 0 举报
AI智能生成
SE部分
作者其他创作
大纲/内容
包名:xxxyyy
类名、接口名:XxxYyy
变量名、方法名:xxxYyy
常量名:xxx_yyy
命名规范
创建:类名称 对象名 = new 类名称();
静态变量:任何对象都可以更改,也可以不创建该类对象去进行操作
静态方法:属于类,不属于对象,使用类名调用
静态代码块:给类变量进行初始化赋值,当第一次用到本类时,静态代码块执行唯一一次。静态内容优先非静态,因此静态代码块比构造方法先执行(每次new都会执行构造,但静态代码块只运行一次)
⚠️ 静态不能访问非静态,在内存中先有静态后有非静态
static关键字
变量:不能重新赋值
方法:不能被重写
类:不能被继承
abstract和final关键字不能同时使用,因为矛盾
修饰的变量所有字母大写
⚠️
final关键字
类和对象
子类方法的返回值必须 <= 父类方法的返回值范围
子类方法的权限必须 >= 父类方法的权限修饰符
方法重写问题
this:代表当前对象的引用,访问本类的内容(谁调用代表谁)
super:代表父类的存储空间标识,访问父类的内容(父亲的引用)
this、super
抽象方法只包含一个方法名,没有方法体
包含抽象方法的类为抽象类
不能直接new抽象类对象(因为抽象类的方法可能没有方法体)
抽象类的子类,必须重写抽象父类中所有的抽象方法
⚠️
修饰符 abstract class 类名
抽象类
重写接口中抽象方法【必须】
重写接口中默认方法default【可选】
不能通过接口实现类的对象来调用接口当中的静态方法(通过接口名称直接调用静态方法)
接口没有静态代码块和构造方法
[public] [static] [final] 数据类型 常量名 = 数据值;
必须进行赋值
需要大写字母(final型)
常量
抽象方法:如果实现类没有覆盖重写所有接口当中的抽象方法,那么实现类必须写成抽象类 public abstract class
默认方法:如果父类中的方法和接口中的默认方法产生了冲突,优先使用父类中的方法
静态方法:接口中,存在同名的静态方法并不会冲突,原因是只能通过各自接口名访问静态方法
多实现(类实现接口)
继承使用extends
一个接口能继承另一个或者多个接口
子接口重写默认方法时,default关键字需要保留。
子类重写默认方法时,default关键字不可以保留。
多继承(接口继承接口)
interface接口
封装、继承、多态
arr.length
数组
【获取键盘输入的一个int数字】 int num = sc.nextInt ( ); System.out.println (\"输入的Int数字是:\" + num );
【获取键盘输入的一个字符串】 String str = sc.next ( );
【System.in代表从键盘进行输入】 Scanner sc = new Scanner ( System.in );
Scanner(完成接收键盘录入数据的操作)
int num = r.nextInt ( );
Random r = new Random ( );
Random(生成伪随机数)
String str = new String ( );
String str = \"Hello!\";
初始化
oo.length ( );
oo.charAt ( );
oo.toCharArray ( ); 将当前字符串拆分为字符数组作为返回值
方法
String(字符串)
StringBuilder sb = new StringBuilder( );
StringBuilder sb = new StringBuilder(\"itcast\");
oo.append (...); 添加任意类型数据的字符串形式,并返回当前对象自身
oo.toString ( ); 将当前StringBuilder对象转换为String对象
StringBuilder(可变字符序列)
Arrays.toString (arr); 返回指定数组内容的字符串表示形式
Arrays.sort (arr);
Arrays(包含数组的各种方法)
Math.abs ( ); 返回double值的绝对值
Math(包含基本数学运算的方法)
如果一个类没有特别指定父类, 那么默认则继承自Object类。
toString ( );
equals ( );
需重写@Override
Object(根类)
new Date ( );
DateFormat format = new SimpleDateFormat ( );
oo.format ( ); 将Date对象格式化为字符串
oo.parse ( ); 将字符串解析为Date对象
DateFormat(抽象类)
子类
Date(日期时间)
Calendar(日历类)
System(提供大量静态方法,获取与系统相关的信息和操作)
Integer.parseInt (\"Haha\"); 将字符串参数转换为对应的int基本类型
包装类
常用类
oo.add ( e );
oo.clear ( );
oo.remove ( e );
oo.contains ( e );
oo.isEmpty ( );
oo.size ( );
oo.toArray ( );
oo.get ( i ); 返回集合中指定位置的元素
ArrayList 大小可变的数组
oo.addFirst ( e ) 将指定元素插入此列表的开头【默认add从队列右端加入】
oo.addLast ( e ) 将指定元素添加到此列表的结尾
oo.getFirst ( ) 返回此列表的第一个元素
oo.getLast ( ) 返回此列表的最后一个元素
oo.removeFirst ( ) 移除并返回此列表的第一个元素
oo.removeLast ( ) 移除并返回此列表的最后一个元素
oo.pop ( ) 从此列表所表示的堆栈处弹出一个元素【从栈顶弹出】
oo.push ( e ) 将元素推入此列表所表示的堆栈【从栈顶推进】【相当于addFisrt】
LinkedList 双向链表
实现类
List (有序)
存放自定义类型元素时(系统无法判断对象是否相同),需重写hashCode和equals方法
LinkedHashSet(按照输入排序、无重复)
HashSet(自动排序、无重复)
Set(无序、无重复)
子集合
Collection(单列集合)
Collections.shuffle ( L ); 打乱集合顺序
Collections.sort ( L ); 将集合中元素按照默认规则排序
静态方法
Collections (集合工具类)
oo.remove( K ); 把指定的键 所对应的键值对元素 在Map集合中删除,返回被删除元素的值
oo.get( K ); 根据指定的键,在Map集合中获取对应的值
oo.containsKey( K ); 判断集合中是否包含指定的键
oo.keySet(); 获取Map集合中所有的键,存储到Set集合中(返回Set集合)
Entry.getKey ( ); 获取Entry对象中的键
Entry.getValue ( ); 获取Entry对象中的值
⚠️ Map集合不能直接使用迭代器或者foreach进行遍历。但是转成Set之后就可以使用了
oo.entrySet(); 获取到Map集合中所有的键值对对象的集合(Set集合)
LinkedHashMap(按照输入排序、无重复)
HashMap(自动排序、无重复)
Map(双列集合)
集合
printStackTrace ( ); 打印异常的详细信息
String getMessage ( ); 获取发生异常的原因
Error
用在方法体内,跟的是异常对象名
表示抛出异常,由方法体内的语句处理
执行 throw 一定抛出了某种异常
throw
用在方法声明后面,跟的是异常类名
表示抛出异常,由该方法的调用者来处理
表示出现异常的一种可能性,并不一定会发生这些异常
throws
会处理异常,程序继续执行
try…catch
语法:try...catch....finally
作用:在finally代码块中存放的代码都是一定会被执行的
final代码块
Exception
Throwable
异常
public Thread ( ) : 分配一个新的线程对象
public Thread (String name) : 分配一个指定名字的新的线程对象
public Thread (Runnable target) : 分配一个带有指定目标新的线程对象
构造方法
public String getName ( ) : 获取当前线程名称
public void start ( ) : 导致此线程开始执行; Java虚拟机调用此线程的run方法
public void run ( ) : 此线程要执行的任务在此处定义代码
public static void sleep (long millis) : 使当前正在执行的线程以指定的毫秒数暂停(暂时停止执行)
public static Thread currentThread ( ) : 返回对当前正在执行的线程对象的引用
常用方法
方式一:Thread类
适合多个相同的程序代码的线程去共享同一个资源
可以避免java中的单继承的局限性
增加程序的健壮性,实现解耦操作,代码可以被多个线程共享,代码和线程独立
线程池只能放入实现Runable或Callable类线程,不能直接放入继承Thread的类
优势(相比Thread)
方式二:Runnable接口
创建
synchronized ( 同步锁 ) { 需要同步操作的代码 }
同步代码块
public synchronized void method ( ) { 可能会产生线程安全问题的代码 }
同步方法
public void lock ( ) : 加同步锁
public void unlock ( ) : 释放同步锁
Lock锁
线程安全
线程状态
ExecutorService service = Executors.newFixedThreadPool (2); //包含2个线程对象
service.submit (接口实例对象);
service.shutdown ( );
线程池
多线程
Java基础语法
0 条评论
回复 删除
下一页