zoukankan      html  css  js  c++  java
  • 1-6static关键字

    static的作用?

    • static可以修饰变量,被static修饰的变量叫做静态变量,程序运行时静态变量存放在方法区里面,因此,静态变量在类加载阶段赋值,并且只赋值一次。请看例1
    • static可以修饰方法,被static修饰的方法叫做静态方法,不用创建对象就能能直接访问该方法,即使用类名.静态方法名的方式。静态方法不能访问非静态的数据,静态方法不能使用this。请看例2
    • static可以定义静态语句块,静态语句块在类加载阶段执行,并且只执行一次,并且是自上而下的顺序执行,在构造方法之前执行。请看例3
      static修饰的变量、方法、代码块都是隶属于类(class)级别的,跟对象无关。某一类物体如果可以被多个其他物体所共享,那么可以将这类物体使用static修饰。
      比如wifi,多个人可以共同使用同一个wifi,所以wifi可以使用static修饰。手机是每人使用自己的,就不能用static修饰。

    例1:

    public class StaticTest01 {
    
        public static void main(String[] args){
    
            Employee e = new Employee();
            //可以通过对象名.静态方法名的方式访问,工作中不这样使用
            System.out.println(e.company);
            //可以通过类名.静态方法名的方式访问,工作中使用这种写法
            System.out.println(Employee.company);
            e = null;
            System.out.println(e.company);//不会报空指针,说明静态变量跟对象无关。
        }
    
    }
    
    class Employee{
    
        private String name;
    
        static String company = "阿里巴巴";
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
    
    }
    

    例2:

    class StaticTest02{
    
        //成员变量
        int i;
    
        //成员方法
        //成员方法必须使用“引用.”调用
        public void m1(){
            System.out.println("m1方法");
        }
    
        //静态方法
        //可以使用“类名.”方式调用.也可以用“引用.”,即使用的是“引用.”,底层还是用的“类名.”
        //静态方法中不能直接访问非静态数据.
        //静态方法中不能使用this
        public static void m2(){
            //m1();错误,静态方法中不能访问非静态的方法
            //System.out.println(i);错误,静态方法中不能访问非静态的变量
            System.out.println("m2方法");
        }
    
    
        public static void main(String[] args){
    
            StaticTest02 st = new StaticTest02();
            st.m1();
            m2();
    
    
            st.m2();//不建议这样使用
            StaticTest02.m2();//建议这样使用            
    
            st = null;
            st.m2(); //不会报出空指针异常
    
        }
    
    }
    

    例3:

    
    public class StaticTest03{
    
        //静态语句块
        static{
            System.out.println("静态语句块1");
        }
    
        static{
            System.out.println("静态语句块2");
        }
    
        static{
            System.out.println("静态语句块3");
        }
    
        //构造方法
        StaticTest03(){
            System.out.println("构造方法");
        }
    
        public static void main(String[] args){
            System.out.println("main main方法 1");
            System.out.println("main main方法 2");
            new StaticTest03();
            new StaticTest03();//静态语句块只执行了一次
        }
    
    }
    
  • 相关阅读:
    《HTTP权威指南》之HTTP连接管理及对TCP性能的考虑
    TCP/ip
    java scoket http TCP udp
    java ==和equals区别
    Java 流
    android ViewPager,ViewFlipper,ViewFlow实现左右滑动
    java反射详解
    退出清理所有Activity方法
    Android UI 使用Merge,include和 ViewStub--优化(1)
    android resources使用总结
  • 原文地址:https://www.cnblogs.com/superfly123/p/10442704.html
Copyright © 2011-2022 走看看