这里我只写出于C++不同的地方
Java中的常量有final修饰,其所修饰的变量在初始化完毕之后不可再更改。 那么final也可以修饰变量,函数形参,函数返回值。
public static void main(String[] args) { final int y=3; y=5; //这里会报编译错误 System.out.println(y); }C++中的const因为可以修饰指针、引用等等,作用要丰富得多。
静态使用static来修饰,其可以修饰的变量、代码段、函数。
修饰变量,此变量只有静态方法可以调用修饰类成员函数,则此函数调用时不需要对象来运行,此函数内部也不能再使用this指针。修饰代码段,则此代码段优先于Main函数执行Java里的字符串是不可修改的。没法通过数组形式去访问,下标访问也是不行的。
String s="123"; String b=new String("123"); StringBuilder stringBuilder=new StringBuilder(); stringBuilder.append("123"); String temp = stringBuilder.toString();Java的字符串拼接会产生临时对象,消耗比较大。具体内容还是需要看到虚拟机才行。但是可以通过StringBuild构造器去构造,消耗比较小。
涉及到深浅拷贝的问题,Java里的拷贝默认是浅拷贝。深拷贝需要调用特殊API.Arrays.copyOf(arr,arr.length)
public static void main(String[] args) { int[] arr={1,4,2,5,3,9,7,8,6}; int[] brr=arr; int[] crr= Arrays.copyOf(arr,arr.length); brr[0]=2; System.out.println(arr[0]); //浅拷贝导致arr[0]变成2 crr[0]=3; System.out.println(arr[0]); //深拷贝,arr[0]值还是2 }还有一个tips:Java里的二维数组相当于C++里的双重Vector,甚至于可以做到二维数组的一维进行换层。
