《Java核心技术》笔记

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

https://blog.csdn.net/u011055819/article/details/80070429

猜你喜欢

转载自blog.csdn.net/yancychas/article/details/84664642