static 静态变量

一、static概述

        static表示静态,是Java中的一个修饰符,可以修饰成员方法,成员变量。

二、静态变量
        特点:

                   1.被该类所有对象共享

                   2.不属于对象,属于类

                   3.随着类的加载而加载,优先于对象存在

        调用方式:

                1.类名调用(推荐)

                2.对象名调用

        例:

public class Student{

        private String name;    //学生姓名

        private int age;             //学生年龄

        private String gender;  //学生性别

        private static String teacherName;   /*学生老师姓名,一个班学生的老师姓名一样所以共用一个姓名,故用static修饰,被该类所有对象共享*/

}

//小技巧: 构造方法在这里省略,若要自己实验可以在IDEA中 alt+insert 选择第一个全部不选构造无参构造方法点击确定,再alt+inset选择第一个ctrl+a全选后选择确定,再alt+inset选择geter and seter 全选构造

        public void show(){

        System.out.println(name+","+age+","+gender+","+teacherName)

}

public static void main(String[] args){

        Student.teacherName="不吃糖老师";//类名调用

        Student s1=new Student();

        s1.setName("不吃糖");

        s1.setAge(18);

        s1.setGender("男");

        /*s1.teacherName="不吃糖老师";   对象名调用,若上面已进行类名调用就不需要对象名调用,静态变量赋值一次即可,为举例写出来后注释掉*/

        

        s1.show();        

Student s2=new Student();

        s2.setName("不加糖");

        s2.setAge(18);

        s2.setGender("女");

        /*s2.teacherName="不吃糖老师";   上面调用过一次就无需再调用,为方便理解写出来后注释掉*/

        

        s2.show()

}

 上例中teacherName被该类所有对象共享,仅需赋值一次,类名调用和对象名调用效果相同,若用对象名调用s1赋值后s2不需要再次赋值。(推荐使用类名调用)

上述代码输出结果为:

        不吃糖,18,男,不吃糖老师

        不加糖,18,女,不吃糖老师

结果分析:上述对于teacherName仅赋值一次,s1和s2的teacherName均为不吃糖老师

再次声明:静态变量不属于对象,属于类且随着类的加载而加载,优先于对象存在

三、静态方法
        特点:

                1.多用在测试类和工具类中

                2.Javabean类中很少会用

                /*知识点补充

                        Javabean类:用来描述一类事物的类。比如,Student,Teacher,Dog,Cat等

                        测试类:用来检查其他类是否书写正确,带有main方法的类,是程序的入口

                        工具类:不是用来描述一类事物的,而是帮我们做一些事情的类

                                                                                                                                                        */

                /* 工具类:帮助我们做一些事情的,但不描述任何事物的类

                    特点: 1.类名见名知意(若是用来操作数组可起名ArrUtil  Arr:数组 Util:工具)

                                2.私有化构造方法(私有化后不可创建其对象,原因:工具类不是用来描述一类事物的,创建其的对象没有意义)

                                3.方法定义为静态(方便调用)                                                                       */

        调用方式:

                1.类名调用(推荐)

                2.对象名调用

                例:

public class StudentUtil{   //类名见名知意

    private StudentUtil(){} //成员私有  
    
          //static:静态,方便调用  
    public static int getMaxAgeStudent(ArrayList<Student> list){
        

        ....

    }
}
    //创建了一个工具类
//调用工具类中的方法 工具类名.方法名
int maxAgeStudent=StudentUtil.getMaxAgeStudent(list);

System.out.println(maxAgeStudent);

四、static注意事项

        1.静态方法只能访问静态变量和静态方法

        2.非静态方法可以访问静态变量或静态方法,也可以访问非静态的成员变量和非静态的成员方法

        3.静态方法中是没有this关键字

                                                                                                                          求关注求点赞求收藏

  • 21
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值