javase学习第七天(构造方法)

构造方法知识

JavaBean特点

1、private 修饰成员属性;

2、public 修饰成员方法;

3、有get、set方法对成员变量进行赋值/取值 ;

4、空构造器

构造方法

定义:位于类中,成员方法外,和成员变量、成员方法是平级关系,

特点:是和类同名,没有返回值;

主要作用:是对新创建的对象进行属性初始化,而不是创建对象;

构造方法可进行重载,即可创建多个具有不同形参的构造方法;

根据形参的个数初始化不同的实例属性。

注意:构造方法必须和类同名; 构造方法没有返回值,也不能使用void修饰,一旦加了返回值或者void,那么这个方法就是一个成员方法,不是构造方法;

使用

构造方法是使用new关键字的时候调用的,调用之后的返回就是一个实例的引用。

在创建一个类时,如不自定义给出构造方法,系统会自动默认有一个无参的构造方法,如果显示定义了有参的构造方法,则不再默认给出无参的构造方法要使用时,必须自己显示定义;

程序使用new关键字创建一个类的实例化对象的时候,根据传递参数的情况调用相应的构造方法;

this关键字

this关键字用来指向当前对象,根据this出现位置不同,有以下 两种情况:

1、在构造方法中引用该构造方法正在初始化的对象;

2、在方法中引用正在使用该方法的对象;

使用场景:让类中的一个方法去访问类中另一个实例方法或变量。

static

有static修饰的成员变量/成员方法,为类变量/类方法,没有则是实例变量/实例方法;

类变量、类方法可用类名或对象名两种方式来访问;

实例变量、实例方法必须用实例对象进行访问;

static关键字的特点

1、随着类的价值而加载,优于对象的创建(类的加载优于对象的创建);

2、被类的所有实例对象共享(存在于方法区中的静态区,如果是一个类变量的话,任何一个对象对该变量进行修改,都会在其他对象中得到体现),是否使用this的标准;

3、可通过类名访问(类名.静态变量名、类名.静态方法名),也可使用对象名来访问。

使用情景

当一个变量或方法属于一个类,而不是属于这个类的实例对象时,可使用static来修饰,就可使用类名对变量、方法进行访问这个static变量、方法。

注意事项:

静态方法(类方法)中不能使用this关键字,this关键字代表的的是当前对象的引用,而静态方式是随着类的加载而加载的,当类进行加载时,此时实例对象还没有被创建出来,此时是无法使用this关键字的。

静态方法只能访问静态成员变量和静态成员方法;

static内存图

static修饰的变量或者方法存在方法区中的静态区;

                                                                                                   静态变量和实例变量的区别:

 

所属

内存位置

出现时间

调用

静态变量

方法区的静态区

随类加载而加载

类名调用,对象名调用

实例变量

对象

堆内存

随对象创建而存在

对象名调用

 
局部变量实例变量的区别: 

 

声明位置

内存位置

生命周期

初始值

局部变量

方法内,形参上

栈内存

随方法调用而存在

必须先定义,赋值再使用

实例变量

类内,方法外

堆内存

随对象创建而存在

有默认初始值

 

代码块

java中使用{}括起来的代码被称为代码块,根据其位置不同可分为:

局部代码块、构造代码块、静态代码块。

局部代码块在方法中出现,直接用{}括起来的部分,就是局部代码块;

作用:限定变量的生命周期,及早释放,提高内存利用率;

构造代码块:在类中,方法外出现,多个构造方法中相同的代码放在一起,每次调用构造时都执行,并且在构造方法前执行;多个构造代码块,它们按顺序执行; 可把构造代码块看成是构造方法的补充,它是一段固定的代码,不接受任何参数;

静态代码块:加了static修饰的构造代码块;给类进行初始化,在加载的时候就执行,并且只执行一次。

执行顺序:静态代码块-->构造代码块-->构造方法

作用:静态代码块是对类进行初始化的(主要是对类变量/静态变量进行初始化);

构造代码块和构造方法是对实例对象进行初始化的;

局部代码块主要是规定变量的作用范围,提高内存利用率,节省空间。

对象初始化过程包括两个方面:构造代码块的执行+构造方法的执行。

posted on 2017-03-23 23:28  艺海浮台  阅读(164)  评论(0编辑  收藏  举报