一文搞懂static关键字, 新手必看的纯理论(JAVA)

ststic关键字可以修饰 属性, 方法, 代码块, 内部类  static属于类不属于对象, Static不能修饰局部变量和外部类

静态的东西共同特点, 先于对象存在, 在类加载时被优先加载, 会被所有该类的对象共享静态域

  1. static修饰属性: 会在创建对象加载类时一并载入方法区中的静态域里, 这个载入早于创建对象存在
    1. 两种访问方式 类名和对象: 对象名.属性名   类名.属性名(推荐)
    2. 静态属性(叫类变量), 非静态属性(叫实例变量,就是没static修饰的)
    3. 使用思维: 当变量被反复赋予相同值时用static让其成为共享属性/或某些值需要被共享时则用ststic修饰
    4. 注意: static只能修饰成员变量, 不能修饰局部变量
  2. static修饰方法//没staic修饰的方法叫实例方法
    1. 方法常见修饰符为public和static, 它们之间没有先后顺序是并列的, static public void main( );也是可以的.
    2. 什么时候不能用static:  当一个行为执行过程中需要对象参与,则不能用static,要定义为实例方法
    3. 作用: 使方法实现类名调用(正常是要创建对象才能调用方法)
    4. 静态方法不能访问非静态属性和非静态方法//原理: 因为静态属性先于对象被加载, 而静态方法可以不用依托对象调用. 如果在未创建对象之前-, 静态方法就调用它的非静态属性, 由于对象还未创建所以会调用失败(非静态属性只能被对象调用).
    5. 如何访问非静态方法和属性: 由于静态方法属于类,  而非静态方法属于类的实例, , 因此从静态方法访问非静态方法则要创建类的实例, 然后通过实例调用非静态方法和属性. //就是创建非静态方法的类的对象, 然后通过对象调用.
    6. 静态方法不能使用this和super,他们都属于对象范畴,而static属于类范畴
      • //原因同上, 静态属性先于对象被加载, 可能存在对象还未创建的情况
    7. static静态方法可通过类名和对象访问, 非静态方法只能用对象访问
    8. 在同一类中静态方法能被直接调用: 示例 在静态b方法调用静态c

static void b(){

  System.out.println("b方法被执行了");

  c(); } //直接写方法名既可以调用

                static void c(){

                        System.out.println("c方法被执行了");

                        }

  1. static修饰的main方法遇见内部类时// 内部类也必须定义成静态否则会报错
  1. static使用场景:   
    1. 当想用类名调用对象时用static
    2. 共享方法:当多个对象需要使用同一个方法时,可将方法设为静态。这样所有对象共享同个方法实例,便于管理和维护
    3. 避免创建过多的对象, 将原本需要实例化的对象设置为静态
    4. 静态方法只有在顶层类或者在静态内部类中定义,顶层类指的是public修饰的类和文件名相同的那个类,静态内部类是类中的静态类,所以静态方法只能在public类下或在类中的静态类里
    5. 简单理解: static调用与static相对应的东西
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值