primitives in java java has eight primitive types –boolean –integral types: signed: long, int,...
Post on 19-Dec-2015
219 views
TRANSCRIPT
Primitives in Java
• Java has eight primitive types– boolean– integral types:
• signed: long, int, short, byte• unsigned: char
– floating point types: double, float• Values of the primitive types are not objects
– no properties– no capabilities
boolean
• values: true, false• operations:
– && “and”– || “or”– ! “not”
int
• values: 0, 1, -1, 2, -2, …• maximum int: 4294967295/2 (=232-1-1) fix this• minimum int: -4294967295/2 (=-232-1)• operations: + - * / %
5+2 = 7 +: (int,int) int5-2 = 3 -: (int,int) int5*2 = 10 *: (int,int) int5/2 = 2 (quotient) /: (int,int) int5%2 = 1 (remainder) %: (int,int) int
integral types’ representations
• representation used differs according to whether type is signed (byte, short, int, long) or unsigned (char):– signed integral values are represented using “two’s
complement” representation– unsigned integral values are represented using “binary”
representation• size of representation differs according to type:
– byte is 1 byte wide (1 byte = 8 bits)– short is 2 bytes wide– int is 4 bytes wide– long is 8 bytes wide
• main point: values of different types have different representations – you can’t “mix and match”!
types of operators for type int
• Notice that all of these operators take two int arguments, and produce an int result.
• There is hardware circuitry to perform these operations.
double
• values: 0.0, 1.0, -3.5, 3141.5926535e-3• inexact representation (!)• operations: + - * /
5.0 + 2.0 = 7.0 +: (double,double)double
5.0 – 2.0 = 3.0 -: (double,double)double
5.0 * 2.0 = 10.0 *: (double,double)double
5.0 / 2.0 = 2.5 /: (double,double)double
floating point types’ representation
• both double and float use the IEEE754 representation scheme
• size of representation differs according to type:– the representation of a float is 4 bytes wide– the representation of a double is 8 bytes wide
• main point: values of different types have different representations – you can’t “mix and match”!
mixing types in expressions
• Operators such as +, -, * and / are overloaded: the same name has many different values + overloaded as String concatenation too!“Good” + “ ” + “morning!” “Good morning!”
• What happens in an expression which mixes values of different types?5 + 2.5 = ????5 is coerced to its equivalent double value, 5.0:5.0 + 2.5 = 7.5
• Type coercion happens only from “smaller” type to “larger” type (e.g. int double, not double int)