赋值之引用类型
普通的基本类型赋值如:a=b当我们修改a=1时并不会对“b”的值产生影响,但是引用(这里的引用大概是指内存地址)类型不同,当我们对一个对象进行操作时,我们真正操作的是对对象的引用,所以倘若“讲一个对象赋值给另一个对象”,实际是将一个“引用”从一个地方复制到另一个地方
equals()默认行为是比较引用,除非我们对equals进行覆盖
逻辑操作符之短路现象
与&或||非!操作符只可应用于布尔值,其实在日常生活中我们也是通过比较判断等生成一个布尔值来进行判断
什么是短路现象?
就是一旦能够明确无误的确定某个表达式的值,整个表达式之后的部分就不再会执行,如下所示:
/**
* @author Administrator
* 逻辑操作符之短路现象
*/
public class LogicalOperator {
public static boolean test1(int val) {
System.out.println("test1("+val+")");
System.out.println("result:"+(val < 1));
return val < 1;
}
public static boolean test2(int val) {
System.out.println("test2("+val+")");
System.out.println("result:"+(val < 1));
return val < 2;
}
public static boolean test3(int val) {
System.out.println("test3("+val+")");
System.out.println("result:"+(val < 1));
return val < 3;
}
public static void main(String[] args) {
boolean b = test1(0)&&test2(2)&&test3(2);
System.out.println("表达式结果为:"+b);
}
}
上面的代码的结果为:
test1(0)
result:true
test2(2)
result:false
表达式结果为:false
这里我们可以看到我们一共调用了三个方法,但是真正执行的却只有两个也就是只有test1和test2执行了,由于此时已经确定返回的结果一定为false就不再调用第三个方法,这无形中提升了代码的性能
三元运算符
使用格式如下:
boolean-exp ? value0 : value1
这里的boolean-exp代表了一个布尔表达式,如果该表达式的结果为true就会调用value0否则调用value1
类型转换操作符
当我们进行类型转换时有以下几个重点:
- 假设一个较小类型的变量为一个较大类型的变量赋值,java会自动将小类型转换为大类型,比如:int类型的变量赋值给float将自动将int类型转换为float
- 虽然在Java中可以对类型进行自动转换但是我们仍然可以显式的进行转换,这样也可以让代码更加清晰
- 有的时候我们可能需要进行“窄化转换”,也就是大类型转小类型,一旦小类型支持的数据长度比指定数据小,就很有可能会出现数据丢失的情况,也就是说容纳更多信息的类型转换为无法容纳信息的类型
- 还有一种转换就是扩展转换,也就是小类型转大类型
- 布尔类型不允许做任何类型转换处理
- 当我们将float,double类型转换为int是不会自动四舍五入,而是小数点后的数据会被直接截断,例如:11.5转换为int类型得到的将会是11而不是12