1.需要注意的点
- 从Java SE7即JDK 7开始,switch支持字符串String类型了,同时case的标签必须为字符串常量或者字面量。在编译时,字符串实际上是利用hashCode来实现比较的
- 从Java SE5即JDK 5开始,新增用于数组和集合的增强型for循环
- 方法中可变参数的本质就是数组
- 递归时,只适合小基数。基数太大会导致栈溢出。
- 数组本身就是对象,Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中的。
- 面向对象编程的本质是以类的方式组织代码,以对象的组织(封装)数据
- 引用传递:为对象,本质还是值传递
- Idea中Alt +Insert:插入代码段,例如构造函数
- Java中只有单继承,没有多继承
- Ctrl+H生成继承树
- 在继承时,子类的无参构造函数,会隐藏的调用父类的无参构造函数——super();如果显示的调用父类的构造函数,必须在子类构造函数的第一行
- 父类的引用指向了子类,A是子类,B是父类 B b = new A();
- 重写只和非静态方法有关,与静态方法无关
- 多态
- instanceof——类型转换,X instanceof Y——表示X是不是Y或者Y的子类型
- 类的强制类型转换可能会丢失方法和变量
- 抽象类有构造方法,但是不允许使用new关键字实例化
- 接口的本质就是契约,接口中所有的定义的方法都是public abstract,定义的变量都是public static final,都是常量
- 接口中没有构造方法,可以实现伪多继承,不能使用new关键字
- 一个Java类中可以有多个class类,但是只能有一个public class
- 匿名类指的是没有名字初始化类,不用将实例保存在变量中 new Person().eat();
- 在捕获多个异常时,需要从小到大进行异常的捕获
- Ctrl + Alt + T 自动补全代码
- throw主动抛出异常,一般在方法中使用;throw主动抛出异常,一般在方法上使用
- 手动回收垃圾机制:使用System.gc();——通知JVM执行垃圾回收
- 装箱:把基本类型转成引用类型,将栈中的数据放到堆中。new Integer(num1)或者Integer.valueOf(num1)或者Integer Integer= num,自动装箱是编译器自己补充 的
- 拆箱:把引用类型转成基本类型,将堆中的数据放到栈中。new Integer(100).intValue()或者int num1 = new Integer(100);自动拆箱是编译器自己补充的
- Java预先创建了256个常用的整数包装类型对象,Integer在内存中会有一个-128到127的缓冲区,当Integer.valueOf传递的参数在这个区间时,都是一样的、相等的,不在这个范围内的才会重新创建
- 字符串是常量,字符串字面值存储在字符串池中,可以共享
- BidDecimal创建时要使用字符串创建
- 集合只能存储引用类型,存储基本类型需要装箱
- List接口的特点:有序、有下标、元素可重复;Set接口的特点:无序、无下标、元素不能重复