欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > Java的static关键字

Java的static关键字

2025/2/13 13:05:00 来源:https://blog.csdn.net/weixin_45927386/article/details/145573493  浏览:    关键词:Java的static关键字

static关键字

静态的意思,可以修饰成员变量也可以修饰成员方法


特点

  • 被类的所有对象所共享
  • 多了一种调用方式,可以通过类名进行调用(推荐使用类名调用

假设所有的对象都在同一所学校,那么我们可以在Student类中定义静态成员变量static String school;

package com.yuhan.mstatic;public class staticDemo1 {public static void main(String[] args) {Student.school = "实验小学";Student s1 = new Student();s1.name = "张三";s1.age = 18;System.out.println(s1.name + "----" + s1.age + "----" + Student.school);System.out.println("----------------------------------------------");Student s2 = new Student();s1.name = "李四";s1.age = 10;System.out.println(s1.name + "----" + s1.age + "----" + Student.school);}
}


  • 随着类的加载而加载,优先于对象存在

在上面代码中Student.school可以放在创建对象之前

 假设onLineNumber是在线人数,需要被对象共享,那么在进入主方法之后,User.onLineNumber++是第一句代码,就会先加载类的字节码文件,那么我们上面提到特点,static关键字是随着类的加载而加载,会在堆空间内创建静态成员变量区的空间,默认值为0。


适用场景

  • 成员变量

        需要被所有对象共享数据

  • 成员方法

        尝尝用于制作工具类,工具类帮我们完成一些事物


举一个工具类的例子

package com.yuhan.mstatic;public class ArrayTools {private ArrayTools() {}public static int getMax(int[] arr) {int max = arr[0];for (int i = 1; i < arr.length; i++) {if (max < arr[i]) {max = arr[i];}}return max;}public static int getMin(int[] arr) {int min = arr[0];for (int i = 1; i < arr.length; i++) {if (min > arr[i]) {min = arr[i];}}return min;}public static void printArray(int[] arr) {System.out.print('[');for (int i = 0; i < arr.length - 1; i++) {System.out.print(arr[i] + ", ");}System.out.print(arr[arr.length - 1]);System.out.print(']');}
}

        如果发现一个类中,所有的方法,全都是static所修饰则需要私有该类的构造方法
        目的:为了不让其他类,再创建对象

 比如我们常用的System类,里面的方法大多都是static修饰的,可以直接用类名调用,所以System是工具类,构造方法被私有。


在调用的时候,直接使用类名调用成员方法就可以了

package com.yuhan.mstatic;public class toolTest {public static void main(String[] args) {int[] arr={11,22,33};System.out.println(ArrayTools.getMax(arr));System.out.println(ArrayTools.getMin(arr));ArrayTools.printArray(arr);}
}

  注意事项

  • static 方法中,只能访问静态成员(直接访问)
  • static 中不允许使用 this 关键字

因为静态方法或静态变量在类加载的时候就加载了,还没有创建对象,所以不能使用this也不能访问不是静态成员的成员。


 学习视频链接

进阶篇-Day1-01-static修饰成员的特点_哔哩哔哩_bilibili进阶篇-Day1-01-static修饰成员的特点是黑马程序员Java视频教程,一套超哇塞的Java教程,java零基础自学入门必看黑马java教程的第101集视频,该合集共计200集,视频收藏或关注UP主,及时了解更多相关视频内容。https://www.bilibili.com/video/BV1Fv4y1q7ZH?spm_id_from=333.788.videopod.episodes&vd_source=63033bb5836fb27b56e8857a2fbccd65&p=101

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com