关于java中的static关键字

关于java中的static关键字;

        1.static 英文译名为静态的;

        2.static修饰的方法为静态方法;

        3.static修饰的变量为静态变量;

        4.所有static修饰的元素均为静态的,都可以用类名.的方法进行调用【其实用引用.的方式进               行调用也是可以的,不会报错,但会有警告,因此不建议使用引用.的方式进行调用;

        5.static修饰的都是类级别的特征和具体的对象无关;

——java中static关键字的用法:

实例变量(对象变量)每个java对象就有一份,那么100个对象就有100份!这里有什么缺点? 

例:

        

public class Chinese {
    String id;//实例变量
    String name;//实例变量
    String country;//实例变量

    public Chinese(String id,String name,String country) { //构造方法,形参列表传递实参
    this.id=id;
    this.name=name;
    this.country=country;
    }
}

public class ChineseTest01 {

    public static void main(String[] args) {  //main方法为程序的入口,程序由此处进行
        Chinese zhangshan=new Chinese("1","张三","中国"); //new调用构造的方法
        Chinese lishi=new Chinese("2","李四","中国"); //new调用构造的方法
        System.out.println(zhangshan.id+","+zhangshan.name+","+zhangshan.country);
        System.out.println(lishi.id+","+lishi.name+","+lishi.country);
    }

}

运行截屏:

                                                                                                                                                                            

        —— 以上每个实例变量都储存在对象中,都需要在堆内存中开辟内存;在以上的代码以及代码截屏中,张三和李四都有中国国籍,并且国籍都为中国,将country定义为实例变量浪费空间,没必要让每个对象内都保留国籍信息,因此可以在country的前面,将其变成类级别的变量,通过类访问。

以上代码加上static静态关键字效果如下:

        

public class Chinese {
    String id;//实例变量
    String name;//实例变量
    static String country="中国";//实例变量
    

    public Chinese(String id,String name) {
    this.id=id;
    this.name=name;
    
    
    }
}

public class ChineseTest01 {

    public static void main(String[] args) {
        Chinese zhangshan=new Chinese("1","张三");
        Chinese lishi=new Chinese("2","李四");
        System.out.println(zhangshan.id+","+zhangshan.name+","+Chinese.country);
        System.out.println(lishi.id+","+lishi.name+","+Chinese.country);
        
        
    }

}

运行截屏:

 这样就节省了堆内存的空间!

另加说明:

        —— static String country;中的country为静态变量,静态变量在类加载的时候不需要创建对象内存就开放了

        ——静态变量储存在方法区内存中

        什么时候成员变量声明为实例变量?

                —所有对象都有这个属性,但是不同对象此属性不同

        什么时候成员变量声明为实例变量?

                —所有对象都这个属性并且所有对象的属性的值都是一样的

        ——所有的静态的数据都可采用类名的方式访问,也可以采用引用,但是建议采用类名的方式访问

        ——采用引用的方法访问的时候即使引用是null,也不会出现空指针异常,因为访问静态数据的时候不需要对象的存在

                                                                                                                               

                                                                                                                                         2022.3.18

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值