【Java】static 修饰变量

简介: 【Java】static 修饰变量

static

一种java内置关键字,静态关键字,可以修饰成员变量、成员方法。

static + 成员变量


1.static + 成员变量

成员变量按照有无static修饰,可以分为

  • 类变量static + 变量属于类,仅存一份,由类全部对象所共享。
  • 实例变量(对象的变量)无static修饰属于每个对象

2.类变量图解

3.类变量的访问

类变量可以由 对象访问,也可以由 类进行访问

对比:实例变量仅支持由 对象进行访问

// 类变量的访问
        //1.类 . 变量名称
        Student.name = "szg";
        System.out.println(Student.name);
        //2.对象 . 变量名称
        Student s1 = new Student();
        System.out.println(s1.name);
        // 实例变量的访问
        //1.类 . 变量名称  error
        //Student.age = 16; // error
        //System.out.println(Student.age); // error
        //2.对象 . 变量名称
        Student s2 = new Student();
        System.out.println(s1.age);

4.类变量的内存原理


代码测试验证:

// 类变量被所有对象所共享,而实例变量每个对象都有一个,相互独立
        s1.age = 10;
        s2.age = 20;
        s1.name = "wangwu";
        s2.name = "lisi";
        System.out.println(s1.age);
        System.out.println(s2.age);
        System.out.println(s1.name);
        System.out.println(s2.name);

输出结果:

5.类变量的应用

测试类:

// User 的个数
        User u1 = new User();
        User u2 = new User();
        User u3 = new User();
        User u4 = new User();
        User u5 = new User();
        User u6 = new User();
        System.out.println(User.number);

User类:

package suziguang_d1_staticdemo;
public class User
{
    public static int number;
    public User()
    {
           number++;
           //User.number++;
    }
}

输出结果:


EOF

相关文章
|
7天前
|
Java 程序员 容器
Java中的变量和常量:数据的‘小盒子’和‘铁盒子’有啥不一样?
在Java中,变量是一个可以随时改变的数据容器,类似于一个可以反复打开的小盒子。定义变量时需指定数据类型和名称。例如:`int age = 25;` 表示定义一个整数类型的变量 `age`,初始值为25。 常量则是不可改变的数据容器,类似于一个锁死的铁盒子,定义时使用 `final` 关键字。例如:`final int MAX_SPEED = 120;` 表示定义一个名为 `MAX_SPEED` 的常量,值为120,且不能修改。 变量和常量的主要区别在于变量的数据可以随时修改,而常量的数据一旦确定就不能改变。常量主要用于防止意外修改、提高代码可读性和便于维护。
|
1月前
|
Java 编译器
java“变量 x 可能未被初始化”解决
在Java中,如果编译器检测到变量可能在使用前未被初始化,会报“变量 x 可能未被初始化”的错误。解决方法包括:1. 在声明变量时直接初始化;2. 确保所有可能的执行路径都能对变量进行初始化。
|
2月前
|
存储 Java
java基础(7)变量以及变量的分类
Java变量是内存中存储数据的基本单元,包含数据类型、名称和字面值。变量的数据类型决定了分配的内存空间大小。变量声明格式为“数据类型 变量名;”,变量名应符合标识符命名规范。变量可以重新赋值,但数据类型需一致。变量可以一行声明多个,作用域决定了变量的可用范围。变量分为局部变量和成员变量,局部变量定义在方法体内,成员变量定义在方法体外、类体内。
40 2
|
14天前
|
Java 编译器
Java重复定义变量详解
这段对话讨论了Java中变量作用域和重复定义的问题。学生提问为何不能重复定义变量导致编译错误,老师通过多个示例解释了编译器如何区分不同作用域内的变量,包括局部变量、成员变量和静态变量,并说明了使用`this`关键字和类名来区分变量的方法。最终,学生理解了编译器在逻辑层面检查变量定义的问题。
Java重复定义变量详解
|
19天前
|
存储 Java
Java 中的静态(static)
【10月更文挑战第15天】静态是 Java 语言中一个非常重要的特性,它为我们提供了一种方便、高效的方式来管理和共享资源。然而,在使用过程中,我们需要谨慎考虑其优缺点,以确保代码的质量和可维护性。
|
23天前
|
Java
通过Java代码解释成员变量(实例变量)和局部变量的区别
本文通过一个Java示例,详细解释了成员变量(实例变量)和局部变量的区别。成员变量属于类的一部分,每个对象有独立的副本;局部变量则在方法或代码块内部声明,作用范围仅限于此。示例代码展示了如何在类中声明和使用这两种变量。
|
1月前
|
Java 程序员
Java 面试高频考点:static 和 final 深度剖析
本文介绍了 Java 中的 `static` 和 `final` 关键字。`static` 修饰的属性和方法属于类而非对象,所有实例共享;`final` 用于变量、方法和类,确保其不可修改或继承。两者结合可用于定义常量。文章通过具体示例详细解析了它们的用法和应用场景。
28 3
|
1月前
|
Java 编译器
在Java中,关于final、static关键字与方法的重写和继承【易错点】
在Java中,关于final、static关键字与方法的重写和继承【易错点】
21 5
|
1月前
|
分布式计算 资源调度 Hadoop
大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
76 4
|
1月前
|
Java
java中父类方法return this.对象还是变量,子类去调用this.这个方法的问题
本文探讨了在Java中,当父类的方法返回`this`对象或变量时,子类调用该方法的行为,以及`this`关键字在不同类中调用方法时的指向问题。
15 0
java中父类方法return this.对象还是变量,子类去调用this.这个方法的问题