data types in java

27
April 13, 1998 CS102-02 Lecture 3-1 Data Types in Java CS 102-02 Lecture 3-1 Java’s Central Casting

Upload: drake-olsen

Post on 02-Jan-2016

86 views

Category:

Documents


2 download

DESCRIPTION

Data Types in Java. Java’s Central Casting. CS 102-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. - PowerPoint PPT Presentation

TRANSCRIPT

April 13, 1998 CS102-02 Lecture 3-1

Data Types in Java

CS 102-02

Lecture 3-1

Java’s Central Casting

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);}

}

April 13, 1998 CS102-02 Lecture 3-1

Coming Attractions

• Arrays: Grouping related values together

• Back to objects for a bit