zoukankan      html  css  js  c++  java
  • 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++都支持。

    待续。

  • 相关阅读:
    #树#遍历#N叉树的前序遍历
    #树#递归#最大二叉树II
    #树#递归#二叉树的镜像
    #树#递归#最大二叉树
    #树#二叉搜索树的最近公共祖先
    #树#二叉树的直径
    #树#N叉树的后序遍历
    #树#判断平衡二叉树
    webpack+react+nodejs+express前端开发环境搭建
    sublime 玩转react+es6
  • 原文地址:https://www.cnblogs.com/zqiguoshang/p/6410368.html
Copyright © 2011-2022 走看看