• 《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类型,所以编译器会直接显示一个编译时错误,让你在运行程序之前就能发现问题。

    1. while(x=y) {
    2. //...
    3. }

    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则会通过抛出运行时错误(即异常)来保护你免受此类问题的影响。

  • 相关阅读:
    自然语言处理(NLP)中的迁移学习
    FL Studio21免许可证完整版数字音频工作站(DAW)
    Java8实战-总结44
    proteus 器件名称被软件篡改bug的解决方案
    Redis数据结构之quicklist
    长假回归,回顾一下所有的电商API接口
    # ODS及DWD层自动化构建##, 220731,
    1558. 得到目标数组的最少函数调用次数
    【Vue】搭建vuex环境
    用 Kafka + DolphinDB 实时计算K线
  • 原文地址:https://blog.csdn.net/liminwang0311/article/details/126572548