方法体字符使用声明相关装箱和拆箱注解抛出异常捕获异常抽象和接口switch位运算符三元运算符比较运算符判断数值与引用是否相等
方法体一个方法编译后的字节码不能超过64KB大小(JDK规定的) 字符使用
频繁地修改字符使用 StringBuilder 和 StringBuffer 速度高于 String 。
单线程使用 StringBuilder ,因为速度优于 StringBuffer 。多线程使用 StringBuffer ,因为比 StringBuilder 线程安全。 修改少被多个对象引用使用 String,如:配置信息 声明相关
声明并实例化对象时 = 左边称为编译类型,右边称为运行类型
Object o = new Integer(0); // Object 称为编译类型 // Integer 称为运行类型装箱和拆箱
装箱:基本类型 -》 包装类型
拆箱:包装类型 -》 基本类型
JDK5前手动装箱
int n1 = 100; Integer in = new Integer(n1);
手动拆箱
int i = in.intValue();
JDK5后自动装箱
int n2 = 200; Integer in2 = n2;// 底层会去 new 实现自动装箱
自动拆箱
int n3 = in2;// 底层调用 intValue 实现自动拆箱注解
@SuppressWarnings 抑制编译器报错@Deprecated 标识程序元素(类、方法等)已过时 抛出异常
| 关键字 | throws | throw |
|---|---|---|
| 意义 | 异常处理的一种方式 | 手动生成异常对象的关键字 |
| 位置 | 方法声明处 | 方法体中 |
| 后面跟的东西 | 异常类型 | 异常对象 |
finally 不管 catch 有没有返回值 return 都会执行;如果都有 return 那么会返回 finally;如果只有 catch 有那么会返回 catch 的,后面 finally 对值有操作都不会影响 catch。 抽象和接口
abstract:is-a
方法只能为抽象,不能有具体的实现方式 interface:like-a
JDK8.0以后接口方法可以有具体的实现方式不能extends继承类可以extends继承其他接口不准修改全局变量public static final switch
当switch里面的case满足条件一次以后没有break,那么后面的case不管符不符合条件都会被执行直至遇到break 位运算符
>> n 除以 2 n 2^{n} 2n<< n 乘以 2 n 2^{n} 2n 三元运算符
三元运算符是一个整体,因此精度低的会向进度高的过渡。
Object i = true? new Integer(1):new Double(2.0); System.out.println(i); // Integet -> Double 转型 因此 i = 1.0比较运算符
&& 如果左边为 false ,那么右边不会运行。
int a = 0;
int b = 0;
int c = 0;
int d = 0;
for(int i=0;i<3;i++){
if(++a>2&&++b>1)break;
if(++c>2&++d>1)break;
}
// a、b、c、d 最后值为多少?a = 3, b = 1, c = 3, d = 3
|| 如果左边为 true ,那么右边不会运行。int a = 0;
int b = 0;
for(int i=0;i<3;i++){
if(++a<1||++b<1)break;
}
// a、b最后值为多少?a = 1, b = 0
判断数值与引用是否相等
引用与数值比的是数值
Integer i = new Integer(128); int a = 128; System.out.println(i == a);//



