Java学习day9--Java中的构造器、static修饰符、this关键字用法

  1. 构造器

构造器|构造方法|构造函数 :是一个特殊的方法;

作用 : 为对象初始化信息(不是用来创建对象的)-->为对象的属性赋值

调用 : 当使用new关键字创建个对象的时候,会被使用。

语法: 修饰符 类名(参数列表){
     为属性的赋值语句;
       }
class Cat{
    public String name;
    public String type;
    public String color;
    //构造器重载
    public Cat(){
        System.out.println("空构造");
    }
    public Cat(String name, String type) {
        this.name = name;
        this.type = type;
        System.out.println("2个参数带参构造");
    }

    public Cat(String name, String type, String color) {
        this(name,type);//调用带参构造,必须放在首行
        this.color = color;
        System.out.println("3个参数带参构造");
    }

注意 :

构造器也能构成重载,根据需求进行的定义

没有显示定义构造器,编译器会默认提供一个空构造

如果存在显示定义的构造器,编译器不会提供任何构造器

定义的实体类如果定义了带参构造器,还要用到无参构造器需要补上

  1. static修饰符

static( 静态的)成员修饰符,只能修饰成员不能修饰局部的成员修饰符。

被static修饰的方法(或者变量),隶属于类,类只要加载,就会加载内存的静态区中,并且只有一份可以被多个对象共用,优先于对象(实例)存在内存中。

  • static修饰成员变量--> 静态变量|类变量

  • static修饰成员方法--> 静态方法|类方法

public class Class_Static {
    //成员:类中方法外
    public String i = "实例变量";//实例变量
    public  static String j = "静态变量";//修饰成员变量->静态变量|类变量

    public static void main(String[] args) {
        //在方法内->局部

        //测试静态与成员的使用方式
        //静态
        System.out.println(j);
        System.out.println(Class_Static.j);
        Class_Static cs = new Class_Static();
        cs.test();//test()方法属于成员方法需要创建使用这个方法
        testStatic();

    }
    public static void testStatic(){
        System.out.println(j);//被static修饰的变量j(静态变量)可以在静态方法中不需要对象直接使用
        System.out.println(new Class_Static().i);//实例变量i需要创建对象使用
    }
    //this在成员方法中,默认指代的是:当前调用该成员方法的对象
    public void test(){
        System.out.println("成员方法");
        System.out.println(this.i);
    }
}
  • static修饰块

静态变量与静态方法的使用方式 :

1)通过类名调用

类名.静态变量名

Class_Static.j;

类名.静态方法名(参数)

Class_Static.testStatic();

2)通过对象调用

对象.静态变量名

 cs.j

对象.静态方法名(参数)

cs.testStatic()

成员变量 :

被static修饰的成员变量 --> 静态变量|类变量

不被static修饰的成员变量 -->成员变量|实例变量

成员变量 :

被static修饰的成员方法 --> 静态方法|类方法

不被static修饰的成员方法 -->成员方法|实例方法

注意 :

成员是属于对象的,需要跟随对象进行使用

成员变量在对象的堆内存中,有对象,才有堆内存,就有成员变量,有多少对象,就有多少块对象的堆内存,就有多少分成员变量

静态的是属于类的,需要跟随类名使用,也可以跟随对象使用

静态变量在静态区,是独一份的,被所有对象共享的

加载初始顺序 : 先静态后成员

静态内容在类第一次加载到内存之后就会初始化

成员成员在执行到new对象的时候,才会开辟对象的堆内存,在会存在成员变量

总结 :

在成员方法(非静态)中,可以直接调用静态,可以直接调用非静态(实例)

在静态方法中,可以直接调用静态,需要通过对象调用成员

  1. this关键字
class Cat{
    public String name;
    public String type;
    public String color;

    public Cat(){
        System.out.println("空构造");
    }
    public Cat(String name, String type) {
        this.name = name;
        this.type = type;
        System.out.println("2个参数带参构造");
    }
    public Cat(String name, String type, String color) {
        this(name,type);//调用带参构造
        this.color = color;
        System.out.println("3个参数带参构造");
    }

tips:

  • 构造器也支持重载。

  • 调用带参构造,必须放在首行。

  • 如果出现局部变量和成员变量同名,就近原则,默认使用局部变量,使用this关键字指代成员变量。

  • 指代当前对象(构造器中指代当前new的对象|在成员方法中指代调用成员方法的对象)

  • 在构造器的首行通过this(参数)调用本类中的其他构造器

  • 区分同名的成员与局部变量问题

  • 如果存在同名问题,默认指代局部,因为就近原则

  • 如果想要指代成员,需要通过this.进行调用

  • 如果不存在同名问题,局部有就找局部

  • 成员有就找成员,默认省略this.

注意 : 多个构造器之间不能相互调用

this不能使用在static方法中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值