现在的位置: 首页 > 综合 > 正文

自编java细节(1)

2018年05月11日 ⁄ 综合 ⁄ 共 1082字 ⁄ 字号 评论关闭

也是暑期時候寫的,

之前發布於 http://youngershen.com/blog

自编java细节(1)

on August
13th, 2011 by youngershen
No
Comments »

java 是很强大的一门语言,这个自然不必说,就其规模来说实在是太大了,这时候架构的意义才会凸显出来,现在我要写的是以我的观点出发的关于java的细节的东西,gaga!

<1>. 关于^ , & ,| 与 && , || ,! 的区别。

也许很多人只是以为前者只是简单的位运算符,其实不是这样的,看我下面的这段code .

public class test{

public static void main(String[] args){boolean f = false;
boolean t = true;
f^=t;
System.out.println(f);
}
}
是不是看到了 ^运算符的奇怪用法,是的这个是可以当作逻辑运算符来使用的,只不过它只能用来进行对boolean类型的数据进行求解,而且还有一点就是它是非短路的,所以一般它被称作是逻辑布尔运算符,而且可以和=组合起来使用,是很方便的,关于^在上面情形的使用,输出自然不必解释了,当然是 “true” ,其他的两个运算符也是类似的功能,能用到哪里就看你自己的选择和意图了。
<2>.  奇怪的输出问题

public class test{

public static void main(String[] args){

char x = ‘x’;
System.out.println(x+‘\n’);
}

}

是的你完全有理由相信上面的代码会输出一个x然后紧接着是一个回车换行,是的,一开始我也是这么想的,但是实际上它不是,JVM不是这样做的,确实不是这样做的,实际的输出是一个数字,x的值不同,数字会不同,这到底是为什么呢?其实道理也很简单,字符在计算机中本来就是用数字进行表示的,在进行运算的时候自然是要转化成数字,而且’\n’ 也是一个unicode字符,在java中,其用十六进制表示为 0x000A,然而不幸的是在java中是没有重载运算符这种东西的,最后得到的自然是2个整数相加的结果,如果想看字符输出,可以转换一下,但是和理想输出是不一样的,但是如果是这样呢,就没有问题了

public class test{public static void main(String[] args){

char x = ‘x’;
System.out.println(x+“”+‘\n’);
}

}

java本身已经很聪明了,所以看起来奇怪的东西,也可以运行的和期望一样。

抱歉!评论已关闭.