data types in java
Post on 02-Jan-2016
90 Views
Preview:
DESCRIPTION
TRANSCRIPT
April 13, 1998 CS102-02 Lecture 3-1
Are You Java’s Type?
• Type: a set of values that are semantically similar
• Java is a strongly typed language– Every variable and every expression has a
type that is known at compile time.
– Strong typing helps detect errors at compile time.
April 13, 1998 CS102-02 Lecture 3-1
What’s the Role of Types?
• Types limit the:
– Values that a variable can hold or that an expression can produce
– Limit the operations supported on those values
– Determine the meaning of the operations.
April 13, 1998 CS102-02 Lecture 3-1
Java Types
• Primitive types– boolean
– numeric •Integral: byte, short, int, long, and char
•Floating-point: float and double
• Variables of primitive types hold the actual value
April 13, 1998 CS102-02 Lecture 3-1
Inside a Primitive Type• Actual values for integral types:
byte: -128 to 127
short: -32768 to 32767
int: -2147483648 to 2147483647
long: -9223372036854775808 to 9223372036854775807
char: from '\u0000' to '\uffff’ (from 0 to 65535)
• Why use int instead of long?
April 13, 1998 CS102-02 Lecture 3-1
Boolean Type
• boolean type represents a logical quantity with two possible values, indicated by the literals true and false
April 13, 1998 CS102-02 Lecture 3-1
Building a Boolean from a Number• Can’t say (why not?):if (x) System.out.println(“Congratulations, it’s a Boole!”);
• Convert an integer x (following the C language convention that any nonzero value is true):
if (x != 0) System.out.println(“Congratulations, it’s a Boole!”);
April 13, 1998 CS102-02 Lecture 3-1
Building a Boolean from an Object
• Object reference obj can be converted (any reference other than null is true): obj! = null
April 13, 1998 CS102-02 Lecture 3-1
The Other Kind of Type
• Reference types– Variables of reference types don’t hold
values, but references to values– Classes, interfaces and arrays are all
reference types
April 13, 1998 CS102-02 Lecture 3-1
A Graphical View
0010010
1110010
int counter
Airport midway
The data of the midway object
April 13, 1998 CS102-02 Lecture 3-1
Classes, Interfaces and Arrays, oh my!
• Classes we’ve already seen
• Interfaces are programming contracts– An interface is a set of constants and
methods– In Java, a class implements an interface
April 13, 1998 CS102-02 Lecture 3-1
Implementing an Interface• An example from the Comparison
applet:public class Comparison extends Applet implements ActionListener
• Comparison promises to do everything an ActionListener does
April 13, 1998 CS102-02 Lecture 3-1
Comparison Does What It Has To
• What does an ActionListener have to do?actionPerformed public abstract void actionPerformed(ActionEvent e)
• Provides an implementation for the interface:public void actionPerformed(ActionEvent e) { number1 = Integer.parseInt(input1.getText() );
number2 = Integer.parseInt(input2.getText() );
repaint();
}
April 13, 1998 CS102-02 Lecture 3-1
Comparison Object has Two Types
• Comparison is a class that implements an interface:
public class Comparison extends Applet implements ActionListener
April 13, 1998 CS102-02 Lecture 3-1
Interface Type Example
• From the Comparison applet:input2 = new TextField( 10 );
input2.addActionListener( this );
add( input2 ); // put input2 on applet
• What is addActionListener()?public synchronized void addActionListener(ActionListener l)
April 13, 1998 CS102-02 Lecture 3-1
Sideline Events• Events are things that happen to programs
(other than errors)// Process user's action on the input2
// text field
public void actionPerformed(ActionEvent e) {
number1 = Integer.parseInt( input1.getText() );
number2 = Integer.parseInt( input2.getText() );
repaint();
}
April 13, 1998 CS102-02 Lecture 3-1
Classes & Interfaces• Class type T can hold:
– Null reference
– Reference to an instance of class T or of any class that is a subclass of T.
• Interface type can hold:– Null reference
– Reference to any instance of any class that implements the interface.
April 13, 1998 CS102-02 Lecture 3-1
Array Types• If T is a primitive type, then a variable of type
"array of T"can hold:
– Null reference
– Reference to any array of type "array of T"
• If T is a reference type, then a variable of type "array of T" can hold:
– Null reference
– Reference to any array of type "array of S" such that type S is assignable to type T
April 13, 1998 CS102-02 Lecture 3-1
Object is the Root of All Java
• Variable of type Object can hold:– Null reference
– Reference to any object, whether class instance or array.
April 13, 1998 CS102-02 Lecture 3-1
Class Type
• Variables have types
• Objects (and arrays) don’t have a type, but belong to a class
• Usually we’ll consider them the same
April 13, 1998 CS102-02 Lecture 3-1
Casting Against Type• A value could be two different types
– Is 12 an int or a float?
• Compiler isn’t smart, so it’s conservative (signals an error)
• Override the compiler with a cast– Cast says: Treat this variable as the type I
say– To cast in Java, write:
(newType) variable
April 13, 1998 CS102-02 Lecture 3-1
Examples of casting
// Casting a float literal to a type int.
// Without the cast operator, this would be a
// compile-time error, because it’s a narrowing
// conversion:
int i = (int)12.5f;
// From class average applet (Figure 2.9)
if ( counter != 0 ) {
average = (double) total / counter;
System.out.println( "Class average is " + average );
} else ...
April 13, 1998 CS102-02 Lecture 3-1
Can’t Always Cast
• Can’t do this:if ((boolean) x) System.out.println(“Congratulations, it’s a Boole!”);
• Sometimes casts are automatic, and are called conversions
April 13, 1998 CS102-02 Lecture 3-1
One of Two Ways
• Create an expression in a context where the type of the expression is not appropriate and either:– Error at compile time (if statement has
any type other than boolean)– May be able to accept a type that is related
to the type of the expression
April 13, 1998 CS102-02 Lecture 3-1
Automatic Conversion• For convenience, Java performs an
implicit conversion– From the type of the expression to a type
acceptable for its surrounding context
• Kinds of conversions:– Identity, Widening primitive, Narrowing
primitive, Widening reference, Narrowing reference, String
April 13, 1998 CS102-02 Lecture 3-1
Funky Conversions• What does this print?
class Test {public static void main(String[] args) {
int big = 1234567890; float approx = big; System.out.println(big -(int)approx);}
}
top related