byte b = 1;
b = b + 1;
编译会报错,原因:byte = 1,进行自动转换,int 自动转 byte,没什么可说的。
但是,b = b + 1; 运算的时候,b 因为是 byte,1 是 int,b 由 1 个字节被转换成了 4 个字节,与 1 进行运算,结束后结果为 4 个字节,这是 4 个字节要赋值给 1 个字节的 b ,所以报错。逻辑运算符
& :一边为 false 结果为 false,见 false 为 false
| :一边为 true 结果为 true,见 true 为 true
^ : 两边相同为 false,不同为 true
! : 取反
&&:一边为 false ,另一边不运行
|| : 一边为 true,另一边不运行break跳出整个循环,continue跳出本次循环执行下次循环
下面的代码是使用 break 跳出两层循环,正常跳出一层,前面加上 a:
a:for (int i = 0; i < 3; i++) {
for (int j = 0; j < 2; j++) {
System.out.print("111");
break a;
}
}
- super 关键字
public class Fu {
int a = 1;
public Fu() {
a = 5;
System.out.println(a);
}
}
public class Zi {
//这里有一个隐藏的无参数构造方法
//这个构造方法里面有 super() 这个方法
//调用了父类的无参构造器,
//就算自己也了无参构造方法,也是有 super()
//属于隐式代码
//原因:因为子类可以调用父类的成员,而在初始化时候子类需要知道父类是如何在构造方法中赋值的。
}
public static void main(String [] strings) {
new Fu();
}
结果会输出:5;