public class ClassMain {
public static void main(String args[]) {
/********第一段*******************/
ClassE a = new ClassE();
ClassE b = new ClassE(); a.i=1;
b.i=2;
b=a;
b.i=3; System.out.println(a.i); /********第二段*******************/
ClassE c = new ClassE();
ClassMain cm = new ClassMain();
c.i=1;
cm.revalue(c);
System.out.println(c.i); String s1 = new String();
String s2 = new String(); /********第三段*******************/
s1="a";
s2="b";
s1=s2;
s2="c";
System.out.println(s1); } public void revalue(ClassE c) {
ClassE d = new ClassE();
d.i=2;
c=d;
d.i=3;
}
}
class ClassE {
int i=0;
}代码是从另外一个贴子里拷的.
第一段: b=a;这句是把b跟a指向了同一个对象.
b.i=3;是改变了b指向的那个对象的属性(i)的值.也就是,没有新对象产生!
第三段: s1=s2;同第一段b=a;
问题在这里:s2="c";这句是相当于重新new了一个对象? 那么s2之前指向的字符串"b"这时候如果没有s1指向的话(这时候s1是指向"b"),这个对象就一直在内存里面?? JAVA的回收机制是在内存不够用的时候才做的,相当于这段内存是随着程序运行一直存在的?另外 第二段中revalue(ClassE c) 方法传的是对象引用的拷贝还是对象所占内存的拷贝(很多我喜欢说JAVA的方法采用的是值传递).个人觉得方法传的是对象 占用内存被拷贝一次.所以方法才不改变传入对象的值!第一次发贴,刚学JAVA没多久.希望指点!
public static void main(String args[]) {
/********第一段*******************/
ClassE a = new ClassE();
ClassE b = new ClassE(); a.i=1;
b.i=2;
b=a;
b.i=3; System.out.println(a.i); /********第二段*******************/
ClassE c = new ClassE();
ClassMain cm = new ClassMain();
c.i=1;
cm.revalue(c);
System.out.println(c.i); String s1 = new String();
String s2 = new String(); /********第三段*******************/
s1="a";
s2="b";
s1=s2;
s2="c";
System.out.println(s1); } public void revalue(ClassE c) {
ClassE d = new ClassE();
d.i=2;
c=d;
d.i=3;
}
}
class ClassE {
int i=0;
}代码是从另外一个贴子里拷的.
第一段: b=a;这句是把b跟a指向了同一个对象.
b.i=3;是改变了b指向的那个对象的属性(i)的值.也就是,没有新对象产生!
第三段: s1=s2;同第一段b=a;
问题在这里:s2="c";这句是相当于重新new了一个对象? 那么s2之前指向的字符串"b"这时候如果没有s1指向的话(这时候s1是指向"b"),这个对象就一直在内存里面?? JAVA的回收机制是在内存不够用的时候才做的,相当于这段内存是随着程序运行一直存在的?另外 第二段中revalue(ClassE c) 方法传的是对象引用的拷贝还是对象所占内存的拷贝(很多我喜欢说JAVA的方法采用的是值传递).个人觉得方法传的是对象 占用内存被拷贝一次.所以方法才不改变传入对象的值!第一次发贴,刚学JAVA没多久.希望指点!
s2="b";
s1=s2; //这时s1是"b"
s2="c"; //即使s2已经指向另一个对象了,但s1依然指向"b"垃圾回收这问题 我只知道他不一定什么时候运行 要运行的话 清理的也是那些没有被引用的对象 "b"有他的引用 就是s1
ClassE b = new ClassE(); a.xxxx或b.xxxx 这些操作只是更改上面new出那两块内存区域里的属性所以不存在有没有新对象产生程序改的只是引用
但是如果把s1也指向另外一个对象呢? s1="xxx";
之后呢? "b"这段内存呢? 谁管?
public static void main(String[] agrs){
Frame f = new Frame("My First window");
f.setSize(200, 300);
f.setLocation(300, 300);
f.setResizable(true);
f.setBackground(Color.orange);
f.setVisible(true);
}
}
java.awt.Frame
setSize()
setVisible()
setResizable() 怎么都找不到啊 你们的文档找的到么??java自动设置环境变量
更多信息请参考java论坛