Java面对对象15:static关键字详解

一、static关键字

  • static(静态) : 与类一起加载
  • 加了static修饰符的方法和属性叫类方法(静态方法)、类属性(静态属性)
  • 未加static修饰符的方法和属性叫对象方法(非静态方法、实例方法)、对象属性(非静态属性、实例属性)
  • static(类)属性 和 非static(对象、实例)属性的区别
    • 份数不同—— static属性:1份;非static属性:1个对象1份
    • 储存位置不同——static属性:方法区(元空间);非static属性:堆内存中
    • 内存分配空间的时间不同——static属性:第一次加载类的时候;非static属性:创建对象的时候
    • 生命周期不同——static属性:和类的生命周期相同;非static属性:和所属对象相同
    • 调用方法不同——static属性:通过类名调用(对象名调用<不推荐>);非static属性:通过对象名调用

示例:

//static : (静态)与类一起加载
public class Student {
    //属性-变量
    private static int age;//年龄(静态变量-类变量)
    private double score;//成绩(非静态变量-对象变量)
    //方法
    public static void go() {
    }

    public void run() {
    }
    
	// main()方法
    public static void main(String[] args) {
        Student s = new Student();
        //属性-变量
        System.out.println(s.age);//对象 调用 类变量
        System.out.println(Student.age);//类 调用 类变量
        System.out.println(s.score);//对象 调用 对象变量
        //System.out.println(Student.score);//报错,类 不能直接调用 对象变量,调用对象变量需要new一个对象

        //方法
        s.run();//对象 调用 对象方法
        s.go();//对象 调用 类法法
        //Student.run();//报错,类 不能直接加载 对象方法,调用对象方法需要new一个对象
        Student.go();//类 调用 类方法

        /*
        小结:
        1.静态是跟着类一直存在的,非静态需要创建对象(new)后才能用
        2.非静态方法 可以嵌套 非静态方法和静态方法,因为非静态方法需要new之后才加载的
        3.静态方法 可以嵌套 静态方法,但不能嵌套非静态方法,
          因为静态方法是跟类一起加载的,而非静态方法是需要new之后才有的
        4.未加载方法里面可以放已加载方法和未加载方法
          已加载方法里面可以放已加载方法但不能放未加载方法
         */
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值