Java local variables initialize and member initialize
阿新 • • 發佈:2018-12-27
1. In the case of a method’s local variables, if you say:
void f() {
int i;
i++;
}
you’ll get an error message that says that i might not be initialized.
2. member initialize.
case 1: The compiler automatically initialize these values.
// housekeeping/InitialValues.java // (c)2017 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Shows default initial values public class InitialValues { boolean t; char c; byte b; short s; int i; long l; float f; double d; InitialValues reference; void printInitialValues() { System.out.println("Data type Initial value"); System.out.println("boolean " + t); System.out.println("char [" + c + "]"); System.out.println("byte " + b); System.out.println("short " + s); System.out.println("int " + i); System.out.println("long " + l); System.out.println("float " + f); System.out.println("double " + d); System.out.println("reference " + reference); } public static void main(String[] args) { new InitialValues().printInitialValues(); System.out.println(new InitialValues().c + 1); } } /* Output: Data type Initial value boolean false char [] byte 0 short 0 int 0 long 0 float 0.0 double 0.0 reference null 1 */
The char value is zero, which in my platform(jdk 1.8) char output is [] ( in windows is [ ]).
case 2: The compiler appropriately complains about forward referencing, since it is about the order of initialization and not the way the program is compiled.
// housekeeping/MethodInit3.java // (c)2017 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. public class MethodInit3 { // - int j = g(i); // Illegal forward reference int i = f(); int f() { return 11; } int g(int n) { return n * 10; } }
referecnes:
1. On Java 8 - Bruce Eckel
2. https://github.com/wangbingfeng/OnJava8-Examples/blob/master/housekeeping/InitialValues.java
3. https://github.com/wangbingfeng/OnJava8-Examples/blob/master/housekeeping/MethodInit3.java