zoukankan      html  css  js  c++  java
  • Java基础22-Static关键字

    1.static关键字

     1 public class Test{
     2     public static void main(String[] args){
     3         Persion p1=new Persion();
     4         Persion p2=new Persion();
     5         p1.name="小明";
     6         p1.country="中国";
     7         p1.age=20;
     8         p2.name="小花";
     9         p2.age=15;
    10         
    11         System.out.println(p1);
    12         System.out.println(p2);
    13         System.out.println(Persion.country);
    14         //用类直接可以调用静态方法
    15         Student.print();
    16         
    17         
    18     }
    19 }
    20 /*
    21 static关键字
    22 作用:是一个修饰符,用于修饰成员(成员变量,成员方法)
    23 1.被static修饰后的成员变量只有一份
    24 2.当成员被static修饰之后,多了一种访问方式,除了可以对象调用之外,还可以被类直接调用(类名.静态成员)
    25 
    26 static的特点:
    27 1.随着类的加载而被加载
    28 2.优先于对象的存在
    29 3.被所有的对象所共享的
    30 4.可以直接被类名所调用
    31 
    32 存放位置:
    33 类变量随着类的加载而存在于data内存区
    34 实例变量随着对象的建立而存在于堆内存
    35 
    36 生命周期:
    37 1.类变量生命周期最长,随着类的消失而消失
    38 2.实例变量生命比类变量短,它是随着对象的消失而消失
    39 
    40 方法注意事项:
    41 1.静态的方法只能访问静态的成员
    42 2.非静态的方法既能访问静态的成员(成员变量,成员方法)也能访问非静态成员
    43 3.静态的方法中是不可以定义this super关键字
    44 因为静态优先于对象存在,所以静态方法不可以出现this
    45 */
    46 
    47 class Persion{
    48     String name;
    49     int age;//实例变量
    50     static String country;//静态变量(类变量)
    51     
    52     public String toString(){
    53         return "姓名:"+name+"
    "+"年龄:"+age+"
    "+"国家:"+country;
    54     }
    55 }
    56 
    57 class Student{
    58     String name;
    59     static String country;
    60     static void print(){//此方法没有访问非静态成员,那这个功能就可以定义为静态的
    61         System.out.println(country);
    62     }
    63     void p(){
    64         System.out.println(country);
    65     }
    66 }

     2.什么时候使用静态

    从两方面入手:

    什么时候使用静态的成员变量?

      当属于同一个类的所有对象出现共享数据时,需要将存储这个共享数据的成员变量用static修饰

    什么时候使用静态方法?

      当功能(方法)内部没有访问到非静态的成员时(对象特有的数据),那么该功能可以定义成静态的

    3.练习 静态工具类

    /*
    静态应用工具类
    每一个应用程序都有共性的功能
    可以将这些功能进行抽取、独立封装,以使复用
    对象的作用:对象是用来封装数据的,只要这个类里面有非静态的成员时,那对象就必须存在
    */
    
    public class Test{
        public static void main(String[] args){
            int[] arr={232,43,535,343,23,43,3,4};
            
            System.out.println(Compare.max(arr));//使用类名直接调用静态方法
        }
    }
    public class Compare{
        private Compare(){//构造方法私有,无法再创建对象
        }
        public static int max(int[] arr){//静态方法
            int max=arr[0];
            for(int i=0;i<arr.length;i++){
                if(arr[i]>max){
                    max=arr[i];
                }
            }
            return max;
    }
    }
  • 相关阅读:
    Protobuf
    iOS保持App真后台运行
    oc之考试答题类效果
    oc之脚本
    IOS
    Xcode中控制台中打印中文处理
    iOS-拍照后裁剪,不可拖动照片的问题
    iOS开发之一句代码检测APP版本的更新
    AVAudioSesion和AVAudioPlayer的基本使用
    GCD使用dispatch_semaphore_t创建多线程网络同步请求
  • 原文地址:https://www.cnblogs.com/shenhainixin/p/10078963.html
Copyright © 2011-2022 走看看