java中注意事项

来源:互联网 发布:淘宝配货单打印 编辑:程序博客网 时间:2024/06/14 16:35

本文所写的是我学习《java编程思想第4版》一书时觉得需要写下些备注的地方,特此说明


1.static关键字:

在使用static关键字描述一个类的属性时

class StaticTest{    static int i=47;}
需要注意的是:此时无论你创建几个StaticTest对象,StaticTest.i也只有一份储存空间,即这些对象共享此属性。对象A对i做出的操作,在对象B中一样是生效的。


2.别名现象

1)类级别的(即如果类A=类B,对类A进行的操作,也会在类B中生效)

这是因为在赋值时,我们并没有为A重新创建新的对象,而是赋予了类A对类B的引用。

例:

class Ta{int level;}public class Test1 {public static void main(String[] args) {Ta t1=new Ta();Ta t2=new Ta();t1.level=1;t2.level=2;System.out.println(t1.level+"  "+t2.level);//输出结果为1  2t1=t2;t1.level=3;System.out.println(t1.level+"  "+t2.level); //输出结果为3  3}}
上面的代码中当我们将t2赋值给t1之后,我们改变了t1的属性,同时t2的属性也被改变了。其实此时t1、t2同时指向的是t2的对象,而t1则被“垃圾回收器”自动清理了

2)方法中(将对象传入方法之中,在方法中对传入对象的操作,会影响到原来的对象)

这是因为我们传递给方法的并不是对象,而是对对象的引用

例:

class Letter {char c;}public class PassObject {static void f(Letter y) {y.c = 'z';}public static void main(String[] args) {Letter x = new Letter();x.c = 'a';System.out.println(x.c);//输出结果为af(x);System.out.println(x.c);//输出结果为z}}
上面的代码中我们在方法f中对传入的对象y进行了属性修改,但原本的对象x也被改变了。


3.


0 0
原创粉丝点击