1、基本数据类型:4种整形,2种浮点类型,1种char,一种boolean
2、创建数组:
int[] num={1,2,3}
int[] num=new int[]{1,2,3}
int[] num=new int[3]
前两种不创建新的数组类型,只引用堆空间的对象。
3、操作数组:
Arrays.copyOf()
Arrays.sort()
Arrays.toString()
Arrays.binarySearch()
4、访问权限修饰符:
5、final作用:
- 修饰类型—不能被子类继承
- 修饰方法—不能被子类重写
- 修饰变量—不能被修改
6、JavaBean初始化顺序
(1)按照顺序加载静态域、静态方法和静态块
(2)加载初始化块
(3)加载构造方法
注意:类变量可以不初始化,会有默认值,数字型为0,boolean为false,对象型为null,但是局部变量必须明确初始化。
7、抽象类
- 只要有一个抽象方法则为抽象类,抽象类不一定有抽象方法。
- 抽象类既可以有具体方法,也可以有抽象方法。
8、包装类型
自动装箱规范要求 boolean、byte、char 127,介于-128 ~ 127之间的 short 和
int 被包装到固定的对象中。例如, 如果在前面的例子中将 a 和 b 初始化为 100, 对它们
进行比较的结果一定成立。
9、方法参数(java方法的参数调用是call by value,即复制对象地址到方法变量中)
10、接口:
- 接口不能使用具体方法。
- 父类和接口有同一方法,调用父类的方法。
- 两个接口都有同一方法,必须在子类中重写该方法。
- 接口的域和方法不用写访问修饰符,默认为public。
11、反射:
(1)Class的获得方法
Class pc1 = Person.class; //方法一
Class<? > pc2 = Class.forName("Person"); //方法二
Person person = new Person(); //方法三
Class<? extends Person> pc3 = person.getClass();
(2)反射获得/设定私有域
Person person = new Person();
Class<? extends Person> pc3 = person.getClass();
Field name = pc3.getDeclaredField("name");
name.setAccessible(true); //设定私有域和私有方法为可修改且可访问
String nameValue = (String) name.get(person);
name.set(person,"Tom");
(3)反射执行私有方法
Person person = new Person();
Class<? extends Person> pc3 = person.getClass();
Method getName = pc3.getDeclaredMethod("getName", new Class[]{String.class, int.class});//第二个参数为方法的参数类型
getName.setAccessible(true);
getName.invoke(person, "Cat", 24);
12、内部类
https://blog.csdn.net/yancychas/article/details/80221655
https://www.cnblogs.com/chenssy/p/3388487.html
13、异常:
(1)创建异常
class FileFormatException extends IOException{
public FileFormatExceptionO {}
public FileFormatException(String gripe){
super(gripe); //把具体信息写进String gripe中
}
}
(2)抛出异常
new处新异常并抛出
14、泛型
(1)泛型类
public class Girl {
public T name;
}
(2)泛型方法(T代表一种继承Person的子类)
public <`T extends Person> String getName(T id){
return name;
}
(3)泛型通配符(?代表所有继承Person的子类)
public String getName(ArrayList<`? extends Person> id){
return name;
}
15、集合
16、并发
(1)常用方法
Thread thread = Thread.currentThread(); //得到当前线程
thread.interrupt(); //中断线程
boolean interrupted = thread.isInterrupted(); //判断是否为中断
Thread.State state = thread.getState(); //得到线程状态
thread.setDaemon(true); //设定为守护进程
thread.setPriority(5); //设定优先级,越高越先
Thread.sleep(5000); //当前线程睡眠5秒
(2)synchronized关键字
public synchronized void test() {
//synchronized方法,则只有一个线程能进入该方法
}
public void test() {
synchronized (this){
//锁住该代码块
}
synchronized (Person.class){
//锁住Person.class里面的方法
}
synchronized (person){
//锁住person对象
}
}
(3)Volatile关键字
被Volatile修饰的域可保证只能同时被一个线程访问。
16、流家族
https://blog.csdn.net/qq_32270067/article/details/78406124
https://blog.csdn.net/yancychas/article/details/76474035
https://blog.csdn.net/yancychas/article/details/77932749
17、日期Localdate