final 变量只能显式初始化一次。声明为 final 的引用变量永远无法重新分配以引用不同的对象。但是,对象内部的数据可以更改。因此,可以更改对象的状态,但不能更改引用。对于变量,final 修饰符通常与 static 一起使用,以使常量成为类变量。因此,一旦我们声明了一个 final 变量,就必须在声明时或使用构造函数初始化该 final 变量。否则,可能会发生编译时错误,提示“空白 final 字段 num ... 阅读更多
类变量也称为静态变量,用 static 关键字声明无论从它创建了多少个对象,每个类变量都只有一个副本。无需实例化即可访问类变量,使用类名作为 className.variableName。示例实时演示 public class Test{ static int num = 92; public static void main(String args[]) throws Exception { System.out.println(Test.num); } } 输出 92
public 修饰符的作用域最广。当类或其成员声明为 public 时,它们可以在任何地方访问。默认类或其成员可用于同一包中的任何其他类。但是,如果我们尝试访问的 public 类在不同的包中,则仍然需要导入该 public 类。由于类继承,类的所有 public 方法和变量都由其子类继承。示例以下函数使用 public 访问控制 - public static void main(String[] arguments) { // ... } ... 阅读更多
局部变量在方法、构造函数或代码块中声明。进入方法、构造函数或代码块时创建局部变量,并且一旦退出方法、构造函数或代码块,该变量就会被销毁。局部变量是在方法内声明的变量。此变量的作用域在方法内。示例 public abstract class Sample { public static void main(String args[]){ int data = 4044; System.out.println(data); } } 输出 4044
当我们没有初始化实例变量时,编译器会使用默认值初始化它们。对于 boolean 类型,默认值为 false,对于 float 和 double 类型,默认值为 0.0,对于其余基本类型,默认值为 0。示例实时演示 public class Sample { int varInt; float varFloat; boolean varBool; long varLong; byte varByte; short varShort; double varDouble; public static void main(String args[]){ Sample obj = new Sample(); System.out.println("Default int value ::"+obj.varInt); System.out.println("Default float value ::"+obj.varFloat); System.out.println("Default boolean value ::"+obj.varBool); ... 阅读更多
没有,局部变量没有默认值。创建局部变量后,必须在使用它之前对其进行初始化。由于 Java 中的局部变量存储在 JVM 的堆栈中,因此有可能获得先前值作为默认值。因此,在 Java 中不允许局部变量的默认值。示例 public class Sample { public static void main(String args[] ){ int data; System.out.println(data); } } 错误 C:\Sample>javac Sample.java Sample.java:4: error: variable data might not have been initialized System.out.println(data); ^ 1 error