详解Java中static关键字和内部类的使用
Java中的static
关键字和内部类是程序设计中非常重要的特性,本文将全面讲解它们的使用。
static关键字
概念
static
关键字可以用来修饰类的成员变量和成员方法。
当static
关键字被修饰成员变量时,该变量成为静态变量,也可以称为类变量。静态变量的特点是在内存中只有一份,无论有多少个对象被创建,静态变量都只有一份副本。静态变量可以通过类名直接访问,例如ClassName.staticVariable
。
当static
关键字被修饰成员方法时,该方法成为静态方法。静态方法的特点是可以通过类名直接调用,例如ClassName.staticMethod()
。静态方法不能访问非静态成员变量,因为非静态成员变量需要在对象被创建后才能分配内存空间,而静态方法和静态变量在类加载时就已经分配了内存空间。
示例
public class Student {
private static int count;
private String name;
public Student(String name) {
this.name = name;
count++;
}
public static int getCount() {
return count;
}
public String getName() {
return name;
}
public static void main(String[] args) {
Student s1 = new Student("Alice");
Student s2 = new Student("Bob");
System.out.println(s1.getName());
System.out.println(s2.getName());
System.out.println(Student.getCount());
}
}
在上面的示例代码中,count
变量被定义为静态变量,表示学生对象的个数。在Student
类的构造方法中,每次创建一个新的学生对象,都会将count
变量加1。通过getCount
方法可以获取到学生对象的个数,因为count
是静态变量,可以直接通过类名访问。
内部类
概念
内部类是定义在其他类内部的类。在Java中有四种内部类:
- 成员内部类
- 静态内部类
- 局部内部类
- 匿名内部类
其中最常用的是成员内部类和静态内部类。成员内部类和普通类的区别是成员内部类可以访问外部类的成员变量和方法,而普通类不能。静态内部类和成员内部类的区别是静态内部类不需要依赖于外部类的实例,可以直接通过类名访问。
示例
public class Outer {
private String name = "outer class";
public void test() {
Inner inner = new Inner();
inner.say();
}
public static class StaticInner {
public void say() {
System.out.println("static inner class");
}
}
public class Inner {
public void say() {
System.out.println("inner class:" + name);
}
}
public static void main(String[] args) {
Outer outer = new Outer();
outer.test();
StaticInner staticInner = new StaticInner();
staticInner.say();
}
}
在上面的示例代码中,Outer
类有一个成员内部类Inner
和一个静态内部类StaticInner
。在Outer
类的test
方法中,创建一个Inner
对象并调用它的say
方法,Inner
类可以访问Outer
类的name
成员变量。在main
方法中,创建一个StaticInner
对象并调用它的say
方法,StaticInner
类可以直接通过类名访问。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Java中static关键字和内部类的使用 - Python技术站