The Java Tutorials have been written for JDK 8. Examples and practices described in this page don't take advantage of improvements introduced in later releases and might use technology no longer available.
SeeDev.java for updated tutorials taking advantage of the latest releases.
SeeJava Language Changes for a summary of updated language features in Java SE 9 and subsequent releases.
SeeJDK Release Notes for information about new features, enhancements, and removed or deprecated options for all JDK releases.
Once you've created an object, you probably want to use it for something. You may need to use the value of one of its fields, change one of its fields, or call one of its methods to perform an action.
Object fields are accessed by their name. You must use a name that is unambiguous.
You may use a simple name for a field within its own class. For example, we can add a statementwithin theRectangle
class that prints thewidth
andheight
:
System.out.println("Width and height are: " + width + ", " + height);
In this case,width
andheight
are simple names.
Code that is outside the object's class must use an object reference or expression, followed by the dot (.) operator, followed by a simple field name, as in:
objectReference.fieldName
For example, the code in theCreateObjectDemo class is outside the code for theRectangle class. So to refer to theorigin,width, andheight fields within theRectangle object namedrectOne, theCreateObjectDemo class must use the namesrectOne.origin,rectOne.width, andrectOne.height, respectively. The program uses two of these names to display thewidth and theheight ofrectOne:
System.out.println("Width of rectOne: " + rectOne.width);System.out.println("Height of rectOne: " + rectOne.height);
Attempting to use the simple nameswidth andheight from the code in theCreateObjectDemo class doesn't make sense those fields exist only within an object and results in a compiler error.
Later, the program uses similar code to display information aboutrectTwo. Objects of the same type have their own copy of the same instance fields. Thus, eachRectangle object has fields namedorigin,width, andheight. When you access an instance field through an object reference, you reference that particular object's field. The two objectsrectOne andrectTwo in theCreateObjectDemo program have differentorigin,width, andheight fields.
To access a field, you can use a named reference to an object, as in the previous examples, or you can use any expression that returns an object reference. Recall that thenew operator returns a reference to an object. So you could use the value returned from new to access a new object's fields:
int height = new Rectangle().height;
This statement creates a newRectangle object and immediately gets its height. In essence, the statement calculates the default height of aRectangle. Note that after this statement has been executed, the program no longer has a reference to the createdRectangle, because the program never stored the reference anywhere. The object is unreferenced, and its resources are free to be recycled by the Java Virtual Machine.
You also use an object reference to invoke an object's method. You append the method's simple name to the object reference, with an intervening dot operator (.). Also, you provide, within enclosing parentheses, any arguments to the method. If the method does not require any arguments, use empty parentheses.
objectReference.methodName(argumentList);
or:
objectReference.methodName();
TheRectangle class has two methods:getArea() to compute the rectangle's area andmove() to change the rectangle's origin. Here's theCreateObjectDemo code that invokes these two methods:
System.out.println("Area of rectOne: " + rectOne.getArea());...rectTwo.move(40, 72);
The first statement invokesrectOne'sgetArea()
method and displays the results. The second line movesrectTwo because themove() method assigns new values to the object'sorigin.x andorigin.y.
As with instance fields,objectReference must be a reference to an object. You can use a variable name, but you also can use any expression that returns an object reference. Thenew operator returns an object reference, so you can use the value returned from new to invoke a new object's methods:
new Rectangle(100, 50).getArea()
The expressionnew Rectangle(100, 50) returns an object reference that refers to aRectangle object. As shown, you can use the dot notation to invoke the newRectangle'sgetArea() method to compute the area of the new rectangle.
Some methods, such asgetArea(), return a value. For methods that return a value, you can use the method invocation in expressions. You can assign the return value to a variable, use it to make decisions, or control a loop. This code assigns the value returned bygetArea() to the variableareaOfRectangle
:
int areaOfRectangle = new Rectangle(100, 50).getArea();
Remember, invoking a method on a particular object is the same as sending a message to that object. In this case, the object thatgetArea() is invoked on is the rectangle returned by the constructor.
Some object-oriented languages require that you keep track of all the objects you create and that you explicitly destroy them when they are no longer needed. Managing memory explicitly is tedious and error-prone. The Java platform allows you to create as many objects as you want (limited, of course, by what your system can handle), and you don't have to worry about destroying them. The Java runtime environment deletes objects when it determines that they are no longer being used. This process is calledgarbage collection.
An object is eligible for garbage collection when there are no more references to that object. References that are held in a variable are usually dropped when the variable goes out of scope. Or, you can explicitly drop an object reference by setting the variable to the special valuenull. Remember that a program can have multiple references to the same object; all references to an object must be dropped before the object is eligible for garbage collection.
The Java runtime environment has a garbage collector that periodically frees the memory used by objects that are no longer referenced. The garbage collector does its job automatically when it determines that the time is right.
About Oracle |Contact Us |Legal Notices |Terms of Use |Your Privacy Rights
Copyright © 1995, 2024 Oracle and/or its affiliates. All rights reserved.