static(一)

static

  • 叫静态,可以修饰成员变量、成员方法。

static修饰成员变量

成员变量按有无static修饰,分为两种:

  • 类变量:有static修饰,属于类,在计算机里只有一份,会被类的全部对象共享
  • 实例变量(对象的变量):无static修饰,属于每个对象的

static修饰成员变量的应用场景

类变量的应用场景

  • 在开发中,如果某个数据只需要一份,且希望能够被共享(访问、修改),则该数据可以定义成类变量来记住。
案例导学:
  • 系统启动后,要求用户类可以记住自己创建了多少个用户对象。

User类 

public class User {
    //类变量
    public static int number;

    public User(){
        //User.number++;
        //注意:在同一个类中,访问自己类的类变量,才可以省略类名不写
        number++;
    }
}

Test类

public class Test {
    public static void main(String[] args) {
        //目标:通过案例理解类变量的应用场景
        User u1 = new User();
        User u2 = new User();
        User u3 = new User();

        System.out.println(User.number);
    }
}

运行结果为:3

static修饰成员方法

成员方法的分类

  • 类方法:有static修饰的成员方法,属于类
  • 成员方法:无static修饰的成员方法,属于对象

static修饰成员方法的应用场景

类方法的场景应用场景

  • 类方法最常见的应用场景是做工具类

工具类是什么?

  • 工具类中的方法都是一些类方法,每个类方法都是用来完成一个功能的,工具类是给开发人员共同使用的。

使用类方法来设计工具类有啥好处?

  • 提高了代码的复用性;调用方便,提高了开发效率

案例

当一个程序下登录需要一个4位验证码,注册需要6位验证码时,就可以用工具类来解决

LoginDemo类

public class LoginDemo {
    public static void main(String[] args) {
        System.out.println(MyUtil.creatCode(4));
    }
}

RegistDemo类

public class RegistDemo {
    public static void main(String[] args) {
        System.out.println(MyUtil.creatCode(6));
    }
}

MyUtil类

import java.util.Random;

public class MyUtil {
    public static String creatCode(int number){
        String code = "";
        String date = "abcdefghijklnmopqrstuvwxyzABCDEFGHIJKLNMOPQRSTUVWXYZ123456789";

        Random ra = new Random();
        for (int i = 0; i < number; i++) {
            int index = ra.nextInt(date.length());
            code += date.charAt(index);
        }
        return code;
    }
}

为什么工具类中的方法要用类方法,而不是实例方法?

  • 实例方法需要创建对象来调用,此时对象只是为了调用方法,对象占内存,这样会浪费内存
  • 类方法,直接用类名调用即可,调用方法,也能节省内存
  • 工具类没有创建对象的需求,建议将工具类的构造器进行私有

你可能感兴趣的:(java,开发语言)