首页 > 基础资料 博客日记
【java面试题】Java中,static关键字的运用
2024-06-24 21:00:06基础资料围观296次
本篇文章分享【java面试题】Java中,static关键字的运用,对你有帮助的话记得收藏一下,看Java资料网收获更多编程知识
文章目录
在Java中,
static
关键字是一个修饰符,它主要用于类级别的成员(包括变量、方法、内部类和代码块)。以下是
static
在Java中的用法:
- 修饰变量:当变量被声明为
static
时,该变量成为类的变量,而不是实例的变量。也就是说,这个变量属于类本身,而不是类的某个对象。它可以在没有创建类的任何对象的情况下被访问和修改。所有对象共享这个静态变量的一个副本。
public class MyClass {
static int staticVar = 42; // 静态变量
public static void main(String[] args) {
System.out.println(MyClass.staticVar); // 访问静态变量
}
}
- 修饰方法:静态方法属于类,而不是类的实例。静态方法不能访问非静态变量(除非通过对象引用),并且不能调用非静态方法(除非通过对象引用)。静态方法可以通过类名直接调用,而无需创建类的实例。
public class MyClass {
static void staticMethod() {
System.out.println("This is a static method.");
}
public static void main(String[] args) {
MyClass.staticMethod(); // 调用静态方法
}
}
- 修饰内部类:静态内部类是定义在另一个类内部的类,但它不是外部类的非静态成员。静态内部类可以包含静态和非静态成员。静态内部类不能访问外部类的非静态成员(除非通过外部类的对象),但可以直接访问外部类的静态成员。
public class OuterClass {
static int outerStaticVar = 100;
static class StaticNestedClass {
void display() {
System.out.println(outerStaticVar); // 可以直接访问外部类的静态变量
}
}
public static void main(String[] args) {
OuterClass.StaticNestedClass nested = new OuterClass.StaticNestedClass();
nested.display();
}
}
- 静态代码块:静态代码块在类被加载到JVM时执行,且只执行一次。通常用于初始化静态变量。静态代码块可以在类中的任何位置,但只能存在于类级别,不能存在于方法或实例初始化块中。
- 下滑查看解决方法
public class MyClass {
static {
// 静态代码块,用于初始化静态变量或执行其他类级别的操作
System.out.println("Static block executed.");
}
static int staticVar = 42; // 静态变量,可能在静态代码块之后初始化
public static void main(String[] args) {
// ...
}
}
- 静态导入:在Java 5及更高版本中,你可以使用
import static
语句导入静态成员(包括静态变量和静态方法),从而无需使用类名作为前缀即可直接访问它们。
import static java.lang.Math.PI;
import static java.lang.Math.sin;
public class Main {
public static void main(String[] args) {
System.out.println(sin(PI / 2)); // 直接使用sin和PI,无需Math前缀
}
}
需要注意的是,静态成员(变量、方法和内部类)与类的实例(对象)是分开的。静态成员属于类本身,而实例成员属于类的对象。因此,静态成员不能访问非静态成员(除非通过对象引用),而非静态成员可以访问静态成员。
文章来源:https://blog.csdn.net/PythonAigc/article/details/139065088
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签: