zoukankan      html  css  js  c++  java
  • 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修饰的构造代码块;给类进行初始化,在加载的时候就执行,并且只执行一次。

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

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

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

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

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

  • 相关阅读:
    ==与===的区别判断
    javascript中new操作符
    javascript中toString和valueOf方法的区别
    数据库索引
    QVegas-一个升级版的TCP Vegas拥塞算法
    海量数据解决方式,知多少?
    最通俗易懂的网络应用层协议具体解释
    Android视图注入库:butterknife
    POJ 3210 : Coins
    ES6的新特性-让前后端差异越来越小
  • 原文地址:https://www.cnblogs.com/yihaifutai/p/6608007.html
Copyright © 2011-2022 走看看