Note5: 类和对象 static this关键字

来源:互联网 发布:网上认证网络参数设置 编辑:程序博客网 时间:2024/04/29 23:23

   晕乎乎的过了几天    都没怎么看书,  甚至还在怀疑自己要不要走专业   so  funny.

case1:  有没有this 的区别

<span style="font-size:14px;">public class B {int x=100,y=200;public void setX(int x){<u>x=x;</u>}public void setY(int y){<u>this.y=y;</u>}public int getSum(){int sum=x+y;return sum;}}</span>

<span style="font-size:14px;">public class A {public static void main(String args[]) {B b=new B();b.setX(-100);b.setY(-200);System.out.println(b.getSum());}}</span>
  结果是-100 。   我以为是100呢 - -     有this 就代表他指定setY(int y)这里面的值  而不是成员变量里面y的值、


case2: 有无static 的区别

<span style="font-size:14px;">public class B {int n;<u>static</u> int sum = 0;void setN(int n) {this.n = n;}int getSum() {for (int i = 1; i <= n; i++) {sum = sum + i;<u>System.out.print(" " + sum);</u>}return sum;}}</span>

<span style="font-size:14px;">public class A {public static void main(String args[]) {B b1 = new B();B b2 = new B();b1.setN(3);b2.setN(5);int s1 = b1.getSum();int s2 = b2.getSum();System.out.println(s1 + s2);}}</span>

在没有运行之前 我觉得结果是21  ,运行之后是27   完全想不到怎么来的  调试之后还是不知道  最后在sum=sum+i;那加了个输出以便观察结果。  发现第二次调用getSum的时候 ,sum的值并没有重置为0,而是接着b1里面sum的值6 。 所以结果就是6+21 =27.     测试了去掉static  结果和我最开始想的一样 21、

0 0