MELJUN CORTES Java Lecture Working with Objects
-
Upload
meljun-cortes -
Category
Technology
-
view
125 -
download
1
description
Transcript of MELJUN CORTES Java Lecture Working with Objects
Working with Working with ObjectsObjects
how Java implements OOPhow Java implements OOP
MELJUN CORTESMELJUN CORTES
MELJUN CORTESMELJUN CORTES
ContentsContents
I.I. Review: Datatypes & OOPReview: Datatypes & OOP
II.II. OOP in JavaOOP in JavaA.A. Object InstantiationObject Instantiation
B.B. ReferencesReferences
C.C. Garbage CollectionGarbage Collection
D.D. Calling Instance MembersCalling Instance Members
E.E. Parameter PassingParameter Passing
F.F. StaticsStatics
G.G. CastingCasting
H.H. Comparison OperatorsComparison Operators
I.I. Determining the Class of an ObjectDetermining the Class of an Object
Review: DatatypesReview: Datatypes
Java has two kinds of datatypes:Java has two kinds of datatypes: PrimitivesPrimitives ObjectsObjects
Review: DatatypesReview: Datatypes
Ideally, all datatypes should be objects, Ideally, all datatypes should be objects, but some compromise was made for but some compromise was made for performance.performance.
Review: Classes and ObjectsReview: Classes and Objects
Class Class can be thought of as a template, a prototype or a blueprint can be thought of as a template, a prototype or a blueprint
of an objectof an object is the fundamental structure in object-oriented is the fundamental structure in object-oriented
programming programming
Two types of class members:Two types of class members: Attributes / Fields / PropertiesAttributes / Fields / Properties
specify the data types defined by the class Methods.Methods.
specify the operations
Review: Classes and Review: Classes and ObjectsObjects
Object Object An object is an An object is an instanceinstance of a class. of a class. Each object has its own data, even if they’re of the Each object has its own data, even if they’re of the
same class.same class. An instance must be created before you can call An instance must be created before you can call
its members.its members.
OOP in JavaOOP in Java
Java Fundamentals and Object-Oriented Java Fundamentals and Object-Oriented ProgrammingProgramming
The Complete Java Boot CampThe Complete Java Boot Camp
Object InstantiationObject Instantiation
To create an object or an instance of a class, we To create an object or an instance of a class, we use the use the newnew operator. operator.
For example, if you want to create an instance of For example, if you want to create an instance of the class Integer, we write the following code:the class Integer, we write the following code:
BigDecimal salary = new BigDecimal(“2600.00”);
reference
“new” operator
constructordata type of
reference
Object InstantiationObject Instantiation
The constructor The constructor A special method which instantiates an object, A special method which instantiates an object,
it has the same name as the class. Must be it has the same name as the class. Must be used with the “new” operator.used with the “new” operator.
Code for initialization of the object can be Code for initialization of the object can be found here. It can have initialization found here. It can have initialization parameters.parameters.
BigDecimal(“2600.00”);BigDecimal(“2600.00”);
Object InstantiationObject Instantiation
The The newnew operator operator allocates a memory location for that object allocates a memory location for that object
and returns a and returns a referencereference of that memory of that memory location to you. location to you.
ReferencesReferences
ReferenceReference Number pointing to a memory location.Number pointing to a memory location.
salary value = 2600.00
reference tothe BigDecimal
object
the BigDecimalobject
points to
ReferencesReferences
More than one reference can point to the More than one reference can point to the same object. same object.
BigDecimal salary = new BigDecimal(“2600.00”);BigDecimal mySalary = salary;BigDecimal hisSalary = salary;
salary value = 2600.00
hisSalary
mySalary
ReferencesReferences
A reference can also point to no object at A reference can also point to no object at all.all.
BigDecimal yourSalary = null;BigDecimal yourSalary = null;
yourSalary nullnull
ReferencesReferences
Using Using finalfinal on a reference on a reference Prevents the reference from changing
final char[] array = {‘d’, ‘o’, ‘g’};
array ‘d’ ‘o’ ‘g’won’t point elsewhere
ReferencesReferences
Using Using finalfinal on a reference on a reference Does not prevent the value of the object to
change.
array[1] = ‘i’;
array ‘d’ ‘i’ ‘g’won’t point elsewhere
Garbage CollectionGarbage Collection
When there are no more references to an When there are no more references to an object, it becomes ready for garbage object, it becomes ready for garbage collection.collection.
garbage collector
Garbage CollectionGarbage Collection
An object loses a reference when:An object loses a reference when: The reference goes out of scope.The reference goes out of scope. The reference is pointed to another object.The reference is pointed to another object. The reference is pointed to null.The reference is pointed to null.
if (a > b) { BigDecimal salary = new BigDecimal(“2600”);}// salary is now out of scope
Garbage CollectionGarbage Collection
An object loses a reference when:An object loses a reference when: The reference goes out of scope.The reference goes out of scope. The reference is pointed to another object.The reference is pointed to another object. The reference is pointed to null.The reference is pointed to null.
BigDecimal salary = new BigDecimal(“2600.00”); ...salary = new BigDecimal(“3000.00”); ...salary = null;
Calling Instance MembersCalling Instance Members
Once an object is instantiated, you can call Once an object is instantiated, you can call its members:its members:
BigDecimal salary = new BigDecimal(“2600.00”);BigDecimal tax = new BigDecimal(“0.32”);
BigDecimal deduction = salary.multiply(tax);BigDecimal takeHome =
salary.subtract(deduction);System.out.println(“my take-home pay: ” +
takeHome);
Calling Instance MembersCalling Instance Members
Once an object is instantiated, you can call Once an object is instantiated, you can call its members:its members:
int[] numbers = {1, 2, 3, 4, 5};int lengthOfArray = numbers.length;System.out.println(“The length of”
+ “ my array is: ” + lengthOfArray);
MethodsMethods
The following are characteristics of The following are characteristics of methods: methods: It can return one or no valuesIt can return one or no values It may accept as many parameters it needs or It may accept as many parameters it needs or
no parameter at all. Parameters are also called no parameter at all. Parameters are also called arguments.arguments.
After the method has finished execution, it After the method has finished execution, it goes back to the method that called it. goes back to the method that called it.
Parameter PassingParameter Passing
Pass-by-ValuePass-by-Value when a pass-by-value occurs, the method when a pass-by-value occurs, the method
makes a copy of the value of the variable makes a copy of the value of the variable passed to the method. The method cannot passed to the method. The method cannot modify the original argument even if it modifies modify the original argument even if it modifies the parameters during calculations.the parameters during calculations.
all all primitive data typesprimitive data types when passed to a when passed to a method are pass-by-value.method are pass-by-value.
Pass-by-ValuePass-by-Value
Parameter PassingParameter Passing
Pass-by-ReferencePass-by-Reference When a pass-by-reference occurs, the When a pass-by-reference occurs, the reference to an reference to an
objectobject is passed to the calling method. This means is passed to the calling method. This means that, the method makes a copythat, the method makes a copy of the reference of the reference of the of the variable passed to the method.variable passed to the method.
Unlike in pass-by-value, Unlike in pass-by-value, the method can modify the the method can modify the actual object that the reference is pointing toactual object that the reference is pointing to, , since, although different references are used in the since, although different references are used in the methods, the location of the data they are pointing to methods, the location of the data they are pointing to is the same.is the same.
Pass-by-ReferencePass-by-Reference
Pass-by-ReferencePass-by-Reference
Static MembersStatic Members
Static members Static members belong to the class as a wholebelong to the class as a whole, , not to a certain instance.not to a certain instance.
Members that can be invoked without Members that can be invoked without instantiating an object.instantiating an object.
Statics are part of Java’s non-OO nature (like Statics are part of Java’s non-OO nature (like primitives).primitives).
Static methods are distinguished from Static methods are distinguished from instance methods in a class definition by the instance methods in a class definition by the keyword keyword staticstatic..
Static MembersStatic Members
To call a static method, just type:To call a static method, just type:
Classname.staticMethodName(params);
To call a static variable, just type:To call a static variable, just type:
Classname.staticVaribleName;
Calling Static MembersCalling Static Members
Examples of static methods, we've used so Examples of static methods, we've used so far in our examples are, far in our examples are,
//prints data to screen System.out.println(“Hello world”);
//converts the String 10, to an integer int i = Integer.parseInt(“10”);
//Returns a String representation //of the integer argument as an //unsigned integer base 16 String hexEquivalent =
Integer.toHexString( 10 );
Calling Static MembersCalling Static Members
Examples of calling static variables:Examples of calling static variables:
// the “standard” output stream, typically// prints output to console PrintStream out = System.out;
// get the maximum possible value for// the Java int data type, 231 - 1int i = Integer.MAX_VALUE;
// Returns the file name separator for// operating system being used// “/” for UNIX and “\” for WindowsString fileNameSeparator = File.separator;
Static MembersStatic Members
Static methods are usually found in “Utility” classes – Static methods are usually found in “Utility” classes – classes that just hold routines for other classes:classes that just hold routines for other classes:
Math.round(int a) The Math class holds various mathematical routines.The Math class holds various mathematical routines. The “round” method rounds a floating point primitive to an The “round” method rounds a floating point primitive to an
integer.integer.
Arrays.sort(int[] a) The Arrays class holds various routines to work on arrays.The Arrays class holds various routines to work on arrays. The “sort” method sorts an array in ascending order. The “sort” method sorts an array in ascending order.
Static MembersStatic Members
Static variables are usually constants or environment Static variables are usually constants or environment properties.properties.
Integer.MAX_VALUE Returns the maximum value that the Java int data type can Returns the maximum value that the Java int data type can
hold, 2hold, 23131 – 1. – 1.
System.out Returns a PrintWriter to the standard output stream, usually Returns a PrintWriter to the standard output stream, usually
prints to console.prints to console.
File.separator Returns the file separator for the current operating system.Returns the file separator for the current operating system.
Casting ObjectsCasting Objects
Instances of classes can be cast into Instances of classes can be cast into instances of other classes, with one instances of other classes, with one restriction:restriction: The source and destination The source and destination classes must be related by inheritance; classes must be related by inheritance; one class must be a subclass of the other.one class must be a subclass of the other.
Casting objects is analogous to converting Casting objects is analogous to converting a primitive value to a larger type, some a primitive value to a larger type, some objects might not need to be cast objects might not need to be cast explicitly. explicitly.
Casting ObjectsCasting Objects
To cast, To cast,
(classname)object(classname)object
where,where, classnameclassname, , is the name of the destination class is the name of the destination class objectobject, , is a reference to the source objectis a reference to the source object
Casting Objects ExampleCasting Objects Example
The following example casts an instance of the class The following example casts an instance of the class VicePresident to an instance of the class Employee; VicePresident to an instance of the class Employee; VicePresident is a subclass of Employee with more VicePresident is a subclass of Employee with more information, which here defines that the VicePresident has information, which here defines that the VicePresident has executive washroom privileges.executive washroom privileges.
Employee emp = new Employee(); VicePresident veep = new VicePresident();
// no cast needed for upward use emp = veep;
// must cast explicitlyCasting veep = (VicePresident)emp;
Casting ObjectsCasting Objects
if you cast to a wrong type, JVM will throw if you cast to a wrong type, JVM will throw a “ClassCastException” (Exceptions will a “ClassCastException” (Exceptions will be discussed later.)be discussed later.)
OperatorsOperators
With the exception of the String class, all arithmetic and logical operators cannot be used with objects.
== and != work with objects, but they only test if two references are pointing to the same instance.
No other comparison operators work with objects.
Using Equality Operators with Using Equality Operators with ObjectsObjects
Example:Example:
Object o1 = new Object();Object o1 = new Object();
Object o2 = o1;Object o2 = o1;
o1 == o2o1 == o2 true true
Using Equality Operators with Using Equality Operators with ObjectsObjects
Example:Example:
Object o1 = new Object();Object o1 = new Object();
Object o2 = new Object();Object o2 = new Object();
o1 == o2o1 == o2 false false
Want to find out what an object's class is? Here's Want to find out what an object's class is? Here's the way to do it.the way to do it.
Suppose we have the following object:Suppose we have the following object:
SomeClassName key = new SomeClassName();
Now, we'll discuss two ways to know the type of Now, we'll discuss two ways to know the type of the object pointed to by the reference the object pointed to by the reference key..
Determining the Class of an Determining the Class of an ObjectObject
getClass() methodgetClass() method
The getClass() method returns a Class object (where Class is itself a class) that has a method called getName().
In turn, getName() returns a string representing the name of the class.
String name = key.getClass().getName();
instanceOf operatorinstanceOf operator
The instanceOf has two operands: a reference to an object on the left and a class name on the right.
The expression returns true or false based on whether the object is an instance of the named class or any of that class's subclasses.
boolean ex1 = "Texas" instanceof String; // trueObject pt = new Point(10, 10);boolean ex2 = pt instanceof String; // false
The EndThe End
Java Fundamentals and Object-Java Fundamentals and Object-Oriented ProgrammingOriented Programming
The Complete Java Boot CampThe Complete Java Boot Camp