一、内存分析

内存分析:指数据的存储,理解程序执行过程,运行期的行为,不是编译期。

分类

栈: 方法栈存储方法的局部变量|形参后进先出

堆: 对象堆存储new的对象散列存储

方法区: 特殊的堆,类方法区,存储类的信息,存储不变的信息共享的信息,散列存储

 

 

内存示例:

 

publicstaticvoid main(String[] args) {     

        //创建对象

        Pig pig =new Pig();

        pig.color="黑色";

        pig.weight=1000;

        pig.gongDi(); //带了自己的数据

       

        //一个人

        Person p =new Person();

        p.name ="王志勇";

        p.age =18;

        p.gender =true; //true-->男

        p.height =1.92;    

        p.laugh();

       

        //一个人

        Person p2 =new Person();

        p2.name ="老裴";

        p2.laugh();

    }

 

 

引用

引用名在左边,对象在右边,通过引用访问、改变对象。

“引用指向了谁?””对象被谁所指向?”

1、  JAVA一切皆为值传递 (地址的副本)

2、  一个对象可以有多个引用所指向,当其中一个引用对该对象发生了变化,其他的引用也可见。

3、  一个引用在同一个时刻只能指向一个对象

二、构造器

构造器也成为构造函数,特殊的方法,用于初始化对象信息,为new服务(其他地方不能调用)。创建对象类名引用 =new 构造器;

1、格式

修饰符类名([形参列表]){

 }

注意点

 1)、没有返回值类型|void,可以存在return ,跳出方法

 2)、作用: 初始化对象信息的

 3)、new 创建时调用构造器,与new一起

2、空构造

没有参数的构造器,如果没有编写任何构造器,javac自动加入空构造

一旦加入构造器,javac不再加入,建议,手动加入空构造

3、构造器重载

存在多个构造器,构造器之间存在重载,注意: 就近原则,如果方法的局部变量|形参与属性同名,使用 this.区分

 

 

 

三、this

1、this:代表调用者本身,在成员方法、构造器中形参隐式传递this,避免发生就近最优原则。

2、this([实参])构造器首行,调用其他构造器。

This的用法:1、哪个对象在调用This所在的函数,那么This就等于哪个对象

2、当定义类功能时,该函数内部需要调用该函数的对象时,用This代表这个对象。

3、但凡本类功能内部使用了本类对象,都用this表示。

4、this能调用构造函数,而且只能放在第一行。

 

 

四、static

 

是一个修饰符,只能修饰成员(成员变量。成员函数)

静态的,凡是静态的就是跟对象无关,属于类的;都是对象们共享。修饰以下

1、  属性–>静态变量类变量

2、  方法 -->静态方法类方法

3、  静态块 :在使用类之前加载,仅加载一次

4、 当成员被静态变量修饰后,就多了一中调用方法,除了可以被对象调用外,还可以直接被类名调用,方法为 类名.静态成员

5、 随着类的加载而加载

6、 优先与对象的存在

7、 被所有对象共享

需要注意 静态方法只能访问静态成员。非静态方法可以访问静态也可以访问非静态

静态方法中不可以定义this,super等。

 

类变量随着类的加载而存在于方法区中,随着类的消失而消失

实例变量随着对象的建立,存在与堆中。随着对象的消失而消失

 

主函数是静态的。

静态的方法|块: 不能直接访问成员信息

publicclassTestStatic {

    public static inta; //静态变量 类变量

    public int b; //成员变量 实例变量

    publicvoid t(){

       System.out.println("成员方法");

    }

    //静态方法

    publicstaticvoid test(){

       System.out.println("静态方法。。。。。");

       /* 静态的不能直接访问非静态信息

       b =100;

       t();

       */

    }

   

    //静态块: 在使用类之前加载,仅加载一次

    static{

       a =100;

       System.out.println("静态块,加载类信息,初始化类的信息");

    }

   

    publicstaticvoid main(String[] args) {

       inta=200;

       System.out.println(TestStatic.a);

       TestStatic.a =100; //当前类中类.可以省略

       /*TestStatic.*/test(); //调用静态方法

      

      

    }

}

 

posted on 2016-03-22 22:12  鱼鱼疯  阅读(185)  评论(0编辑  收藏  举报