效果是一样子的,只不过,后者涉及到变量类型的深入知识!
其实不管是String int boolean也都是一个类,只不过这个类,被系统封装过
我们可以直接拿来赋值用,不需要进行实例化!
int i = 0;//直接赋值使用
int i = new int();//在内存中开僻一个空间用来存放int类型的值,但是值为空!
int i = new int(0);//在内存中开僻一个空间,并赋值0
假定有一个我们自定好已存在的类User,我们需要用这个类的时候需要按下面方式初始:
User user = new User();//实例化的过程
直接写user = "123";//不new一下就会报错!
把int也看做一个类,只是它是由系统定义好的,不需要一定用new来实例(用new也不会错)
所以就有了int i = 0;这样子的写法
[Quote=引用 20 楼 wuyq11 的回复:]
String str = "a"; 这个只是一个引用,内存中如果有“a"的话,str就指向它
String str = new String("a");是根据"a"这个String对象再次构造一个String对象,将新构造出来的String对象的引用赋给str
int i = new int();完全等效于int i=0;,因为int的默认构造函数就是赋默认值0
而且值类型的默认构造函数是可以隐式调用
int a = 0和 int b= new int() 效果一样
[Quote=引用 9 楼 chaozi_249 的回复:]
int a = 0和 int b= new int() 有什区别?
a 是初始化并且赋值,也就是开辟内存空间并且赋值 b 是只初始化并没有开辟空间
string str1 = "a"和string str2 = new string('a',1)有什么区别
str1 直接初始化并且赋值 a ,str2 先实例化后赋值。
[/Quote]
误导群众