- 八大数据类型
byte short int long float double char boolean
8 16 32 64 32 64 16 8 - 给Long类型复制后面必须加L
- 整数类型默认为int类型
- double直接复制小数类型即可,但是对于float 声明时后面必须加f
- 小数常量默认为double类型
- Boolean类型默认值为false
- 类的实例化初始顺序
父类静态变量
父类静态代码块
子类静态变量
之类静态代码块
父类实例变量
父类匿名代码块
父类构造器
子类实例变量
子类匿名代码块
子类构造器 - 接口与抽象类的知识
接口默认为public abstract修饰
接口中的方法默认为public abstract
接口中的成员变量默认为public static final 修饰
java8 之后接口中可以有 default 与 static 修饰的方法
java9 之后接口中可以有 private 修饰的方法
接口允许多继承 一个实现类可以实现多个接口
抽象类中可以有抽象方法,也可以没有抽象方法
抽象类中可以有构造器(供子类调用)
抽象类只能单被继承 - SwitchCase
如果case中不存在break 则会继续往下执行
Switch中可以有int short byte char 枚举 和 String(java7之后) - 异常
1,多个catch匹配 顺序必须由小到大
2,如果try catch 中有return语句会执行 则return语句会在finally语句执行结束后执行
3,如果finally语句中有return语句,不仅会掩盖try catch中的返回值还会掩盖try catch中的异常
4,如果finally中抛出异常,则原有异常也会被覆盖 - String类相关
public static void main(String[] args) { String s1= "hello"; String s2="hello"; System.out.println(s1==s2); System.out.println(s1.equals(s2)); /* 输出结果 true true */ /** * equals 比较的是字符串的内容 * s1==s2 返回true是因为s1="hello"d的时候 常量池中没有"abc" 所以就new一个"abc" * 当s2="abc"时,常量池中存在"abc",系统就会把"abc"的引用直接赋值给s2 * 所以 s1==s2 的结果为 true,因为它们的引用是一样的~ */ String s1="hello"; String s2=new String("hello"); System.out.println(s1==s2); System.out.println(s1.equals(s2)); /* 输出结果 false true */ /** * s1 是 new string() ,在 Java 中,new 一个对象就会在内存的堆中开辟一块空间,然后把引用赋值给 s1 , * 一个是堆中的引用,一个是常量池中的引用所以,s1==s2 的结果为 false~~ */ String s1="a"+"b"+"c"; String s2="abc"; System.out.println(s1==s2); System.out.println(s1.equals(s2)); /* 输出结果 true true */ /** * Java中有一种叫做常量优化的机制, * 我们在赋值的时候 “a”,“b”,“c”都是常量, * 系统及直接把 abc 赋值给 s1 了, * 这时候常量池中也就存在 “abc” 了,所以s1==s2 */ // String s1=new String("hello"); /** * 创建了几个对象? * 答案:2个 * 为什么是两个 * 请参考博客 https://www.cnblogs.com/ydpvictor/archive/2012/09/09/2677260.html */ /** * String,StringBuilder,StringBuffer三者的区别 * * 1,三者都是被final修饰的 * 2,StringBuffer 是jdk 早版本出现的 ,StrigBuilder是在JDk的5.0版本里出现的,性能较快 * 3,StringBuffer 是线程安全的 StrigBuilder 不是线程安全的 * 4,StringBuffer 它的toString方法会在缓存中取该字符串 而 StringBuilder 它的toString方法会新new出一个字符串 */ }
-
重载和重写的区别:
1) 重写 override
- 方法名、参数、返回值相同
- 子类方法不能缩小父类方法的访问权限
- 子类不能抛出比父类大的异常
- 存在与子父类之间
- 方法被定义为final不能被重写
2)重载
- 参数类型、个数、顺序(参数类型)至少有一个不同
- 方法名相同
- 不能重载只有返回值不同的方法名
- 存在与父类和子类同类中