<< Chapter < Page | Chapter >> Page > |
The variable named out in this case is a reference variable , which refers to an object of another type.
Accessing class variables
You access class variables or class methods in Java by joining the name of the class to the name of the variable or method with a period as shown below.
System.out
accesses the class variable named out in the Java class named System .
The PrintStream class
Another class that is provided with the Java development kit is the PrintStream class. The PrintStream class is in a package of classes that are used to provide stream input/output capability for Java.
What does the out variable refer to?
The out variable in the System class refers to (points to) an instance of the PrintStream class (a PrintStream object), which is automatically instantiated when the System class is loaded into the application.
We will be discussing the PrintStream class along with a number of other classes in detail in a future module on input/output streams, sothis is not intended to be an exhaustive discussion.
The println method
The PrintStream class has an instance method named println , which causes its argument to be displayed on the standard output device when it is called.
(Typically, the standard output device is the command-line window. However, it is possible to redirect it to some other device.)
Accessing an instance method
The method named println can be accessed by joining a PrintStream object's reference to the name of the method using a period.
Thus, (assuming that the standard output device has not been redirected) , the statement shown in Listing 2 causes the string "Hello World" (without the quotation marks) to be displayed in the command-line window.
Listing 2 . Display the string "Hello World". |
---|
System.out.println("Hello World"); |
This statement calls the println method of an object instantiated fromthe PrintStream class, which is referred to (pointed to) by the variable named out , which is a class variable of the System class.
Read the previous paragraph very carefully. As I indicated when I started this module, this is our first introduction to the complexity that can result from use of the OOP paradigm. (It can get even more complicated.) If this is not clear to you, go back over it and think about it until it becomes clear.
How many instances of a class variable exist?
The runtime system allocates a class variable only once no matter how many instances (objects) of the class are instantiated.
All objects of the class share the same physical memory space for the class variable.
If a method in one object changes the value stored in the class variable, it is changed insofar as all of the objects are concerned. (This is about as close to a global variable as you can get in Java.)
Accessing a class variable
You can use the name of the class to access class variables by joining the name of the class to the name of the variable using a period.
You can also access a class variable by joining the name of a reference variable containing an object's reference to the name of the variable using aperiod as the joining operator.
Referencing object methods via class variables
Class variables are either primitive variables or reference variables. (Primitive variables contain primitive values and reference variables contain references to objects.)
A referenced object may provide methods to control the behavior of the object. In Listing 2 , we accessed the println method of an object of the PrintStream class referred to by the class variable named out .
Instance variables and methods
As a side note, in addition to class variables, Java provides instance variables and instance methods . Every instance of a class has its own set of instance variables. You can only access instance variables andinstance methods through an object of the class.
I encourage you to copy the code from Listing 1 . Compile the code and execute it. Experiment with the code,making changes, and observing the results of your changes. Make certain that you can explain why your changes behave as they do.
This section contains a variety of miscellaneous information.
Financial : Although the Connexions site makes it possible for you to download a PDF file for thismodule at no charge, and also makes it possible for you to purchase a pre-printed version of the PDF file, you should beaware that some of the HTML elements in this module may not translate well into PDF.
I also want you to know that, I receive no financial compensation from the Connexions website even if you purchase the PDF version of the module.
In the past, unknown individuals have copied my modules from cnx.org, converted them to Kindle books, and placed them for sale on Amazon.com showing me as the author. Ineither receive compensation for those sales nor do I know who does receive compensation. If you purchase such a book, please beaware that it is a copy of a module that is freely available on cnx.org and that it was made and published withoutmy prior knowledge.
Affiliation : I am a professor of Computer Information Technology at Austin Community College in Austin, TX.
-end-
Notification Switch
Would you like to follow the 'Object-oriented programming (oop) with java' conversation and receive update notifications?