• java与C++不同之处(java不支持特性)


    java 不支持默认参数。(避免与重载混淆。)

    java 类没有析构函数。delete不是关键字。(垃圾自动回收机制)

    java 不支持操作符重载。所以对象比较只能老老实实实现comparable接口,然后用compareTo去比较了。想要用<去比较java对象是不可能的。

    java 局部变量(方法内变量)不支持static。

    java 不支持泛型数组。原因是擦除。

    java 泛型用擦除实现,不支持调用泛型类型方法。

    java 类不支持多重继承。接口可以。

    java 不支持引用符号(&),虽然它对象是按引用传递,但也只是如此而已。普通类型不可声明为引用。(引用可以用数组来模拟)

    java 不支持指针。

    java String不是以''结束。C是,C++ char *[]表示的字符串也是,但C++ std::string不是以''结束。事实上,String封装了length, 就没有必要再以''这种实际中容易引起混淆的标志结尾了。

    java 不支持方法默认参数,想要模拟C++默认参数效果,可用方法overloading实现。

    java boolean不可转化为其它基本数据类型。其他类型也不能转化为boolean。强制转型也不行。这其实是好事。因为这意味着在if,while等判断式中,除了boolean,其它基本类型都会出错。也规避了==和=引起的错误。

    java char默认2字节。C++是1字节。这对处理中文有极大好处。虽然保存UTF-8还是不够......

    java 没有sizeof()操作符。因为不需要。所有基本类型都是平台统一。当然boolean除外。

    java 没有unsigned int等类型。想声明无符号整数,是不可能的。不过也不是很必要,毕竟现在内存大了,少一个bit也没什么。

    java 中ArrayList<Long> arraylist = new ArrayList<Long>(10),会分配空间,但size不变,所以调用arraylist.set(1,0)会越界.....C++不会。但提前分配空间是有意义的,只是set会检查size,所以悲剧发生了.....

    而这些C++都支持。

    待续。

  • 相关阅读:
    学习、发现和创造一切皆有规律
    Ubuntu12.04下建立交叉编译环境、使用QEMU模拟CortexA9、QEMU运行uboot
    基于ARM的SoC设计入门[zz]
    ARM指令集详解[zz]
    电子工程自学步骤与书籍非电子专业
    IC设计的前端和后端[zz]
    [转]用C#获取IE临时文件
    二行代码解决全部网页木马(含iframe/script木马)(zt)
    winform 分页控件,源码下载
    在UpdatePanel中GridView导出EXECL问题
  • 原文地址:https://www.cnblogs.com/zqiguoshang/p/6410368.html
Copyright © 2020-2023  润新知