黑马程序员——java基础知识

来源:互联网 发布:淘宝客户资料购买平台 编辑:程序博客网 时间:2024/06/06 16:31
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------

1.1. 类和对象的关系

类:就是现实生活正现实事物的描述

对象:就是这类事物,试试在在存在的个体

对象的引用存放在栈内存中,具体的对象存放在j堆内存中,用new建立对象实体。

1.2. 成员变量和局部变量

       成员变量:作用于整个类中,在堆内存中,因为对象存在内存中

       局部变量:作用于函数或者语句中,在栈内存中

1.3. 匿名对象的应用

       例:new Person().name = “zhangsan”;(1)

       new Person().age = 20;(2)

       讲解:语句1执行过后,变成垃圾,在执行语句2的时候,内存重新开辟了内存,所以是两个对象,

       应用:当一个对象的方法只调用一次,可以使用匿名对象,当对象调用多次,就必须给对象起一个名字。

              可以将匿名对象当做参数进行传递。

1.4. 构造函数和构造代码块

       构造函数:

1.      对象建立就会调用与之对用的构造函数

2.      用于对象的初始化

3.      当类中没有定义构造函数,系统会默认给类加载无参的构造函数

4.      当类中定义了构造函数后,默认的构造函数就没有了

构造函数与一般函数的区别:

        构造函数:在对象一建立就运行,给对象初始化,只运行一次

       普通函数:给对象增加其他的功能,可以被反复调用

什么时候定义构造函数:

       当分析事物时,该事物具备一些特性或者行为,那么这些内容定义在构造函数中。

构造代码块和构造函数的区别:

构造函数:给特定的对象进行初始化

       构造代码块:给所有类初始化,优先于构造函数执行统一的初始化

       例:

              p

</pre><pre name="code" class="html"><pre name="code" class="java">public classPerson {        privateString name;        private int age;       //构造代码块,所有孩子出生就会哭        {            cry();        }        publicPerson(){}//孩子出生后,为其取名字        publicPerson(String name,intage){            this.name =name;            this.age =age;        }        public voidcry(){           System.out.println("cry");        }}


</pre><p align="left"></p><h4>1.5. This关键字</h4><p>       This:</p><p><span style="white-space:pre"></span>代表本类的对象</p><p><span style="white-space:pre"></span>代表他所属函数所属对象的引用</p><p>          <span style="white-space:pre"></span> 哪个对象调用this所在的函数,那么this就代表哪个对象</p><p>       应用:</p><p>              当定义类功能时,该函数内部功能要调用该函数的对象时,这是用this来表示这个对象。</p><p>       例1:构造函数中对象的初始化</p><p align="left"><strong><span style="color:#7F0055;"></span></strong></p><pre name="code" class="java">public classPerson {        privateString name;        private int age;              publicPerson(String name,intage){            this.name =name;            this.age =age;        }    }

       例2:构造函数相互调用,this关键字只能出现在第一行

public classPerson {        privateString name;        private int age;publicPerson(){}              publicPerson(String name,intage){           this();//此时调用的是无参数的构造函数            this.name =name;            this.age =age;        }    }

1.6. Static关键字

       Static是一个修饰符,用于修饰成员变量和成员方法。当成员被修饰成静态后,就多了一个调用方法,除了一个被对象调用以外,还可以被类名直接调用。

       静态的特点:

              随着类的加载个加载,随着类的消失而消失,生命周期最长

              被所有对象共享,静态先存在,对象后存在

              优先于对象存在

              可以直接被类名调用

       实例变量和类变量(static修饰的变量)的区别:

              类变量:随着类的加载而加载,存放在方法区中,生命期与类一样

              实例变量:随着对象的创建而创建,存放在堆内存中,随着对象消失而消失

       使用static注意:

              静态方法只能访问静态成员

              非静态方法可以访问静态成员

              静态方法中,不可以定义this、super关键字,因为静态优先于对象存在

       什么时候使用静态:

              当对象之间出现共享数据时,使用静态

       静态的应用:

              将程序中共性的功能抽取出来,一边复用,为了防止该类被其他类创建对象,可以将构造方法私有化

       静态代码块:

              格式:

<span style="white-space:pre"></span>static{  <span style="white-space:pre"></span>  静态代码块中的执行语句<span style="white-space:pre"></span>}

              特点:

随着类的加载(调用了该类的方法)而执行,切只执行一次,用于给类进行初始化,相对少用,优先于主函数

        特殊的静态方法:main函数

              格式:

public static void main(String []args)

               Public :代表该函数的访问权限最大

Static :随着类的加载已经存在

Void:主函数没有具体的返回值

Main:不是关键字,但它是一个特使的单词,可以被jvm识别

String[]args:是一个参数数组,数组的类型是字符串

 

1.7. 对象的初始化过程

       1.因为new用了.class文件,所以先找到class文件并加载进内存

       2.执行该类中的static代码块,如果有给该类进行初始化

       3.在堆内存中分配空间,分配内存地址

       4.在堆内存中建立对象的特有属性,并进行默认初始化

       5.对属性进行初始化

       6.对对象进行构造代码块初始化

       7.对对象进行构造函数初始化

       8.将内存地址复制给占内存的变量

1.8.final关键字

       1.可以修饰类、变量、函数

       2.被final修饰的类,不能被继承,

       3.被final修饰的方法,不能被复写

       4.被final修饰的变量,是常量,只能被赋值一次

       5.内部类定义在类中的局部位置时,只能访问该局部被final修饰的局部变量

---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------详细请查看:www.itheima.com
0 0
原创粉丝点击