zoukankan      html  css  js  c++  java
  • java基础2

    1:静态方法为什么不能访问类的实例变量

      因为他俩跟本放的不是一个地方
      静态方法存储在栈中,而其他的非静态方法存储在堆中
        基本如图
        栈 | 堆
        静态 | 非静态
      根本不属于一个系统....

    2:按引用传递

    import java.awt.Dimension;
    public class ReferenceTest {
        public static void main(String[] args) {
            
            Dimension d=new Dimension(5,10);
            ReferenceTest rt=new ReferenceTest();
            System.out.println("Before modify d.height="+d.height);
            rt.modify(d);
            System.out.println("After modify d.height="+d.height);
        }
        void modify(Dimension dim){
            dim.height=dim.height+1;
            System.out.println("dim.height="+dim.height);
        }
    }

    输出:

    Before modify d.height=10
    dim.height=11
    After modify d.height=11

    引用变量d和dim都指向同一个对象。将对象变量传递到方法时,必须记住传递的是对象引用,而不是实际对象本身。根本没有传递实际的引用变量,而是该引用变量的一个副本。变量副本意味着获得该变量内的位副本,因此,当传递引用变量时,是在传递表示如何获取特定对象的位副本。换句话说,调用方法和被调用方法现在都具有该引用完全相同的副本,因此二者都将引用堆上完全相同的对象(这里不是副本)。

    3:按值传递。

      对于运行在单个JVM内的所有变量,Java实际上是按值传递的。按值传递意味着按变量的值传递,也就是传递该变量的一个副本。

     、    按值传递和按引用传递的区别。

      如果传递的是对象引用变量,则是在传递一个表示对象引用的位副本,然后,被调用方法得到自己的引用变量副本并处理它,但是,因为两个相同的引用变量引用完全相同的对象,所以,如果被调用方法修改该对象(例如,通过调用其setter方法),则调用方法将看到最初变量引用的对象也会被修改。

        按值传递的要点:被调用方法不能修改调用方法的变量,尽管对对象引用变量而言,被调用方法能够修改该变量引用的对象。

      对象引用:意味着被调用方法不能重新对调用方法原来的引用变量赋值,也就不能引用不同的对象或null.

        

    void bar(){
        Foo f=new Foo();
       doStuff(f);       
    }
    void doStuff(Foo g){
       g.setName("BOO");
       g=new Foo();
    }    

    会重新对g赋值而不会重新对f赋值。bar()结尾处,两个Foo对象都创建。一个被局部变量f引用,一个被局部变量(变元)g引用。因为doStuff()有该引用变量的一个副本,所以它有方法获得原来的Foo对象,比如调用setName(),但是,doStuff()无法获得f引用变量。因此,doStuff()能修改对象f内引用的值,但不能修改f的实际内容(位模式)。换句话说,doStuff()可以修改f引用的对象的状态,但不能使f引用不同的对象。

  • 相关阅读:
    (8)设计模式-桥接模式
    (6)设计模式-原型模式
    (5)设计模式-原型模式
    hdu4714树形DP+贪心(乱搞)
    hdu1059(背包dp二进制优化)
    uva12558 Egyptian Fractions (HARD version)(迭代深搜)
    hdu4135 Co-prime【容斥原理】
    BZOJ 1509[NOI 2003]逃学的小孩 树形dp
    bzoj1812 [Ioi2005]riv
    bzoj 2243 [SDOI2011]染色(树链剖分+线段树合并)
  • 原文地址:https://www.cnblogs.com/bulrush/p/5975263.html
Copyright © 2011-2022 走看看