Java基础(十一) this static 关键字

目录

1、this 

2、static

 2.1、static 变量

 2.2、static 方法

 2.3、static 代码块

 2.4、 static修饰类


1、this 

this 是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针

this 的用法在 Java 中大体可以分为3种:

  • 调用本类中的属性,也就是类中的成员变量或者方法;
  • 普通的直接引用这种就不用讲了,this 相当于是指向当前对象本身
  • 调用本类中的其他构造方法,调用时要放在构造方法的首行

注意事项:this不能用于static方法!(this指向当前对象,static方法跟对象没有一毛钱的关系)

public class Student {
    String name;
    int id;
    
    public Student(String name,int id){
        this(name);//通过this调用其他构造方法,必须位于第一句!
        this.name = name;
        this.id = id;
    }
    
    public Student(String name){
        this.name = name;
    }
    
    public void setName(String name){
        this.name = name; //让类中的一个方法,访问该类的另一个方法或属性。
    }

2、static

   static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念。

   被static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访问。

   JVM对这些static的东西只加载一次和分配一次内存。

   static关键字的作用是:方便在没有创建对象的情况下来进行调用(方法/变量)

 2.1、static 变量

   static 修饰的变量我们称之为静态变量,没有用 static 修饰的变量称之为实例变量,他们两者的区别是:

   静态变量是随着类加载时被完成初始化的,它在内存中仅有一个,且 JVM 也只会为它分配一次内存,同时类所有的实例都共享静态变量,可以直接通过类名来访问它。

   但是实例变量则不同,它是伴随着实例的,每创建一个实例就会产生一个实例变量,它与该实例同生共死。所以我们一般在这两种情况下使用静态变量:对象之间共享数据、访问方便。

 2.2、static 方法

   static 修饰的方法我们称之为静态方法,我们通过类名对其进行直接调用。由于他在类加载的时候就存在了,它不依赖于任何实例,所以  static 方法必须实现,也就是说他不能是抽象方法 abstract。

  在静态方法中不能访问非静态成员方法和非静态成员变量,但是在非静态成员方法中是可以访问静态成员方法/变量的

 

 2.3、static 代码块

    被 static 修饰的代码块,我们称之为静态代码块,静态代码块会随着类的加载一块执行,而且他可以随意放,可以存在于该了的任何地方。

   很多时候会将一些只需要进行一次的初始化操作都放在static代码块中进行。

  1. 它是随着类的加载而执行,只执行一次,并优先于主函数。具体说,静态代码块是由类调用的。类调用时,先执行静态代码块,然后才执行主函数的。
  2. 静态代码块其实就是给类初始化的,而构造代码块是给对象初始化的
  3. 静态代码块中的变量是局部变量,与普通函数中的局部变量性质没有区别。
  4. 一个类中可以有多个静态代码块

2.4、static修饰类

普通类是不允许声明为静态的,只有内部类才可以。被static修饰的内部类可以直接作为一个普通类来使用,而不需实例一个外部类。详情阅读内部类

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值