Java 细节
取余运算
int a = 3 % 2;
int b= 2 % 3;
int c = 3 % -2;
int d = -2 % 3;
int e = -2 % -3;
1
2
1
-2
-2
符号与左边相关
数据自动转换
低到高自动转换
高到底强制
数据做加法运算:
short a = 1;
byte b = 2;
chat c = 3;
a + b
b + c
a + c
输出都是 Java.lang.Integer 类型
规则具体讲解:
(2.2.1)如操作数之一为double,则另一个操作数先被转化为double,再参与算术运算。
(2.2.2)如两操作数均不为double,当操作数之一为float,则另一操作数先被转换为float,再参与运算。
(2.2.3)如两操作数均不为double或float,当操作数之一为long,、则另一操作数先被转换为long,再参与算术运算。
(2.2.4)如两操作数均不为double、float或long,则两操作数先被转换为int,再参与运算。
反射
- 对象.getClass()
- 类.class
- Class.forName("全限定名类")
https://tool.lu/coderunner/?id=cJL
代码块的妙用
- 普通代码块 (方法内部)
- 静态代码块
- 构造代码块
- 同步代码块
hashcode
- 在程序执行期间,只要equals方法的比较操作用到的信息没有被修改,那么对这同一个对象调用多次,hashCode方法必须始终如一地返回同一个整数。
- 如果两个对象根据equals方法比较是相等的,那么调用两个对象的hashCode方法必须返回相同的整数结果。
- 如果两个对象根据equals方法比较是不等的,则hashCode方法不一定得返回不同的整数。
流的转换(不转换也可以读写,为什么要转换)
InputStreamReader
OutPutStreamWriter