注意:
1、不同于String类,String由于实现了常量池 所以new 和不new 有区别:new的话,引用变量指向堆区。不new的话,引用变量指向常量池。
对于数组的定义,初始化时用new与不用new 没区别,只是两种方式罢了,因为数组是引用数据类型,建立对象时,无论用不用new,数组实体都是放在堆内存中,引用变量放在栈内存。
2、A a = new A();
这句话为A的对象创建了一个实例,在内存里开辟了两个空间:一块空间在堆,存放new A()这个对象;另一块空间在栈,存放a,a的值即new A()这个对象的内存地址。
使用方式:
字符串:
//在堆里new一个字符串对象
String b = new String();
//在堆里new一个一维字符串数组
String[] c = new String[]{"skjdhfjhsdf","sjhfdhsdfsd"};
//在堆里new一个二维字符串数组
String[][] k = new String[][]{{"abc","abc"},{"abc","abc"}};
整形:
//在堆里new一个一维整形对象
int[] a = new int[]{1,2,3,4,5};
//在堆里new一个二维整形对象
int[][] d = new int[][]{{1},{2}};