JavaSE——面向对象高级一(1/4)-static修饰成员变量、应用场景,static修饰成员方法、应用场景

简介: JavaSE——面向对象高级一(1/4)-static修饰成员变量、应用场景,static修饰成员方法、应用场景

static

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

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

  1. 类变量
  2. 实例变量(对象的变量)

static修饰成员变量

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

类变量的用法

  1. 类名.类变量(推荐)
  2. 对象.类变量(不推荐)

实例变量的用法

  1. 对象.实例变量

例如:

public class Student{
    
    //类变量
    static String name;
 
    //示例变量
    int age;
}
public class Test{
    public static void main(String[] args){
        //1.类变量用法
        Student.name = "张三"; //第一种
        Student s1 = new Student();
        s1.name = "张三";//第二种,语法上支持,但不推荐
 
        //此时再创建一个对象
        Student s2 = new Student();
        s2.name = "李四"; //再为其name赋值
        
        //输出s1
        System.out.println(s1.name);
        //输出值为:李四
        //因为name是类变量,被所有对象共享,所以s2修改了name的值
 
 
        //2.实例变量用法
        //实例变量是属于每个对象的,各自都有各自的数据
        s1.age = 23;
        s2.age = 18;
 
        System.out.println(s1.age);  //输出为23
        System.out.println(s2.age);  //输出为18
    }
}v

类变量的应用场景

  • 在开发中,如果某个数据只需要一份,且希望能够被共享(访问、修改),则该数据可以定义成类变量来记住。

例如:系统启动后,要求用户类可以记住自己创建了多少个用户对象了。

public class User{
    //类变量
    public static int number;
 
    //构造器
    public User(){
        User.number++;  //这样每创建一个用户对象、调用一次构造器,就会给number++,记录用户对象的个数
        //也可以简写为:
        //number++;  注意:在同一个类中,访问自己类的类变量,才可以省略类名
 
    }
}

static修饰成员方法

成员方法的分类:

  • 类方法(静态方法):static修饰的成员方法,属于类。
public static void printHelloWorld(){
    System.out.println("Hello World !");
    System.out.println("Hello World !");
}

一般也是用 类名.类方法 的方式来调用类方法的。 (对象名.类方法 不推荐)

  • 实例方法(对象的方法):无static修饰的成员方法,属于对象。
public void printPass(){
    ...
}

对象.实例方法 进行调用。

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

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

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

使用类方法来设计工具类的好处

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

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

  • 实例方法需要创建对象来调用,此时对象只是为了调用方法,对象占内存,这样会浪费内存。
  • 类方法,直接用类名调用即可,调用方便,也能节省内存。

因为工具类没有创建对象的需求,建议将工具类的构造器进行私有

例如:

public class MyUtil{
    private MyUtil(){
    
    }
    
    public static String createCode(int n){
        ...
    }
}

这样它就无法被用来创建对象了,算是一个合格的工具类!


END



目录
相关文章
|
2月前
|
C语言
学习static定义静态变量
学习static定义静态变量。
36 4
|
24天前
|
Java 编译器 数据处理
JavaSE——面相对象高级一(4/4)-继承相关的注意事项:权限修饰符、单继承、Object类、方法重写、子类访问成员的特点......
JavaSE——面相对象高级一(4/4)-继承相关的注意事项:权限修饰符、单继承、Object类、方法重写、子类访问成员的特点......
29 0
|
9月前
|
druid Java 编译器
Java的第七篇文章——面向对象接口(包含了接口、static修饰符、final修饰符、main方法、内部类等知识点)
Java的第七篇文章——面向对象接口(包含了接口、static修饰符、final修饰符、main方法、内部类等知识点)
关于static修饰的成员方法成员成员变量的相关讨论
关于static修饰的成员方法成员成员变量的相关讨论
|
安全 Java 程序员
【Java基础】用final关键字修饰方法的参数
【Java基础】用final关键字修饰方法的参数
142 0
|
存储 Java 程序员
深入理解Java中的三个修饰符(抽象(abstract)、静态(static)和最终的,不可变(final))【配视频】
🍅程序员小王的博客:程序员小王的博客 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 如有编辑错误联系作者,如果有比较好的文章欢迎分享给我,我会取其精华去其糟粕 🍅java自学的学习路线:java自学的学习路线
300 0
深入理解Java中的三个修饰符(抽象(abstract)、静态(static)和最终的,不可变(final))【配视频】
|
Java
Java面向对象进阶1——static修饰符
无static修饰的成员变量或者成员方法,称为实例变量,实例方法,实例变量和实例方法必须创建类的对象,然后通过对象来访问,且必须用对象来调用
101 0
Java面向对象进阶1——static修饰符
|
存储 Java Android开发
04-三大特征、变量、构造方法this、static、final关键字
三大特征、变量、构造方法this、static、final关键字
48 0
|
存储 Java
java中final修饰符,修饰变量、方法、类的详细用法
java中final修饰符,修饰变量、方法、类的详细用法
105 0
|
Java 编译器
从垃圾回收机制解析为什么局部内部类只能访问final修饰的局部变量以及为什么加final能解决问题
从垃圾回收机制解析为什么局部内部类只能访问final修饰的局部变量以及为什么加final能解决问题
106 0
从垃圾回收机制解析为什么局部内部类只能访问final修饰的局部变量以及为什么加final能解决问题