Java关键字——Static(超详细讲解)

Static(静态):

  1. 所有的static关键字修饰的都是类相关的,类级别的。

  2. 所有static修饰的,都是采用“类名.”的方式访问。

  3. static修饰的变量:静态变量,修饰的方法是静态方法。

Java中的一共有三大变量的存储位置:

  • 局部变量:存储在栈stack中。

  • 实例变量(对象级别):存储在堆内存中。

  • 静态变量(类级别):存储在方法区中。

变量的分类:

  • 变量根据声明的位置进行划分:

    • 在方法体中声明的变量叫做:局部变量

    • 在方法体外声明的变量叫做:成员变量。

  • 成员变量又可以分为:实例变量、静态变量。。

    • 如果一个属性对每个对象来说都不一样,则需要定义为实例变量

    • 否则就是静态变量(一个属性都是大家所共有的)

class Static{
>     //以下实例的都是对象相关的,访问时采用“引用.”的方式访问,需要先new对象。
>     //实例相关的,必须先有对象,才能访问,可能会出现空指针异常。
>     //成员变量中的实例变量;
>     int i;
>     //实例方法
>     public  void t2(){
>     }
>     //以下静态的都是类相关的,访问时采用“类名.”的方式访问,不需要new对象。
>     //不需要对象的参与即可访问,不会出现空指针异常。
>     //成员变量中的静态变量;
>     static int z;
>     //静态方法
>     public static void test(){
>     }
> }
> ```
public class text12{
•    public static void main(String[] args){
•       Role R = new Role("刘备");
•       Role R1 = new Role("关羽");
•       System.out.println(R.getInfo());
•       System.out.println(R1.getInfo());
•    }
}
class Role{
•    private String name;
•    private static String country="蜀国"; //静态变量
•    public Role (String name){
•       this.name = name;
•    }
•    public void setName(String name){
•       this.name = name;
•    }
•    public String getName(){
•       return name;
•    }
​
•    /*这一段在使用static关键字以后就可以省略,因为country的取值是他们公有的,所以只需要在该属性前声明static即可
•    public void setCountry(String country){
•       this.country = country;
•    }
•    public String getCountry(){
•       return country;
•    }*/
​
•    public String getInfo(){
•       return "name="+name+"country="+country;
•    }
​
}

static——静态代码块

1、静态代码块的语法:static{

Java语句;}

2、静态代码块在类加载时执行,并且只执行一次,

3、特点:静态代码块是在main()方法执行之前执行的。

public class test02 {
    static {
        System.out.println("A");
    }
    public static void main(String[] args){
        System.out.println("最后执行的!!!");
    }
    static{
        System.out.println("B");
    }
}
/*  A
    B
    最后执行的!!!
*/
public class test{
    //静态变量
    static exam e = new exam();//注意这里!!!!!!
    public static void main(String args[])  {
            test.e.exam();          //注意这里!!!!!!
    }
}
class exam{
    public void exam(){
        System.out.println("考试了");
    }
}

分析:i变量在main方法中能不能直接访问???

public class test02 {
    int i = 250;    
     static int k = 190+60;
    public static void main(String[] args){
        //java: 无法从静态上下文中引用非静态 变量 i
        System.out.println(i);
        
        //应该改为test02 t = new test02();
                //System.out.println(t.i);//250
        
        System.out.println(test02.k);//250
        //注意:这个test02.可以省略。。。。
    }
}
​

答案:
//不能。。。。。。。。。

总结

1.使用static关键字修饰一个属性,声明为static的变量实质上就是全局变量(静态变量)

2.使用static关键字修饰一个方法,通常在一个类中定义一个方法为static

3.使用static关键字修饰一个类(通常是在内部类中) 

以上就是Java中的静态变量static的应用了,欢迎大佬指正错误。

  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-今非昔比°

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值