java和c++在简单语法处的不同

java编程思想在前2章有提到很多java和c++的一些不同之处,所以这边先总结一下。

  • java的所有变量对象 都认为是引用

  • String s 想要初始化, 需要 String s = new String("abcd")

  • 在C++里往往是获取1个指针去然后去new一个对象, 而在java里都认为是引用

  • java里,byte是1个字节, char是2个字节, int一定是4字节, long一定是8字节, bool类型无空间大小。 重点在于这些字节数与平台无关,兼容性很好

  • java.util提供了高精度计算类 BigInteger 和 BigDecimal, 支持任意精度的整数和任意精度的浮点数。

  • java中的数组一定会被初始化,即定义了boolean[] vis时, 自动默认初始化为false( 注意,如果是boolean vis, 则需要手动初始化)

  • java创建的对象不需要手动释放空间, 由垃圾回收器去回收

  • java的类的基本成员数据类型的成员, 会被默认初始化为0或null或false, 但是方法内的局部变量 不会。

  • java中如果没有对局部变量初始化, 会编译报错,C++中不会

  • java里变量赋值, 都是引用赋值
    b=a , 当b改变时,a也会改变
    (所以一般都是用函数去重新赋值,而不是直接=号)

  • Long.toBinaryString(整数) 可以将整数转成二进制

  • Java不能进行运算符重载。, 但是支持String类型用+和+=来拼接(只有string可以这样,其他对象不可以用+和+=)

  • Java中, if(a=b) 这种是错误的, 即不能在条件表达式中放入赋值操作,会报告错误。 但是c++可以。 因此java条件表达式中只能存布尔类型。

  • java中布尔类型不能转为其他类型。

  • java的强制转化是安全的,但是要注意2点:
    如果是那种会丢失精度或者被截断的转化,不能用隐式转化, 编译器会强制要求我们用强制转化
    2.如果是int到long这种,则可以用隐式。

  • java中没有sizeof

  • 布尔类型只能做判断或者与或操作(& &&都可以), 但不能用来加减乘除之类的

  • 非布尔数据类型不能 做判断, 例如&& || 都是不行的, 和上面一样,不能用非布尔类型做判断操作

  • Interget I
    int i = I
    此时会自动进行拆包

你可能感兴趣的:(java和c++在简单语法处的不同)