首页 > 编程语言 > 详细

java之static关键字

时间:2020-09-10 14:49:38      阅读:93      评论:0      收藏:0      [点我收藏+]

static:

  1.翻译为“静态”

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

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

  4.static修饰的变量: 静态变量

  5.static修饰的方法: 静态方法

变量的分类:

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

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

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

  成员变量又可分为:

    实例变量

    静态变量

技术分享图片

 

 

 方法和变量是静态和非静态内存图是什么样子,看一下两幅图。

当声明为静态变量的时候:
public
class Chinese { /** * 身份证号,唯一标识*/ public String idCard; /** * 姓名,一个人一份*/ public String name; /** * 国籍,加static的叫做静态变量 * 静态变量在类加载时初始化,不需要new对象,静态变量的空间就开辟出来了 * 静态变量存储在方法区*/ public static String country = "中国"; public Chinese(String idCard1,String name1){ idCard = idCard1; name = name1; } } -----------Statictest02.java------------------------------------------------------------ public class StaticTest02 { public static void main(String[] args) { /** * 访问中国人的国籍,静态变量应该使用类名.的方式访问*/ System.out.println(Chinese.country); Chinese c1 = new Chinese("1231456456456456","张三");
     System.out.println(c1.name);
     System.out.println(c1.idCard); Chinese c2
= new Chinese("7897897896748564","李四");
    
System.out.println(c2.name);
     System.out.println(c2.idCard);
} }

技术分享图片

 

 

 

不是静态变量
public class Chinese {
    /**
     * 身份证号,唯一标识*/
    public String idCard;

    /**
     * 姓名,一个人一份*/
    public String name;

    /**
     * 国籍*/
    public String country;

    public Chinese(String idCard1,String name1, String country1){
        idCard = idCard1;
        name = name1;
        country = country1;
    }
}


-----------------------------------------------------------------------
public class StaticTest02 {
    public static void main(String[] args) {

        Chinese c1 = new Chinese("1231456456456456","张三","中国");
        System.out.println(c1.name);
        System.out.println(c1.idCard);
        System.out.println(c1.country);
        Chinese c2 = new Chinese("7897897896748564","李四","中国");
        System.out.println(c2.name);
        System.out.println(c2.idCard);
        System.out.println(c2.country);
    }
}

技术分享图片

 

 综上所述:什么时候用静态变量?

如果这个类型的所有对象的某个属性值都是一样的,不建议定义为实例变量,浪费内存空间。建议定义为类级别特征,定义为静态变量,在方法区中只保留一份,节省内存开销。

技术分享图片

 

 技术分享图片

实例的:一定需要使用“引用.”来访问。

静态的:建议使用“类名.”来访问,但使用“引用.”来访问也行(不建议这样使用)

    如果静态的使用“引用.”来访问会让程序员产生困惑,程序员以为是实例的。

结论:空指针异常只有在什么情况下才会发生?

  只有在“空引用”访问“实例”相关的,都会出现空指针异常。

java之static关键字

原文:https://www.cnblogs.com/peiminer/p/13645222.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!