java之static关键词的作用

static关键词的作用
1、静态成员变量的语法特定
2、静态函数的语法特定
3、静态代码块的语法特定

定义静态成员变量
Person.java

class Person{
static int a;
}

按照以前可以这么调用

public class Test1{
public static void main(String[] args){
Person person = new Person();
person.a = 10;
System.out.println(person.a);
}
}

输出结果为10。

加上static后也可以这么使用:

public class Test1{
public static void main(String[] args){
Person.a = 10;
System.out.println(Person.a);
}
}//加入Java开发交流君样:756584822一起吹水聊天

输出结果为10。

普通成员对象和静态成员变量的区别
普通成员变量对应p1和p2互不影响。而静态成员变量,p1和p2使用的是同一个变量。
在这里插入图片描述
静态函数
静态函数中不能直接引用非静态的成员变量,在静态函数中不能使用this.

定义静态函数

Person.java:

class Person{
static void fun(){
System.out.println("static function");
}
}

Test1.java

public class Test1{
public static void main(String[] args){
Person.fun();
}//加入Java开发交流君样:756584822一起吹水聊天
}

输出:static function

静态代码块
静态代码块是在装载类的时候执行,作用是初始变量。

static{
System.out.println("static code");
}
### Java 中 `static` 关键字的使用方法和场景 #### 1. **基本概念** - `static` 是 Java 中的一个关键字,用于表示“全局”的特性。它主要应用于内存管理和程序结构优化[^1]。 - 使用 `static` 可以让某些成员(变量或方法)独立于具体的对象存在,从而实现无需实例化即可访问的功能。 #### 2. **`static` 的作用范围** ##### (1)**静态变量** - 静态变量也被称为类变量,由 `static` 修饰。这类变量在整个应用程序生命周期内只有一份副本,存储在方法区中[^3]。 - 所有的对象共享同一个静态变量,修改会影响所有实例。 ###### 示例代码 ```java class Counter { public static int count = 0; public Counter() { count++; } } public class TestCounter { public static void main(String[] args) { Counter c1 = new Counter(); Counter c2 = new Counter(); System.out.println("Count: " + Counter.count); // 输出 Count: 2 } } ``` ##### (2)**静态方法** - 静态方法属于类而非具体对象,可以通过类名直接调用[^2]。 - 静态方法内部无法直接访问非静态成员(即实例变量和实例方法),因为这些成员依赖于具体的对象实例[^4]。 ###### 示例代码 ```java class MathUtils { public static int add(int a, int b) { return a + b; } } public class TestMathUtils { public static void main(String[] args) { int result = MathUtils.add(5, 7); System.out.println("Result: " + result); // 输出 Result: 12 } } ``` #### 3. **常见使用场景** ##### (1)**工具类的设计** - 工具类通常包含一系列静态方法,提供通用功能支持。由于工具类不需要维护状态,因此可以完全基于静态方式构建[^5]。 ###### 示例代码 ```java import java.util.Arrays; public class ArrayTools { public static void printArray(int[] array) { System.out.println(Arrays.toString(array)); } public static int findMax(int[] array) { if (array == null || array.length == 0) { throw new IllegalArgumentException("数组不能为空!"); } int max = array[0]; for (int num : array) { if (num > max) { max = num; } } return max; } } public class TestArrayTools { public static void main(String[] args) { int[] numbers = {3, 7, 2, 9}; ArrayTools.printArray(numbers); // 输出 [3, 7, 2, 9] System.out.println("最大值:" + ArrayTools.findMax(numbers)); // 输出 最大值:9 } } ``` ##### (2)**常量定义** - 常量一般声明为 `public static final`,这样可以在整个项目范围内安全地共享固定值[^3]。 ###### 示例代码 ```java public class Constants { public static final double PI = 3.14159; public static final int MAX_LIMIT = 100; } public class TestConstants { public static void main(String[] args) { System.out.println("PI: " + Constants.PI); // 输出 PI: 3.14159 System.out.println("MAX LIMIT: " + Constants.MAX_LIMIT); // 输出 MAX LIMIT: 100 } } ``` ##### (3)**单例模式** - 单例模式是一种常见的设计模式,确保某类只有一个实例,并提供全局访问点。通过将构造函数设为私有并利用静态方法返回唯一实例来实现[^5]。 ###### 示例代码 ```java public class Singleton { private static Singleton instance; private Singleton() {} public static Singleton getInstance() { if (instance == null) { synchronized (Singleton.class) { if (instance == null) { instance = new Singleton(); } } } return instance; } } public class TestSingleton { public static void main(String[] args) { Singleton obj1 = Singleton.getInstance(); Singleton obj2 = Singleton.getInstance(); System.out.println(obj1 == obj2); // 输出 true } } ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值