java 在循环内new对象跟外面new 有什么区别

如题所述

有区别的 假设现在你要建三个学生 放入list集合
这时你在for循环外 new 了一个对象

循环内 为该对象赋值 并存入list 存入的是对象的引用 循环3次后 你会发现 list中三个对象的结果都是一样的 代码如下 :
public class Test {
public static void main(String[] args) {
List<Student> list =new ArrayList<Student>();
Student student = new Student();
for (int i = 0; i < 3; i++) {
student.age=i;
list.add(student);
}
for (Student stu : list) {
System.out.println(stu.age);//理论上结果应该是0,1,2 但实际上是 2 2 2
}
}
}

class Student{
public int age;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-06-15
有区别。
new 是对像的实例化,即初始化。
比如,
1.如果你在循环外new,那么你循环内对此对象的操作.
StringBuilder a = new StringBuilder();
for (int i=0;i<3;i++){
a.append(i);
}
System.out.println(a.toString());
输出是012。
2.如果你在循环内new,那么你是每次循环对象进行了1次实例化。
StringBuilder a;
for (int i=0;i<3;i++){
a = new StringBuilder();
a.append(i);
}
System.out.println(a.toString());
输出是2。本回答被提问者和网友采纳
第2个回答  2014-04-04
首先,在循环内部new的每次执行的都是一个新的对象,而外面的不会变化,依然是同一个对象;
其次,循环内部的对象作用有效范围就是在循环体内部,不能超出去,循环外面的就不一样,范围更大一些。
第3个回答  2014-04-04
循环内的话就是每循环一次创建一次,循环多少次就创建多少个对象;你在外面的话就创建一次
第4个回答  2014-04-04
在循环内只执行一次,而且循环内是可以直接调用的,就是作用域更广,循环内每次循环都会创建对象,占用内存消耗资源。而且作用域仅仅字循环体内

java在循环内new对象跟外面new有什么区别?跟多线程安全有没有关系?
有区别的哟。你在循环外NEW的对象。在循环内是改变了他的值。但是内存地址没有改变。如果你是在循环内创建对象。那么会出现很多的内存引用。当然他跟多线程扯不上什么关系

java 在循环内new对象跟外面new 有什么区别
有区别的 假设现在你要建三个学生 放入list集合 这时你在for循环外 new 了一个对象 循环内 为该对象赋值 并存入list 存入的是对象的引用 循环3次后 你会发现 list中三个对象的结果都是一样的 代码如下 :public class Test { public static void main(String[] args) { Lis...

...变量定义在for循环里面和外面的时候结果不一样,为什么???_百度知 ...
你要知道每次new一个对象就是一个新对象,在循环里new,就是每一次循环都创建一个全新的对象。而在循环外只new了一次,你每次循环只是改变外面new的对象属性值而已。list集合可以存放多个相同的值

JAVA中加new和不加new的区别
在java中,new用来开辟堆内存,又叫初始化,一般情况下,对象创建好后,都需要用new进行实例化;不用new通常在单例模式中可见,对象在类里面创建,构造函数用private修饰,外面不能创建对象,只能调用内部方法静态方法,即对象的初始化在创建对象时已经完成一般来说,不使用new的情况都属于一些特定的情况,...

Java创建一个类的对象对象,在方法里new和在类里new区别
区别在于 1。在方法里new在调用该方法时才会new出新对象,对内存来说是有好处的,er在类里就new的话,实例化类的时候, Face就会被创建,如果一直不用的话,占用内存空间。2.按照标准的bean的写法,一般在方法里进行类的属性的赋值。3.应该都不会报错的吧。

Java建立一个类的物件物件,在方法里new和在类里new区别
Java建立一个类的物件物件,在方法里new和在类里new区别 区别在于 1。在方法里new在呼叫该方法时才会new出新物件,对记忆体来说是有好处的,er在类里就new的话,例项化类的时候, Face就会被建立,如果一直不用的话,占用记忆体空间。 2.按照标准的bean的写法,一般在方法里进行类的属性的...

java for循环内new对象问题
基本没有什么区别 都是 for循环入口处 实例化 A 唯一的不同就是 第一种情况是先定义了 对象 A 然后再 实例化 第二种情况是 定义和 实例化 一起完成的

java int数组加new和不加new有什么区别?
你说的这两种没有任何区别,完全等价,不同的写法而已。都是直接初始化为这些值。如果下面这种,可能有区别:int[] ids = new int[5];for (int i = 0; i <5; i++) { ids[i] = i+1;}这种是开辟数组后,初始化为0,然后在逐次赋值。

在java中,老师说new出一个对象,那么new是什么意思,引用类型所占的内存...
class Student{int age;String name;}public class Test01 {public static void main(String[] args) {Student s = new Student();}}其实吧new对象就是申请内存空间在内存中的堆区中分配空间 例如 上面第7行在内存中其实是栈区有个引用(其实是存放该对象实例的一个地址的内存单元)而这个对象实例...

java里的new到底是什么意思???
java里的new的英文意思就是"新的"的意思。在JAVA里就是创建一个新的实例,或者说一个新的对象,一个普通类在没有实例化之前,就是new之前,它的属性,方法等等在内存中都是不存在的。只有使用new了以后,这个类的一些东西在内存中才会真的存在,也就是说只有new了之后,这个类才能用。举例说明:Java中...

相似回答