Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating,...
-
Upload
alexander-griffith -
Category
Documents
-
view
223 -
download
3
Transcript of Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating,...
![Page 1: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/1.jpg)
Chapter 5 © copyright Janson Industries 2014 1
Java Variables
▮ Types of variables
▮ Creating, modifying and displaying
▮ Comparing
▮ Converting between types
▮ TextField
Non-graded Assg
![Page 2: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/2.jpg)
Chapter 5 © copyright Janson Industries 2014 2
Variables
▮ Used to access data (and objects) in classes
▮ Variables are declared. That means defining the variable’s:
▮ Identifier (name)
▮ Type
▮ Java’s basic variable types are called Primitive Data Types
![Page 3: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/3.jpg)
Chapter 5 © copyright Janson Industries 2014 3
▮ Two types: Primitive & Referenced
▮ Primitive variables:▮ Hold a value
▮ Type names begin with lowercase letters
▮ Referenced variables:▮ Hold the storage location of an object
▮ Type names begin with uppercase letters
Variables
![Page 4: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/4.jpg)
Chapter 5 © copyright Janson Industries 2014 4
Primitive Data Types
▮ boolean: true or false (default is false)▮ char: single character, use single quotes ▮ byte: 8 bit whole number (-128 to 127)▮ short: 16 bit whole number (32,767 max)▮ int: 32 bit whole number (2**31 max)▮ long: 64 bit whole number ▮ float: floating point (7 decimal place max)▮ double: double precision (15 dec places)
![Page 5: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/5.jpg)
Chapter 5 © copyright Janson Industries 2014 5
Variable Name Rules
▮ Must begin with a character
▮ Can be made of letters, numbers, _, or $
▮ No▮ Special characters (%, #, @, etc.)▮ Spaces▮ Reserved words (new, class, static,
etc.)
▮ Are case sensitive!!
![Page 6: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/6.jpg)
Chapter 5 © copyright Janson Industries 2014 6
Defining and Assigning
▮ Primitive data type then variable name
▮ int numberOfDependents;
▮ char gender, maritalStatus;
▮ A value can be assigned when the variable is declared:▮float taxRate = .28;
▮ Or a value can be assigned later:▮ numberOfDependents = 2;
![Page 7: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/7.jpg)
Chapter 5 © copyright Janson Industries 2014 7
Values▮ Calculated values can be assigned
using standard operators: +, -, *, /. Ex:
▮ When dividing two integers, decimal remainder truncated
▮ Dividing float and integer, integer “promoted” to float
▮ Standard order of operator precedence
int counter;counter = counter + 1; counter++; ++counter;
![Page 8: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/8.jpg)
Chapter 5 © copyright Janson Industries 2014 8
Values▮ Use PRINT
System.out.print(“The answer is: ”);System.out.print(answer);
▮ Assuming answer is boolean with value of true, results in:
The answer is: true
▮ Or PRINTLN. Does a carriage return so
▮ To get same result
System.out.print(“The answer is: ”);System.out.print(answer);
System.out.println(“The answer is: ” + answer);
+ concatenates
text or variables
![Page 9: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/9.jpg)
Chapter 5 © copyright Janson Industries 2014 9
Pre/Post Inc/Decrement▮ Standalone Pre/Post expressions (+
+counter; counter++;) do the same thing
▮ Within a larger expression they are different
▮ Result is: Counter = 1
Counter = 2
Counter = 2
Counter = 3
int counter = 1;
System.out.println("Counter = " + counter);
System.out.println("Counter = " + ++counter);
System.out.println("Counter = " + counter++);
System.out.println("Counter = " + counter);
![Page 10: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/10.jpg)
Chapter 5 © copyright Janson Industries 2014 10
Pre/Post Inc/Decrement
▮ To do the same thing without Pre/Post expressions requires more coding
int counter = 1;
System.out.println("Counter = " + counter);
counter = counter + 1;
System.out.println("Counter = " + counter);
System.out.println("Counter = " + counter);
counter = counter + 1;
System.out.println("Counter = " + counter);
![Page 11: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/11.jpg)
Chapter 5 © copyright Janson Industries 2014 11
Values▮ Some math functions are performed with
java supplied methods not operators
▮ These methods are stored in the Math class
▮
▮ Math is part of java.lang package▮No need to import or declare Math
because java.lang automatically imported
▮ To invoke a static method▮Classname.methodName(parms)
![Page 12: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/12.jpg)
Chapter 5 © copyright Janson Industries 2014 12Look at documentation to see required parms
![Page 13: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/13.jpg)
Chapter 5 © copyright Janson Industries 2014 13
To raise 12 to the fourth power:
double answer; answer = Math.pow(12, 4);
![Page 14: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/14.jpg)
Chapter 5 © copyright Janson Industries 2014 14
Referenced Types
▮ String & StringBuffer are examples▮ StringBuffer provides more flexibility
when manipulating Strings
▮ Class name then variable name▮ String name, address, phoneNumber;▮ StringBuffer nameSB;
▮ Like primitives, you can assign a value when declaring the variable or assign a value later
![Page 15: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/15.jpg)
Chapter 5 © copyright Janson Industries 2014 15
Reference Types
▮ Have to create and assign an object to a reference variable
▮ Object created with the “new” keyword▮ String name = new String(“Joe”);▮ StringBuffer nameSB = new
StringBuffer(“Joe”);
▮ Alternative for String objects (not recommended)▮ String name = “Joe”;
![Page 16: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/16.jpg)
Chapter 5 © copyright Janson Industries 2014 16
Referenced Types
▮ You can declare a referenced variable for a class and then “instantiate” and assign the object to the variable
▮ Assuming Customer is a java class, the variable cust points to a Customer object that contains the values
Customer cust;
cust = new Customer(“Joe”, “1 Main St.”,
“Enid, OK 65654”);
![Page 17: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/17.jpg)
Chapter 5 © copyright Janson Industries 2014 17
For example: String
▮ If we set the value of a to Joe
▮ A String object with the text “Joe” is placed in memory and a = A1
▮ If we then set b to “Joe”, a 2nd String object with “Joe” is
placed in memory and b = B2
a = new String(“Joe”);
A B C
1 Joe
2 Joe
3
ab
![Page 18: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/18.jpg)
Chapter 5 © copyright Janson Industries 2014 18
For example: String▮ If we change the value of a
▮ A String object with the value “Art” is placed in memory
▮ a = C3 and the first Joe is not referenced
a = new String(“Art”);
A B C
1 Joe
2 Joe
3 Art
ab
![Page 19: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/19.jpg)
Chapter 5 © copyright Janson Industries 2014 19
String
▮ However if we define c as equal to a:
▮ c = C3
A B C
1 Joe
2 Joe
3 Art
abc
String c = a;
![Page 20: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/20.jpg)
Chapter 5 © copyright Janson Industries 2014 20
Strings▮ Are immutable (unchangeable)
▮ Assigning a new value to a String variable creates a new String object▮ It does not change any existing String object that the variable references
▮ There are now two String objects▮ One with the text “Art” the other “Joe”
String c = "Art";
c = “Joe”;
![Page 21: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/21.jpg)
Chapter 5 © copyright Janson Industries 2014 21
String▮ However, using the shortcut (i.e. not explicitly creating a new object) will not necessarily result in a
new object
▮ Only one object with text “Art”
▮ Two objects with text “Art”
String c = "Art";
String b = “Art”;
String c = "Art";
String b = new String(“Art”);
![Page 22: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/22.jpg)
Chapter 5 © copyright Janson Industries 2014 22
String▮ Even this…
▮ ..results in two objects with text “Art”
▮ Beware of the shortcut
▮ This is also why StringBuffers are better▮ Their value can be changed (more on this later)
String b = new String(“Art”);
String c = "Art";
![Page 23: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/23.jpg)
Chapter 5 © copyright Janson Industries 2014 23
Reference Variables
▮ If two Customer variables created as follows:
▮ How many objects are there?Customer cust1 = new Customer(“Walmart”);
Customer cust2 = new Customer(“Walmart”);
![Page 24: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/24.jpg)
Chapter 5 © copyright Janson Industries 2014 24
Reference Variables
▮ 2 objects exist
A B C
1 Walmart
2
3 Walmart
cust1 cust2
![Page 25: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/25.jpg)
Chapter 5 © copyright Janson Industries 2014 25
Reference Variables
▮ If the following statements are also executed:
▮ How many objects are there?
▮ How many objects are referenced?cust1 = new Customer(“Target”);
cust2.setCustName(“Sam’s”);
![Page 26: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/26.jpg)
Chapter 5 © copyright Janson Industries 2014 26
Reference Variables
▮ 3 objects exist, 2 are referenced
▮ For an alternative explanation of variables:
▮ http://www.javaranch.com/campfire/StoryCups.jsp
A B C
1 Walmart
2 Target
3 Sam’s
cust1 cust2
![Page 27: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/27.jpg)
Chapter 5 © copyright Janson Industries 2014 27
Null Pointer Exception
A B C
2 Target
3
cust1 cust2
Customer cust1, cust2;
cust1 = new Customer(“Target”);
cust2.setCustName(“Sam’s”);
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at packageName.className.methodName(fileName.java:lineNumber)
▮ Occurs when using a reference variable that is not assigned to an object (pointer is null)
![Page 28: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/28.jpg)
Chapter 5 © copyright Janson Industries 2014 28
Primitive Variables ▮ Defining these two integers:
▮ Results in a memory allocation of:int a = 1; int b = 2;
A B C
1 1
2 2
3
![Page 29: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/29.jpg)
Chapter 5 © copyright Janson Industries 2014 29
Primitives
▮ If we change the value of a
▮ The value 1 is replaced with 3
a = 3;
A B C
1 3
2 2
3
![Page 30: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/30.jpg)
Chapter 5 © copyright Janson Industries 2014 30
Referenced Types
▮ Proof: Printing Customer variable c would result in memory address (hash code)Customer c = new Customer();
c.setContactPerson("Joe Samaritan");
c.setContactPhone("555-3333");
c.setCustName("Kindness Foods");
c.setShipToStreet("1 Milk of St.");
c.setShipToCity("Human");
c.setShipToState("ME");
c.setShipToZip("03234");
System.out.println(c);
![Page 31: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/31.jpg)
Chapter 5 © copyright Janson Industries 2014 31
![Page 32: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/32.jpg)
Chapter 5 © copyright Janson Industries 2014 32
Why address?
▮ Because that is the value of the reference variable▮ If you wanted to see the Customers name,
use c.getName()
▮ Actually the Customer object's toString method is invoked when println executed▮ “Hey, we didn’t code a Customer.toString()
method!”▮ toString inherited from Object class▮ Object.toString returns address of an object
![Page 33: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/33.jpg)
Chapter 5 © copyright Janson Industries 2014 33
We’ll prove it!
![Page 34: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/34.jpg)
Chapter 5 © copyright Janson Industries 2014 34
In Customer, click Source, then Override/Implement Methods
Click toString and specify it as the first method
after the class variables, then click OK
![Page 35: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/35.jpg)
Chapter 5 © copyright Janson Industries 2014 35
Inserts new toString method that calls Object's (the superclass’) toString method
![Page 36: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/36.jpg)
Chapter 5 © copyright Janson Industries 2014 36
We’ll change to return customer name
![Page 37: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/37.jpg)
Chapter 5 © copyright Janson Industries 2014 37
When we run CustApp and print the Customer variable c
Try it: change Customer and CustApp
![Page 38: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/38.jpg)
Chapter 5 © copyright Janson Industries 2014 38
Another Example
ObjecttoString
PersontoString
NametoString
Person is an objectName is an objectPerson has a name
is a is a
has a
![Page 39: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/39.jpg)
Chapter 5 © copyright Janson Industries 2014 39
Inheritance Example
// Name.java
public class Name extends Object {
String first;
String last;
String middle;
public Name(String f, String l)
{ first = f; last = l; middle = “ “;}
public Name(String f, String l, String m)
{ first = f; last = l; middle = m; }
}
▮ We’ll create classes called Name and Person
Method Overloading
![Page 40: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/40.jpg)
Chapter 5 © copyright Janson Industries 2014 40
Example
// Person.java
public class Person extends Object { int age; Name name;
public Person() { age = 0; }
public Person(int a, String f, String l) { name = new Name(f, l);
age = a; }
public Person(int a, String f, String l, String m){name = new Name(f, l, m);age = a;
} }
Person “has a” name
Person “is an”object
![Page 41: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/41.jpg)
Chapter 5 © copyright Janson Industries 2014 41
Example
▮ PersonFrame will instantiate 3 Person objects// PersonFrame.java
import java.awt.*;
import java.awt.event.*;
public class PersonFrame extends Frame implements WindowListener, ActionListener {
Button showButton = new Button("Show");
Label outputLabel1 = new Label();
Label outputLabel2 = new Label();
Label outputLabel3 = new Label();
Person newPerson1 = new Person(32, "John", "Smith");
Person newPerson2 = new Person(27, "Mary", "Jones", “Jo");
Person newPerson3 = new Person(42, "John", "Public", "Q");
![Page 42: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/42.jpg)
Chapter 5 © copyright Janson Industries 2014 42
public PersonFrame()
{ setLayout(null); this.setSize(500, 400);
showButton.setBounds(275,300,50,25);
outputLabel1.setBounds(112,200,350,15);
outputLabel2.setBounds(112,215,350,15);
outputLabel3.setBounds(112,230,350,15);
add(showButton); this.setVisible(true);
showButton.addActionListener(this);
addWindowListener(this);
add(outputLabel1);add(outputLabel2);add(outputLabel3); }
public void actionPerformed(ActionEvent e) {
outputLabel1.setText("The new person is: " + newPerson1);
outputLabel2.setText("The new person is: " + newPerson2);
outputLabel3.setText("The new person is: " + newPerson3);
} Uses the default toString method to display
Example
![Page 43: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/43.jpg)
Chapter 5 © copyright Janson Industries 2014 43
public void windowActivated(WindowEvent e) {}
public void windowClosed(WindowEvent e) {}
public void windowClosing(WindowEvent e) {
this.dispose();
}
public void windowDeactivated(WindowEvent e) {}
public void windowDeiconified(WindowEvent e) {}
public void windowIconified(WindowEvent e) {}
public void windowOpened(WindowEvent e) {}
public static void main(String args[]) {
PersonFrame pf = new PersonFrame();
}
}
Example
![Page 44: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/44.jpg)
Chapter 5 © copyright Janson Industries 2014 44
Example
PersonFrame Person Name
PersonFrame has a Person object (actually 3)Person has a Name object
When we run PersonFrame and click the button...
has a
has a
![Page 45: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/45.jpg)
Chapter 5 © copyright Janson Industries 2014 45
Yuck!
Referenced variables hold an address not info!
![Page 46: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/46.jpg)
Chapter 5 © copyright Janson Industries 2014 46
Example
▮ We’ll override the inherited toString functions for both Name and Person
//Name
: : :
public String toString() {
if (middle.equals(" ")) return ( first + " " + last);
else if (middle.length() == 1) return (first + " " + middle + ". " + last);
else return (first + " " + middle + " " + last);}
//Person
: : :
public String toString() {
return (name + ". Who is " + age + " years old." );}
![Page 47: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/47.jpg)
Chapter 5 © copyright Janson Industries 2014 47
Example
public void actionPerformed(ActionEvent e) {
outputLabel1.setText("The new person is: " + newPerson1);
outputLabel2.setText("The new person is: " + newPerson2);
outputLabel3.setText("The new person is: " + newPerson3);
} }
▮ Now when we try to print the newPerson variables:
▮ The Object class’ toString method (which would print out the address) is overridden by the Person toString method
![Page 48: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/48.jpg)
Chapter 5 © copyright Janson Industries 2014 48
Example
▮ The Person toString method tries to concatenate the Name object
▮ Fortunately, we overrode the Object class’ toString method in the Name class also
//Person
: : :
public String toString() {
return (name + ". Who is " + age + " years old." ) ; }
![Page 49: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/49.jpg)
Chapter 5 © copyright Janson Industries 2014 49
Better?
![Page 50: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/50.jpg)
Chapter 5 © copyright Janson Industries 2014 50
Example
▮ We overrode (the inherited) Object class' toString method by defining toString methods for both Person and Name
▮ We accessed the Person and Name classes' toString methods in PersonFrame through composition (i.e. PersonFrame “has a” Person)
![Page 51: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/51.jpg)
Chapter 5 © copyright Janson Industries 2014 51
Example
▮ In PersonFrame (specialized type of Frame, aka a subclass of Frame) we created 3 instances/objects of type Person:
▮ In Person, we created an instance/object of type Name
Person newPerson1 = new Person(32, "John", "Smith");
Person newPerson2 = new Person(27, "Mary", "Jones", “Jo");
Person newPerson3 = new Person(42, "John", "Public", "Q");
name = new Name(f, l);
![Page 52: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/52.jpg)
Chapter 5 © copyright Janson Industries 2014 52
Inheritance Example
ObjecttoString
PersontoString
NametoString
Person is an Object (subclass of Object)Name is an Object (subclass of Object)
Both inherited toString
is a is a
![Page 53: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/53.jpg)
Chapter 5 © copyright Janson Industries 2014 53
Inheritance Example
Frame is a Component (subclass of Component)PersonFrame is a Frame (subclass of Frame)
Frame inherits setLayout, what does PersonFrame inherit?
is a
is a
ComponentsetLayout
PersonFramesetLayout getTitle
Frame setLayout getTitle
![Page 54: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/54.jpg)
Chapter 5 © copyright Janson Industries 2014 54
Composition Example
PersonFrame Person Name
PersonFrame has a PersonPerson has a Name
PersonFrame invokes Person's toString method
Person invokes Name's toString method
has a
has a
![Page 55: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/55.jpg)
Chapter 5 © copyright Janson Industries 2014 55
Comparison Operators▮ < less than▮ > greater than▮ >= greater than or equal to▮ <= less than or equal to▮ == equal▮ != not equal
▮ Order of precedence: relational then
equality
Relational
Operators
EqualityOperators
![Page 56: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/56.jpg)
Chapter 5 © copyright Janson Industries 2014 56
Comparison Operators
▮ Comparisons result in a boolean value (true or false)
▮ You can assign the result of a comparison to a boolean variable
boolean isOvertime = (hours > 40);
![Page 57: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/57.jpg)
Chapter 5 © copyright Janson Industries 2014 57
Converting Types
▮ Primitives can be converted to a larger type by simply equating/assigning it
▮ To convert from larger to smaller, use a “cast” operationlong a; int b = 1; char c = ‘2’;
a = b;
b = c;
![Page 58: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/58.jpg)
Chapter 5 © copyright Janson Industries 2014 58
Casting
▮ Converts a larger primitive type to a smaller primitive type
▮ General syntax:
type1Variable = (type1Name) type2Variable
long a; int b = 1; char c = ‘2’;
b = (int)a;
c = (char)b;
![Page 59: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/59.jpg)
Chapter 5 © copyright Janson Industries 2014 59
Primitives to Strings
long a = 1;
int b = 2;
char c = ‘c’;
String d, e, f;
d = String.valueOf(a);
e = String.valueOf(b);
f = String.valueOf(c);
▮ Casting and = do not work
▮ String class has static methods (.valueOf) that convert many primitives to strings
![Page 60: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/60.jpg)
Chapter 5 © copyright Janson Industries 2014 60
▮ Use the String valueOf methods to convert primitive types to Strings
▮ Notice no byte valueOf
![Page 61: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/61.jpg)
Chapter 5 © copyright Janson Industries 2014 61
Converting Types
▮ There are also a series of “Wrapper” classes for primitives
▮ Wrapper classes contain useful methods for manipulating primitives
byte Byteint Integerdouble Double : : : :
![Page 62: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/62.jpg)
Chapter 5 © copyright Janson Industries 2014 62
▮ For example, each “Wrapper” class has a toString method that does the same thing as String’s valueOf
![Page 63: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/63.jpg)
Chapter 5 © copyright Janson Industries 2014 63
long a = 1;
int b = 2;
char c = ‘c’;
String d, e, f;
d = Long.toString(a);
e = Integer.toString(b);
f = Character.toString(c);
Primitives to Strings
![Page 64: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/64.jpg)
Chapter 5 © copyright Janson Industries 2014 64
Strings to Primitives
▮ The parseXXX methods (of each Wrapper class) convert Strings to primitive types
int a;
long b;
String c = “1”;
a = Integer.parseInt(c);
b = Long.parseLong(c);
![Page 65: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/65.jpg)
Chapter 5 © copyright Janson Industries 2014 65
Strings to Chars
▮ Use a String method called .charAt(#)
▮ A is set to 1
char a;
String c = “123”;
a = c.charAt(0);
![Page 66: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/66.jpg)
Chapter 5 © copyright Janson Industries 2014 66
Converting between types
▮ Assuming int a, double b, String c
LargerPrimitiv
e
SmallerPrimitiv
eb = a;
SmallerPrimitiv
e
LargerPrimitiv
ea = (int) b;
StringPrimitive
c = String.valueOf(a);c = Double.toString(b);
Primitive
Stringa = Integer.parseInt(c);
![Page 67: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/67.jpg)
Chapter 5 © copyright Janson Industries 2014 67
GUI Interface Components
▮ TextField: entry field to hold and display text defined by the programmer or user
▮ Usually used in conjunction with a label that defines the text to be entered
![Page 68: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/68.jpg)
Chapter 5 © copyright Janson Industries 2014 68
Defining Components
▮ As always, must import classes (not shown) then define the components:
▮ Then add to the frame:
Label custNameLabel = new Label("Enter the customer name:");TextField custNameTF = new TextField(25);Label custAddrLabel = new Label("Enter the customer address:");TextField custAddrTF = new TextField(25);
add(custNameLabel); add(custNameTF); add(custAddrLabel);add(custAddrTF);
![Page 69: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/69.jpg)
Chapter 5 © copyright Janson Industries 2014 69
Defining Properties
▮ Of course you will want to define their properties (e.g. text) either when created
▮ Or after creating using the “setters”
Label custNameLabel = new Label("Enter the customer name:");
Label custNameLabel = new Label();: : : : : :custNameLabel.setText(“Enter the customer name:”);
![Page 70: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/70.jpg)
Chapter 5 © copyright Janson Industries 2014 70
Positioning▮ To set position, turn off the default layout
scheme:
▮ Specify the components size and location with either the setSize and setLocation methods or the setBounds method
setLayout(null);
custNameLabel.setSize(160,10); custNameLabel.setLocation(5,35); custNameTF.setSize(200,20); custNameTF.setLocation(162,30); custAddrLabel.setBounds(5,100,75,75);custAddrTF.setBounds(162,100,75,75);
![Page 71: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/71.jpg)
Chapter 5 © copyright Janson Industries 2014 71
Positioning
custNameLbl.setSize(155,10);custNameTF.setSize(200,20); custNameTF.setLocation(162,30);
custAddrLb.setBounds(5,100,75,75);
custAddrTF.setBounds(162,100,75,75);
custNameLbl.setLocation(5,35);
![Page 72: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/72.jpg)
Chapter 5 © copyright Janson Industries 2014 72
Defining Components▮ Lots of other commonly set properties:
▮ Alignment▮ Font style▮ Font size
setLayout(null);Label l1 = new Label("stuff"); l1.setBounds(15,50,155,20); Label l2 = new Label("stuff", Label.RIGHT); l2.setBounds(15,80,155,20); Label l3 = new Label("stuff");l3.setAlignment(Label.CENTER); l3.setBounds(15,110,155,20); add(l1); add(l2); add(l3);
How does label know “stuff” is text
not a variable?
![Page 73: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/73.jpg)
Chapter 5 © copyright Janson Industries 2014 73
Putting it all together in a new visual class called Sale
![Page 74: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/74.jpg)
Chapter 5 © copyright Janson Industries 2014 74
Change size to 300, 229 and layout to null
![Page 75: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/75.jpg)
Chapter 5 © copyright Janson Industries 2014 75
Defined 5 labels, 4 text fields, and 1 buttonRename, align
Enable Close button - How? (Hint: 2 steps)
![Page 76: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/76.jpg)
Chapter 5 © copyright Janson Industries 2014 76
When data is entered and the calc button is clicked, the total should be calculated and displayed (as above) and the text
fields blanked out
![Page 77: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/77.jpg)
Chapter 5 © copyright Janson Industries 2014 77
Non-graded Exercise
▮ Need three primitives to hold qty, price and cost
▮ When button clicked:
▮ Retrieve qty and price, calculate cost with a 6.5% sales tax
▮ Build result message and place in result label
▮ Blank out other text fields
▮ What method holds this logic?
![Page 78: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/78.jpg)
Chapter 5 © copyright Janson Industries 2014 78
Non-graded Exercise
qty = Integer.parseInt(qtyTF.getText());
price = Double.parseDouble(priceTF.getText());
cost = price * qty * 106.5;
msgLbl.setText("The cost of this " +
"transaction is: $" + cost);
custNameTF.setText("");
itemNameTF.setText("");
qtyTF.setText("");
priceTF.setText("");
Sale saleTest = new Sale();
private int qty;
private double price, cost;
![Page 79: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/79.jpg)
Chapter 5 © copyright Janson Industries 2014 79
Non-graded Exercise
▮ If tested now nothing appears: why?
▮ If run and press button nothing happens: why?
▮ If price and qty entered, get wrong result: why?
![Page 80: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/80.jpg)
Chapter 5 © copyright Janson Industries 2014 80
![Page 81: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/81.jpg)
Chapter 5 © copyright Janson Industries 2014 81
![Page 82: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/82.jpg)
Chapter 5 © copyright Janson Industries 2014 82
Non-graded Assg
▮ Export Sale.java
▮ Send as an email attachment to [email protected]
![Page 83: Chapter 5© copyright Janson Industries 20141 Java Variables ▮ Types of variables ▮ Creating, modifying and displaying ▮ Comparing ▮ Converting between.](https://reader036.fdocuments.net/reader036/viewer/2022062722/56649f285503460f94c40272/html5/thumbnails/83.jpg)
Chapter 5 © copyright Janson Industries 2014 83
Points to Remember
▮ Primitive variables contain a value
▮ Referenced variables contain an address
▮ Use toString(), casting, and Wrapper class methods to convert between types
▮ TextFields can be used for input and output