Comp 110 Types
description
Transcript of Comp 110 Types
![Page 1: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/1.jpg)
COMP 110TYPES
Instructor: Jason Carter
![Page 2: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/2.jpg)
2
OBJECTS VS. PRIMITIVE TYPES Instances of classes and interfaces are objects All other values are primitives Primitive types are used to construct objects ~Atoms vs. molecules
![Page 3: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/3.jpg)
3
OBJECT TYPESABMICalculator
ABMISpreadsheet
![Page 4: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/4.jpg)
4
PRIMITIVE TYPES
int String
3 + 4 “three” + “four”3 – 4
…“three” – “four”
Overloaded operator
int and String are different types
![Page 5: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/5.jpg)
5
PRIMITIVE TYPES
int double
3 / 4 = 0 3.0 / 4.0 = 0.75
Overloaded arithmetic operator
![Page 6: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/6.jpg)
6
KINDS OF TYPES
types
Primitive types
Object types
double int
String ABMICalculator
ABMISpreadsheet
Lower case (by convention)
Upper case (by convention)
AnotherBMISpreadsheet
BMISpreadsheet
![Page 7: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/7.jpg)
7
ABSTRACT VALUE VS. SYNTAX
2.2
02.2
0.22+E1
LBS_IN_KGS
Representing the abstract value 2.2
![Page 8: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/8.jpg)
8
SYNTAX FOR INVOKING ABSTRACT OPERATION
profit - earnings
- earnings
Math.round(bmi)
binary, infix
uniary, prefix
arbitrary, method invocation
![Page 9: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/9.jpg)
9
TYPE RULES REGARDING ASSIGNMENT
double height = 1.77;
int weight = 70;
double height = 2;
int weight = 70.0;
double weight = “seventy”;
Type rules define which of these
are legal.
![Page 10: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/10.jpg)
10
PRIMITIVE TYPES Each primitive type defines:
Range of abstract values of the type Constants (literals & named constants) denoting
their values Operations (with invocation syntax) that can be
invoked on the values of that type What types can be assigned to variables of the type
![Page 11: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/11.jpg)
11
INT RANGE & CONSTANTS
Mathematical Integers {- … +}
int {-231 … +231 - 1}
32 bits
Integer.MIN_VALUE
Integer.MAX_VALUE
0 02
+22
-2
There are only 10 types of people in this world: those who read binary and those who don’t.
![Page 12: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/12.jpg)
12
DOUBLE RANGE & CONSTANTS
Mathematical Real Numbers
double
Double.MIN_VALUE
Double.MAX_VALUE
2.2 0.22
.202.20 2.
0.22E00.22E+
1
.22E1 .22E-1
eXy = x*10y mantissa exponent standard
2
64 bits
![Page 13: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/13.jpg)
13
OTHER INTEGER SUBSETS
Mathematical Integers {- … +}
8 bitsbyte {-27 .. 27 - 1}
Byte.MIN_VALUE Byte.MAX_VALUE
16 bitsshort {-215 .. 215 - 1}
Short.MIN_VALUE Short.MAX_VALUE
64 bitslong {-263 .. 263 - 1}
Long.MIN_VALUE Long.MAX_VALUE
![Page 14: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/14.jpg)
14
FLOAT SIZE & CONSTANTS
Mathematical Real Numbers
float {-231 … +231 - 1}
32 bits
Float.MIN_VALUE
Float.MAX_VALUE
.2
![Page 15: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/15.jpg)
15
MIXED ASSIGNMENT
long l = 70;
double d = 70.0;
double d = 70;
int
int long
Safe and automatically
converted
int double
![Page 16: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/16.jpg)
16
CAST
int i = 70.6;
float f = 70.6;
int double
Not automatically converted
float double
(int)
int i = 70;
(float)
cast
![Page 17: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/17.jpg)
17
ASSIGNMENT RULESTV TEv e
TE TV
TE TV
Narrower than
Widerthan
v = e
double d = 5;
v = (TV) e
int i = (int) 5.7;
! (TE TV || TE TV)
v = (TV) e
bool b = (bool) 5;
![Page 18: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/18.jpg)
18
ASSIGNMENT RULES FOR PRIMITIVE TYPES
If T1 narrower than T2 (Set of instances of T1 Set of instances of T2)
Expression of type T1 can be assigned to Variable of type T2
Expression of type T2 can be assigned to Variable of type T1 with cast
![Page 19: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/19.jpg)
19
ACTUAL PARAMETER ASSIGNMENT
double weight;
public void setWeight(double newWeight) {
weight = newWeight;}
setWeight(70);double newWeight =
70.0;Implicit
assignment
![Page 20: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/20.jpg)
20
ACTUAL PARAMETER ASSIGNMENT
int weight;
public void setWeight(int newWeight) {weight = newWeight;
}
setWeight(70.6);
int newWeight = 70.6; Implicit assignment
![Page 21: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/21.jpg)
21
ACTUAL PARAMETER ASSIGNMENT
int weight;
public void setWeight(int newWeight) {weight = newWeight;
}
setWeight((int)70.6);
![Page 22: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/22.jpg)
22
RETURNING A VALUE
double weight;
public int getIntWeight() {return weight;
}
![Page 23: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/23.jpg)
23
TRANSLATED INTO ASSIGNMENT
double weight;
public int getIntWeight() {int getIntWeight = weight;return getIntWeight;
}
Internal variable
![Page 24: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/24.jpg)
24
TRANSLATED INTO ASSIGNMENT
double weight;
public int getIntWeight() {return (int) weight;
}
![Page 25: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/25.jpg)
25
PRIMITIVE TYPES Constants (Literals & Named Constants) Assignment Rules Operations with Invocation Syntax
![Page 26: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/26.jpg)
26
INT ARITHMETIC OPERATIONS
Name
Action Operand & Result Type (Signature)
+ add int, int int- subtract int, int int- negate int int* multiply int, int int/ int quotient int, int int% int remainder int, int int
5/2 2 5%2 1
x == (x/y)*y x == (x/y)*y + (x%y)
![Page 27: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/27.jpg)
27
DOUBLE ARITHMETIC OPERATIONS
Name
Action Operand & Result Type (Signature)
+ add double, double double- subtract double, double double- negate double double* multiply double, double double/ int quotient double, double double
5.0/2.0 2.5
![Page 28: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/28.jpg)
28
OVERFLOW
Integer.MAX_VALUE + 1 Integer.MAX_VALUE
Integer.MIN_VALUE - 1 Integer.MIN_VALUE
(double) Integer.MIN_VALUE - 1.0 (double) (Integer.MIN_VALUE - 1.0)
Double.MAX_VALUE + 1 Double.MAX_VALUE
Double.MIN_VALUE - 1 Double.MIN_VALUE
![Page 29: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/29.jpg)
29
OVERFLOW
10/0 Exception
-10/0 Exception
10.0/0 Double.POSITIVE_INFINITY
-10.0/0 Double.NEGATIVE_INFINITY
0/0 Exception
0.0/0.0 Double.NaN
![Page 30: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/30.jpg)
30
INT OVERFLOW
![Page 31: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/31.jpg)
31
DOUBLE OVERFLOW
![Page 32: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/32.jpg)
32
MIXED OPERATIONS
5/2.0 5.0/2.0Narrower type converted
int i = (int) (5/2.0)
int i = (int) (5.0/2.0)
int i = (int) (2.5)
int i = 2
doube d = 5/(int)2.0
double d = 5/2
double d = 2
double d = 2.0
![Page 33: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/33.jpg)
33
STRONG VS. WEAK TYPING
“hello” - 1
int minus
Legal under weak typing“anything goes”
Illegal under strong typing“strict type rules”
![Page 34: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/34.jpg)
34
MISCELLANEOUS MATH OPERATIONSOperations
(invoked on Math) Signature
abs() double double, int intacos(), asin(), atan()
cos(), sin(), tan() double double
pow() double, double doubleexp(), log() double double
round() double longrandom(), pi() double
sqrt() double double
Math.pi() Math.pow(5, 3) 53 Math.round(5.9) 6
(int) 5.9 5 int i = (int) Math.Round(5.9) 6
![Page 35: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/35.jpg)
35
BOOLEAN CONSTANTS
true false
boolean
![Page 36: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/36.jpg)
36
RELATIONAL OPERATIONS
Name Action Signature of int
ImplementationSignature of double
Implementation== equal? int, int boolean double, double boolean!= not equal? int, int boolean double, double boolean> greater than? int, int boolean double, double boolean< less than? int, int boolean double, double boolean
>= greather than or equal? int, int boolean double, double boolean
<= less than or equal? int, int boolean double, double boolean
5 == 5 true5 == 4
false5 >= 4 true5 <= 4 false
5 != 5 false5 != 4 true
![Page 37: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/37.jpg)
37
BOOLEAN OPERATIONS
Name(s) Action Signature! not boolean boolean
&&, & and boolean, boolean boolean ||, | or boolean, boolean boolean
!true false
!false truetrue && true true
true && false false
false && true falsefalse && false false
true || true truetrue || false true
false || true truefalse || false false
![Page 38: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/38.jpg)
38
SHORT-CIRCUIT EVALUATION
false && (9654.34/323.13 > 32.34) false
true || (9654.34/323.13 > 32.34) false
Second operand not evaluated
Short-circuit evaluation
false & (9654.34/323.13 > 32.34) false
true| (9654.34/323.13 > 32.34) false
Second operand evaluated
Regular evaluation
Name(s) Action Signature! not boolean boolean
&&, & and boolean, boolean boolean ||, | or boolean, boolean boolean
![Page 39: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/39.jpg)
39
SHORT-CIRCUIT EVALUATIONName(s) Action Signature
! not boolean boolean &&, & and boolean, boolean boolean
||, | or boolean, boolean boolean
false && (10/0) false
false & (10/0)
An error in some programming
languages
![Page 40: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/40.jpg)
40
COMPLEX EXPRESSIONS
false && ( 10 / 0 )Sub-expression
false && ( 10 / 0 )
Operator evaluation
order?
![Page 41: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/41.jpg)
41
BOOLEAN VS. NUMBER EXPRESSIONS
hoursWorked > MAX_HOURSboolean overWorked =
True if hoursWorked is greater than MAX_HOURS and false
otherwise
int earnings = hourlyWage*hoursWorked + BONUS
![Page 42: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/42.jpg)
42
BOOLEAN PROPERTY
![Page 43: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/43.jpg)
43
BOOLEAN PROPERTY CODE
public boolean isOverWeight() {}
![Page 44: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/44.jpg)
44
BOOLEAN PROPERTY CODE (EDIT)
final double HIGH_BMI = 28;public boolean isOverWeight() { return getBMI() > HIGH_BMI;
}
![Page 45: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/45.jpg)
45
BOOLEAN PROPERTY CODE
private final double HIGH_BMI = 25;
public boolean isOverWeight() {return getBmi() > HIGH_BMI;
}
![Page 46: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/46.jpg)
46
BOOLEAN PROPERTY CODE
// declare in interfaceprivate final double HIGH_BMI = 25;
public boolean isOverWeight() {return getBmi() > HIGH_BMI;
}
![Page 47: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/47.jpg)
47
PREVENTING INVALID BMI
![Page 48: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/48.jpg)
48
ASSERTIONS Assert <Boolean Expression>
Statement can be inserted anywhere to state that some condition should be true
If condition is false, Java stops program and gives error message
Some products fail with message “internal assertion failed”
![Page 49: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/49.jpg)
49
HOW SHOULD WE CHANGE THE CLASS?
public class ABMISpreadsheet {double height, weight;
public ABMISpreadsheet(double theInitialHeight, double theInitialWeight) {setHeight ( theInitialHeight);setWeight( theInitialWeight);
}
public double getHeight() { return height; }public void setHeight(double newHeight) { height =
newHeight; }public double getWeight() { return weight; }public void setWeight(double newWeight) { weight =
newWeight; }public double getBMI() { return weight/(height*height); }
}
![Page 50: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/50.jpg)
50
CHECKING PRECONDITIONS
public class ABMISpreadsheet {double height, weight;
public ABMISpreadsheet(double theInitialHeight, double theInitialWeight) {setHeight ( theInitialHeight);setWeight( theInitialWeight);
}…public boolean preGetBMI() {
return weight > 0 && height > 0;}
public double getBMI() {assert (preGetBMI());return weight/(height*height);
}}
Precondition of method M() is preM()
![Page 51: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/51.jpg)
51
OBJECTEDITOR USES PRECONDITION
![Page 52: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/52.jpg)
52
OBJECTEDITOR USES PRECONDITION
![Page 53: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/53.jpg)
53
OBJECTEDITOR USES PRECONDITION
A method is disabled when its precondition not met
![Page 54: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/54.jpg)
54
ORIGINAL CLASS
public class ABMISpreadsheet {double height, weight;
public ABMISpreadsheet(double theInitialHeight, double theInitialWeight) {setHeight ( theInitialHeight);setWeight( theInitialWeight);
}…public boolean preGetBMI() {
return weight > 0 && height > 0;}
public double getBMI() {assert (preGetBMI());return weight/(height*height);
}}
![Page 55: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/55.jpg)
55
ORIGINAL CLASS (EDIT)public class ABMISpreadsheet {double height, weight;
double iH, iW;
public ABMISpreadsheet(double theInitialHeight, double theInitialWeight) {setHeight ( theInitialHeight);setWeight( theInitialWeight);
iH = theInitialHeight; iW = theInitialWeight;
}…public boolean preGetBMI() {
return weight > 0 && height > 0;}public double getBMI() {
assert (preGetBMI());return weight/(height*height);
} public boolean preRestoreHeightAndWeight() { return height != iH || weight != iW; } public void restoreHeightAndWeight() { setHeight(iH); setWeight(iW); }}
![Page 56: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/56.jpg)
56
public class ABMISpreadsheet {double height, weight;double initialHeight, initialWeight;
public ABMISpreadsheet(double theInitialHeight, double theInitialWeight) {setHeight ( theInitialHeight);setWeight( theInitialWeight);initialHeight = theInitialHeight;initialWeight = theInitialWeight;
}…public boolean preGetBMI() { return weight > 0 && height > 0; }public double getBMI() {
assert preGetBMI(); return weight/(height*height); }
public boolean preRestoreHeightAndWeight() {return height != initialHeight || weight != initialWeight; }
public void restoreHeightAndWeight() {assert preRestoreHeightAndWeight();height = initialHeight;weight = initialWeight;
}}
NEW CLASS
![Page 57: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/57.jpg)
57
public class ABMISpreadsheet {…public double getWeight() {
return weight;}public void setWeight(double newWeight) {
weight = newWeight;}…
}
PRECONDITIONS OF OTHER METHODS
![Page 58: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/58.jpg)
58
public class ABMISpreadsheet {…
public boolean preGetWeight() { return weight > 0; }
public double getWeight() {return weight;
}public boolean preSetWeight(double
newWeight) { return newWeight > 0; } public void setWeight(double newWeight) { assert (preSetWeight(newWeight));
weight = newWeight;}…
}
PRECONDITIONS OF OTHER METHODS (EDIT)
![Page 59: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/59.jpg)
59
public class ABMISpreadsheet {…public double preGetWeight() {return weight > 0;}public double getWeight() {
assert preGetWeight();return weight;
}public boolean preSetWeight (double newWeight) {
return newWeight > 0;}public void setWeight(double newWeight) {
assert preSetWeight(newWeight);weight = newWeight;
} …
}
PRECONDITIONS OF OTHER METHODS
Prevention of getter not needed if setter and constructor prevent assignment of illegal values
![Page 60: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/60.jpg)
60
EQUIVALENT CLASS
public class ABMISpreadsheet {…public double getWeight() {
return weight;}public boolean preSetWeight (double newWeight) {
return newWeight > 0;}public void setWeight(double newWeight) {
assert preSetWeight(newWeight);weight = newWeight;
} …
}
Prevention of getter not needed if setter and constructor prevent assignment of illegal values
![Page 61: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/61.jpg)
61
PRECONDITION STYLE RULE If there are constraints on the input of a method
M(…) that may not be met, write a precondition boolean method, preM(…) for it
Call the precondition method in an assert statement as the first statement of M(..)
To keep examples short, preconditions will not be shown in future examples
![Page 62: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/62.jpg)
62
OPERATOR PRECEDENCE
! - (T)* / &+ - < > <= >=== !=&|&&||
UnaryCast
false && 10 / 0 false && 10 / 0
- 5 - 4 - 5 - 4
!true && false !true && false
5 / 4 * 3 5 / 4 * 3
true || false == false || true
true || false == false || true
(int) 5 / 2.0 (int) 5 / 2.0
![Page 63: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/63.jpg)
63
OPERATOR PRECEDENCE (EDIT)
! - (T)* / &+ - < > <= >=== !=&|&&||
UnaryCast
false && 10 / 0 false && (10 / 0)
- 5 - 4 (- 5) - 4
!true && false (!true) && false
5 / 4 * 3 (5 / 4) * 3
true || false == false || true
true || ( false == false ) || true
(int) 5 / 2.0 (int) 5 / 2.0
![Page 64: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/64.jpg)
64
OPERATOR PRECEDENCE
! - (T)* / &+ - < > <= >=== !=&|&&||
UnaryCast
false && 10 / 0 false && ( 10 / 0 )
- 5 - 4 ( - 5 ) - 4
!true && false ( !true ) && false
5 / 4 * 3 ( 5 / 4 ) * 3
true || false == false || true
true || ( false == false ) || true
(int) 5 / 2.0 ( (int) 5 ) / 2.0
![Page 65: Comp 110 Types](https://reader035.fdocuments.us/reader035/viewer/2022070421/568161b4550346895dd17e20/html5/thumbnails/65.jpg)
65
PRINTING ARBITRARY EXPRESSIONS
System.out.println (2) Output: 2
System.out.println (2.0) Output: 2.0
System.out.println ((int) 2.0) Output: 2
System.out.println (5 > 0) Output: true