【Thinking in Java】操作符



Java在方法调用过程中传递的是“对象的引用”,但对于基本数据类型,传递的是参数的拷贝。

所以下列代码输出的分别是Z和4。

public class Letter {
	char c;
}

public class PassObject {
	public static void main(String args[]){
		Letter x=new Letter();
		int a=4;
		x.c='a';
		f(x);
		i(a);
		System.out.println(x.c);
		System.out.println(a);
	}
	static void f(Letter y){
		y.c='Z';
	}
	static void i(int num){
		num=8;
	}
}


a++和++a,别是先传值和先运算。


对象的等价性。对于下列代码,输出的分别是:YES、NO、NO、YES。

对于后三个的解释为:

==比较的是引用,而不是对象本身。

equals在这里比较的是对象本身。事实上,equals优先比较的也是对象的引用,但是Java很多类重写了equals方法,使其比较的是对象本身,就像这里的String一样。

public class Equivalence {
	public static void main(String args[]){
		String str1="a";
		String str2="a";
		if(str1==str2){
			System.out.println("YES");
		}else{
			System.out.println("NO");
		}
		
		String s1=new String("abc");
		String s2=new String("abc");
		if(s1==s2){
			System.out.println("YES");
		}else{
			System.out.println("NO");
		}
		
		Integer a=new Integer(4);
		Integer b=new Integer(4);
		if(a==b){
			System.out.println("YES");
		}else{
			System.out.println("NO");
		}
		
		if(a.equals(b)){
			System.out.println("YES");
		}else{
			System.out.println("NO");
		}
		
	}
}

但是对于第一个为什么成立存疑,难道这样写str1和str2就是同一个引用了?


使用逻辑操作符&&(或||)操作符连接多个布尔表达式,在已经确定整个表达式值得情况下,后面的表达式不会执行。这种情况称作“短路”。

使用按位操作符&(或|)连接布尔表达式与逻辑操作符具有同样的效果,但是不会出现“短路”,即所有的表达式均会执行。


位移操作符>>或(<<)把整数转换为二进制数后进行移位,再转化成十进制数返回。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值