primitives in java java has eight primitive types –boolean –integral types: signed: long, int,...

8
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

Post on 19-Dec-2015

219 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Primitives in Java Java has eight primitive types –boolean –integral types: signed: long, int, short, byte unsigned: char –floating point types: double,

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

Page 2: Primitives in Java Java has eight primitive types –boolean –integral types: signed: long, int, short, byte unsigned: char –floating point types: double,

boolean

• values: true, false• operations:

– && “and”– || “or”– ! “not”

Page 3: Primitives in Java Java has eight primitive types –boolean –integral types: signed: long, int, short, byte unsigned: char –floating point types: double,

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

Page 4: Primitives in Java Java has eight primitive types –boolean –integral types: signed: long, int, short, byte unsigned: char –floating point types: double,

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”!

Page 5: Primitives in Java Java has eight primitive types –boolean –integral types: signed: long, int, short, byte unsigned: char –floating point types: double,

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.

Page 6: Primitives in Java Java has eight primitive types –boolean –integral types: signed: long, int, short, byte unsigned: char –floating point types: double,

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

Page 7: Primitives in Java Java has eight primitive types –boolean –integral types: signed: long, int, short, byte unsigned: char –floating point types: 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”!

Page 8: Primitives in Java Java has eight primitive types –boolean –integral types: signed: long, int, short, byte unsigned: char –floating point types: double,

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)