<< Chapter < Page Chapter >> Page >

Explanation 10

This is an upgrade to the program from Question 9 .

Success at last

The code in the following fragment resolves the compilation problem from Question 8 and the runtime problem from Question 9 .

void doIt(){ char[]ref = {'J','o','e'}; System.out.print(ref);System.out.print(" "); ref[0]= 'T'; ref[1]= 'o'; ref[2]= 'm'; System.out.println(ref);}//end doIt()

Simply initializing the local reference variable named ref satisfies the compiler, making it possible to compile the program.

Initializing the local reference variable named ref with a reference to a valid array object eliminates the NullPointerException that was experienced in Question 9 .

Printing the contents of the array object

The print statement passes the reference variable to the print method. The print method finds that the reference variable refers to a valid object (instead of containing null as was the case in Question 9 ) and behaves accordingly.

The print statement causes the initialized contents of the array object to be displayed. Then those contents are replaced with a new set of characters. The println statement causes the new characters to be displayed.

Back to Question 10

Answer 9

B. Runtime Error

Explanation 9

Purposely initializing a local variable

This is an update to the program from Question 8 . The code in the following fragment solves the compilation problem identified in Question 8 .

void doIt(){ char[]ref = null;

In particular, initializing the value of the reference variable named ref satisfies the compiler and makes it possible to compile the program.

A NullPointerException

However, there is still a problem, and that problem causes a runtime error.

The following statement attempts to use the reference variable named ref to print something on the screen. This results, among other things, in an attemptto call the toString method on the reference. However, the reference doesn't refer to an object. Rather, it contains the value null .

System.out.print(ref);

The result is a runtime error with the following infamous NullPointerException message appearing on the screen:

java.lang.NullPointerException at java.io.Writer.write(Writer.java:107)at java.io.PrintStream.write(PrintStream.java:245) at java.io.PrintStream.print(PrintStream.java:396)at Worker.doIt(Ap159.java:22) at Ap159.main(Ap159.java:15)

Back to Question 9

Answer 8

A. Compiler Error

Explanation 8

Garbage in, garbage out

Earlier programming languages, notably C and C++ allowed you to inadvertently write programs that process the garbage left in memory by previous programsrunning there. This happens when the C or C++ programmer fails to properly initialize variables, allowing them to contain left-over garbage from memory.

Member variables are automatically initialized to default values

That is not possible in Java. All member variables in a Java object are automatically initialized to a default value if you don't write the code toinitialize them to some other value.

Local variables are not automatically initialized

Local variables are not automatically initialized. However, your program will not compile if you write code that attempts to fetch and use a value in a localvariable that hasn't been initialized or had a value assigned to it.

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Object-oriented programming (oop) with java. OpenStax CNX. Jun 29, 2016 Download for free at https://legacy.cnx.org/content/col11441/1.201
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Object-oriented programming (oop) with java' conversation and receive update notifications?

Ask