《ON JAVA》学习笔记3:Java和C++的一些不同点

《ON JAVA》在讲Java时,大段的内容提到了C++或C,至少我刚才看的第4章是这样的,现摘抄一些,如下:

1、Java还新增加了一种“无符号”的右移位操作符(>>>),它使用“零扩展”:无论符号为正还是为负,都在高位插入0。这一操作符是C或C++中所没有的。

2、尽管Java如果要实现操作符重载的话肯定比C++中的简单许多,它仍然被认为过于复杂 ,所以Java程序员无法像C++和C#程序员那样实现自己的重载操作符。

3、在C和C++中,如果y非零,则这里的结果将始终为true,你可能会得到一个无限循环。但因为Java中无法自动将int类型转为boolean类型,所以编译器会直接显示一个编译时错误,让你在运行程序之前就能发现问题。

while(x=y) {
	//...
}

4、在C和C++中的一个类似的问题(指上面),在应该使用逻辑操作符的时候使用了按位“与”和按位“或”操作符。在Java中,编译器防止了这种情况的发生,它不会让你在不适合的地方随意使用某个操作符。

5、在C和C++中,类型转换让人头痛。但是在Java中,类型转换则比较安全。不过,执行被称为窄化转型的操作时,就有可能面临信息丢失的危险。Java可以把任何基本类型转换成别的基本类型,但boolean除外,它允许进行任何类型的转换处理。

6、可移植性是一个让C和C++程序员颇为头痛的问题,Java不需要sizeof()操作符来处理可移植性,因为所有的数据类型在所有机器中的大小都是相同的。我们不必考虑这种程度的可移植性——它已经被设计在语言里了。

7、Java不允许将数字当作布尔值使用,虽然这在C和C++里是允许的。

8、像C这种传统的过程式语言要求所有变量都在程序开始的地方定义。当编译器创建它们的时候,会为这些变量分配空间。而在Java和C++中,你可以把变量声明分散在整个程序里,在真正需要的时候才定义。这样的编程风格更自然,也更易于理解。

9、Java里唯一使用逗号操作符的地方就是for循环的控制表达式。

10、带标签的break和continue是较少使用的试验性功能,在此前的编程语言中几乎没有先例。一定要记住,在Java里使用标签的唯一理由就是你用到了嵌套循环,而且你需要使用break或continue来跳出多层的嵌套。

11、与C和C++一样,Java中的数组从元素0开始计数,因此可以索引的最大下标数是length-1.如果越界,C和C++会默默地接受,并允许你访问所有内存,这是许多臭名昭著的错误的根源。而Java则会通过抛出运行时错误(即异常)来保护你免受此类问题的影响。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值