Java中static关键字总结

迷南。 2024-03-31 14:11 124阅读 0赞

static关键字

2.1 概述

以前我们定义过如下类:

  1. public class Student {
  2. // 成员变量
  3. public String name;
  4. public char sex; // '男' '女'
  5. public int age;
  6. // 无参数构造方法
  7. public Student() {
  8. }
  9. // 有参数构造方法
  10. public Student(String a) {
  11. }
  12. }

我们已经知道面向对象中,存在类和对象的概念,我们在类中定义了一些成员变量,例如name,age,sex ,结果发现这些成员变量,每个对象都存在(因为每个对象都可以访问)。

而像name ,age , sex确实是每个学生对象都应该有的属性,应该属于每个对象。

所以Java中成员(变量和方法)等是存在所属性的,Java是通过static关键字来区分的。static关键字在Java开发非常的重要,对于理解面向对象非常关键。

关于 static 关键字的使用,它可以用来修饰的成员变量和成员方法,被static修饰的成员是属于类的是放在静态区中,没有static修饰的成员变量和方法则是属于对象的。我们上面案例中的成员变量都是没有static修饰的,所以属于每个对象。

2.2 定义格式和使用

static是静态的意思。 static可以修饰成员变量或者修饰方法。

2.2.1 静态变量及其访问

有static修饰成员变量,说明这个成员变量是属于类的,这个成员变量称为类变量或者静态成员变量。 直接用 类名访问即可。因为类只有一个,所以静态成员变量在内存区域中也只存在一份。所有的对象都可以共享这个变量。

如何使用呢

例如现在我们需要定义传智全部的学生类,那么这些学生类的对象的学校属性应该都是“传智”,这个时候我们可以把这个属性定义成static修饰的静态成员变量。

定义格式

  1. 修饰符 static 数据类型 变量名 = 初始值;

举例

  1. public class Student {
  2. public static String schoolName = "传智播客" // 属于类,只有一份。
  3. // .....
  4. }

静态成员变量的访问:

格式:类名.静态变量

  1. public static void main(String[] args){
  2. System.out.println(Student.schoolName); // 传智播客
  3. Student.schoolName = "黑马程序员";
  4. System.out.println(Student.schoolName); // 黑马程序员
  5. }

2.2.2 实例变量及其访问

无static修饰的成员变量属于每个对象的, 这个成员变量叫实例变量,之前我们写成员变量就是实例成员变量。

需要注意的是:实例成员变量属于每个对象,必须创建类的对象才可以访问。

格式:对象.实例成员变量

2.2.3 静态方法及其访问

有static修饰成员方法,说明这个成员方法是属于类的,这个成员方法称为类方法或者静态方法**。 直接用 类名访问即可。因为类只有一个,所以静态方法在内存区域中也只存在一份。所有的对象都可以共享这个方法。

与静态成员变量一样,静态方法也是直接通过类名.方法名称即可访问。

举例

  1. public class Student{
  2. public static String schoolName = "传智播客" // 属于类,只有一份。
  3. // .....
  4. public static void study(){
  5. System.out.println("我们都在黑马程序员学习");
  6. }
  7. }

静态成员变量的访问:

格式:类名.静态方法

  1. public static void main(String[] args){
  2. Student.study();
  3. }

2.2.4 实例方法及其访问

无static修饰的成员方法属于每个对象的,这个成员方法也叫做实例方法

需要注意的是:实例方法是属于每个对象,必须创建类的对象才可以访问。

格式:对象.实例方法

示例

  1. public class Student {
  2. // 实例变量
  3. private String name ;
  4. // 2.方法:行为
  5. // 无 static修饰,实例方法。属于每个对象,必须创建对象调用
  6. public void run(){
  7. System.out.println("学生可以跑步");
  8. }
  9. // 无 static修饰,实例方法
  10. public void sleep(){
  11. System.out.println("学生睡觉");
  12. }
  13. public static void study(){
  14. }
  15. }
  16. public static void main(String[] args){
  17. // 创建对象
  18. Student stu = new Student ;
  19. stu.name = "徐干";
  20. // Student.sleep();// 报错,必须用对象访问。
  21. stu.sleep();
  22. stu.run();
  23. }

2.3 小结

1.当 static 修饰成员变量或者成员方法时,该变量称为静态变量,该方法称为静态方法。该类的每个对象都共享同一个类的静态变量和静态方法。任何对象都可以更改该静态变量的值或者访问静态方法。但是不推荐这种方式去访问。因为静态变量或者静态方法直接通过类名访问即可,完全没有必要用对象去访问。

2.无static修饰的成员变量或者成员方法,称为实例变量,实例方法,实例变量和实例方法必须创建类的对象,然后通过对象来访问。

3.static修饰的成员属于类,会存储在静态区,是随着类的加载而加载的,且只加载一次,所以只有一份,节省内存。存储于一块固定的内存区域(静态区),所以,可以直接被类名调用。它优先于对象存在,所以,可以被所有对象共享。

4.无static修饰的成员,是属于对象,对象有多少个,他们就会出现多少份。所以必须由对象调用。

发表评论

表情:
评论列表 (有 0 条评论,124人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Javastatic关键字

      static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一。下面就先讲述一下static关键字的用法

    相关 java关键字static完全总结

    1.static修饰属性 1. static修饰属性表示该属性是静态属性(静态变量),类属性(类变量)。 2. 静态属性由该类的所有实例所共享,属于类本身,可用类名.

    相关 javastatic关键字总结

    JVM只为静态变量分配一次内存,在加载类的过程中完成静态变量的内存分配,会执行静态的代码块    在类加载的init阶段,类的类构造器中会收集所有的static块和字段并执

    相关 javastatic关键字

    Java中的static关键字解析 static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一。下