zoukankan      html  css  js  c++  java
  • Java——static

    一、概念

    static单词意思是静止的,在Java语言中表示静态的。

    二、作用

    可以去修饰成员变量,成员方法,被static修饰的成员,称为类的成员(我们也可称为静态成员)。静态成员会随着类的加载而进入方法区内存(早于对象的创建),静态成员使用时可以直接用类名调用。而没有被static修饰的成员,称为实例成员,实例成员的使用必须要依赖对象取调用。

    三、静态变量的定义

    在成员变量前加上static修饰 即可

    public class StaticTest {
        public static String city = "合肥";
    }
    

    四、静态变量的使用

    静态变量有2种访问方式

    1. 用类名去调用(常用)
    2. 用对象取调用

    分别如下

    public class Abc {
        public static void main(String[] args) {
            // 用类名去调用
            System.out.println(StaticTest.city);   // 合肥
            
            // 用对象取调用
            StaticTest st = new StaticTest();
            System.out.println(st.city);   // // 合肥
        }
    }    
    

    五、静态变量内存机制

    • 静态变量在内存中只有一份数据在方法区中,不管在内存中该类有几个对象,静态变量的数据也只有一份数据,通常用来做数据共享。
    • 非静态变量(实例变量)随着对象在内存中创建而存在,该类有几个对象就有几份非静态变量的数据

    六、静态变量的实际使用

    静态变量可以用来实现一些静态常量工具类,比如

    // 静态常量工具类
    public class QuestionType {
        public static final String CHOICE = "选择题";
        public static final String JUDGE = "判断题";
        public static final String FILL = "填空题";
        public static final String SHORT = "简答题";
    }

    之后,再给比如试题选择类型的时候,就可以直接使用类名.变量名的方式来给试题定义类型,而不用手动书写,导致有可能的书写错误。

    七、静态方法的定义

    使用static关键字修饰的方法就是静态方法,如下

    public class Calc {
        public static int max(int a, int b){
            return a > b ? a : b;
        }
    }

    八、静态方法的使用

    静态方法在类加载到方法区后无需定义对象,直接用类名就可以调用。当然也可以使用对象调用,

    1. 用类名去调用(常用)
    2. 对象取调用
    public class Abc {
        public static void main(String[] args) {
            // 类名调用
            System.out.println(Calc.max(5, 10));   // 10
            
            // 对象调用
            Calc math = new Calc();
            System.out.println(math.max(100, 200));   // 200
        }
    }
    

    九、什么情况下用静态方法

    1. 很多工具类内部定义的就是静态方法,例如数组工具类Arrays,数学工具类Math。
    2. 这样做的好处就是我们调用方法无需创建对象调用,直接类名调用就可以方便多了。
    3. 开发中如果我们需要将代码抽取形成工具,也可以参考这个方式。

    十、静态方法访问成员时的特点

    1. 静态方法只能访问静态成员(静态变量、静态方法)
    2. 非静态方法可以访问非静态成员、可以访问静态(静态变量、静态方法)

    为什么会是这样,因为从存在的时机来看静态成员先于非静态成员存在,因此后存在的可以访问先存在的成员(静态成员随着类加载而存在,非静态成员只有对象创建了才会存在)

    十一、静态方法的示例

    对一个字符串进行加密(简单使用)

    // StringUtils.java
    public class StringUtils {
        // 密码加密
        public static String encryption(String pwd){
            // 获取字符串中的每一个字符 String => char[]
            char[] chars = pwd.toCharArray();
            for (int i = 0; i < chars.length; i++) {
                // 每个字符 +2
                chars[i] = (char)(chars[i] + 2);
            }
            return new String(chars);   // 返回新密码
        }
    }
    
    // Abc.java
    public class Abc {
        public static void main(String[] args) {
            String pwd = "xlj123abc";
            // 使用静态方法工具类,对密码进行加密
    
            String newPwd = StringUtils .encryption(pwd);
            System.out.println(newPwd);   // znl345cde
    
        }
    }
    

      

  • 相关阅读:
    zookeeper开源客户端curator
    elastic-job(lite)使用的一些注意事项
    zookeeper典型应用场景之一:master选举
    zookeeper学习笔记
    spring-boot子模块打包的jar中去掉BOOT-INF文件夹
    win10如何找回自带的照片查看器
    Hbase shell详情
    linux tar.gz zip 解压缩 压缩命令
    Java中Volatile关键字详解
    系统变量之System.getenv()和System.getProperty()
  • 原文地址:https://www.cnblogs.com/xulinjun/p/14764302.html
Copyright © 2011-2022 走看看