1.反射机制
JAVA反射机制是在运行状态中, 对于任意一个类, 都能够知道这个类的所有属性和方法; 对于任意一个对象, 都能够调用它的任意一个方法和属性; 这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
主要作用有三:
- 运行时取得类的方法和字段的相关信息。
- 创建某个类的新实例(.newInstance())
- 取得字段引用直接获取和设置对象字段,无论访问修饰符是什么。
用处如下:
- 观察或操作应用程序的运行时行为。
- 调试或测试程序,因为可以直接访问方法、构造函数和成员字段。
- 通过名字调用不知道的方法并使用该信息来创建对象和调用方法。
2.final 关键字
final 类是不能被继承的 这个类就是最终的了 不需要再继承修改 比如很多 java 标准库就是 final 类。
final 方法不能被子方法重写。
final + static 变量表示常量。
3.一个 .java 源文件是否可以包含多个类
可以,但只能有一个是 public 的类 而且这个 public 类必须与文件名一样。
4.& 与 &&
都可以表示逻辑与 and, 但是 && 具有短路功能,第一个表达式错了,第二个就被忽略了。& 的表达式是先计算后求与。除此外 & 可以用作位运算符。
| 也有类似差异。
5.integer 通过 == 比较
Integer a=10;
Integer b=10;
Integer c=new Integer(10);
Integer d=new Integer(10);
System.out.println(a==b);
System.out.println(c==d);
System.out.println(a.equals(b));
System.out.println(c.equals(d));
System.out.println(a.equals(c));
结果为
true
false
true
true
true
Integer a = 127;
Integer b = 127;
Integer c = 128;
Integer d = 128;
System.out.println(a == b);
System.out.println(c == d);
结果为
true
false
Integer i = XXX 看看Integer 的源代码就知道了, 其实就是Integer 把-128-127(一个字节的二进制补码) 之间的每个值都建立了一个对应的Integer 对象, 类似一个缓存. 由于Integer 是不可变类, 因此这些缓存的Integer 对象可以安全的重复使用. Integer i = XXX, 就是Integer i = Interger.valueOf(XXX), 首先判断XXX 是否在-128-127 之间, 如果是直接return 已经存在的对象, 所以是同一个引用. 否则就只能 new 一个了, 那就是不同的引用了.