ThinkInJava_3_操作符

3.1 更简单的打印语句

3.2 使用Java操作符

3.3 优先级

3.4 赋值

基本类型直接复制了值
对象赋值实际上是将引用从一个地方复制到另一个地方

A c = new A();
A d = new A();
c = d;
//实际上是将d指向的对象赋值给了c,c和d作为同一个对象的引用

参数传递,实际上传递的是引用

class Letter {
	char c;
}
public class PassObject {
	//参数传递,实际上传递的是引用,实际上修改了f()之外的对象
	static void f(Letter y) {
		y.c = 'z';
	}
	public static void main(String[] args) {
		Letter x = new Letter();
		x.c = 'a';
		System.out.println(x.c);
		f(x);
		System.out.println(x.c);
	}
}

3.5 算数操作符

3.6 自动递增和递减

3.7 关系操作符

==操作符

class A {
	int a;
}
public class Equivalence {
	public static void main(String[] args) {
		A n1 = new A();
		A n2 = new A();
		n1.a = 1;
		n2.a = 1;
		System.out.println(n1 == n2);
		System.out.println(n1 != n2);
	}
}
//==只有在两个对象为同一个对象时才判为相等

equals()

n1.equals(n2); //false
//自己编写的类A中equals的默认行为是比较引用,
//所以必须覆盖equals()方法后才能使n1和n2相等
Integer i1 = new Integer(1);
Integer i2 = new Integer(2);
i1.equals(i2); //true
//Integer 包装器的equals()方法,仅比较里面的int值

3.8 逻辑操作符

aaa && bbb && ccc
//短路

3.9 直接常量

1.39E-43f //表示1.39 * 10^-43

3.10 按位操作符

3.11 移位操作符

只有整数可以移位
如果对byte或者short进行移位,可能会被先转化成int类型,再进行右移,最后被截断

3.12 三元操作符

boolean_exp ? value1 : value2;

3.13 字符串操作符+和+=

Java程序员不能实现自己的重载操作符

int x = 0,y = 1,z = 2;
String s = "x, y, z ";
print(s + x + y + z);//x, y, z 012
如果字符串操作符表达式以一个字符串起头,后面所有操作数必须是字符串类型

3.14 类型转换操作符

  • 窄化转换可能造成信息丢失,必须显式写出来
  • 扩展转化则不必进行显式的类型转化
  • 将float或double类型转化为int型时,会对该数字进行截尾操作
  • 如果想把值赋给较小类型的数据,就必须进行窄化转化
    如果计算一个表达式,则结果为表达式中最大的数据类型,如 float*double 得到一个double类型数
  • 对 char, short, byte 进行算数运算,会得到 int 型的结果,必须对数据进行窄化得到原有类型
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值