39
Data Types and Operations On Data Objective To understand what data types are The need to study data types To differentiate between primitive types and reference types To know the data range and storage requirements for each type To know the conditions for data conversion To know the permissible operations that can be performed on data To be able to evaluate expressions

Data Types and Operations On Datausers.cis.fiu.edu/~smithjo/classnotes_3xxxx/class... · Data Types and Operations On Data Objective • To understand what data types are • The

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Data Types and Operations On Datausers.cis.fiu.edu/~smithjo/classnotes_3xxxx/class... · Data Types and Operations On Data Objective • To understand what data types are • The

Data Types and Operations On Data

Objective

• To understand what data types are

• The need to study data types

• To differentiate between primitive types and reference types

• To know the data range and storage requirements for each type

• To know the conditions for data conversion

• To know the permissible operations that can be performed on data

• To be able to evaluate expressions

Page 2: Data Types and Operations On Datausers.cis.fiu.edu/~smithjo/classnotes_3xxxx/class... · Data Types and Operations On Data Objective • To understand what data types are • The

Data Types and Operations On Data

• Introduction

• Data Types

• Primitive Type

Integral Type

Floating Point Type

Character Type

Boolean Type

• Type Compatibility

• Reference Type

• Arithmetic Operator and Operations

• Arithmetic Expressions

• Relational Operator and Operations

• Relational Expressions

• Logical Operator and Operations

• Input and Output Operations

Page 3: Data Types and Operations On Datausers.cis.fiu.edu/~smithjo/classnotes_3xxxx/class... · Data Types and Operations On Data Objective • To understand what data types are • The

Data Types - Introduction

• The concept of data type is like what the bolts and nuts are to a piece of

machinery.

• It is impossible to write meaningful program, without understanding:

Data types, data values

The amount of memory required for each type of data, and

The permissible operations that can be performed on data

Page 4: Data Types and Operations On Datausers.cis.fiu.edu/~smithjo/classnotes_3xxxx/class... · Data Types and Operations On Data Objective • To understand what data types are • The

Data Types - Introduction

• Like anything else, conservation of the use of memory is important.

• Some former languages did not consider conserving memory.

• Most of them had only two ways to store numeric values:

int, for integers, and

float, for floating point values.

• Hence wasting memory, especially when storing small values ;

• The amount of memory for each value, large or small, is the same.

Page 5: Data Types and Operations On Datausers.cis.fiu.edu/~smithjo/classnotes_3xxxx/class... · Data Types and Operations On Data Objective • To understand what data types are • The

Introduction – Data Types

• In the first section we:

a) Study the fundamental data types in Java, and

b) how they relate to programming.

c) Focus on the operations that can be performed on each type.

• The second section introduces the reference type.

• This includes some of the fundamental Java classes, such as:

a) The String class

b) The Math class

c) The wrapper classes

Page 6: Data Types and Operations On Datausers.cis.fiu.edu/~smithjo/classnotes_3xxxx/class... · Data Types and Operations On Data Objective • To understand what data types are • The

The Fundamental Types

• We had established that data is vital to a program.

• It must be stored in primary memory for the processor to handle it.

• The Java specifies two broad categories of data types:

a) Primitive, and

b) Reference type

• Primitive types are atomic

• They cannot be decomposed into simpler types

• Reference types are constructed from:

a) Primitive types,

b) As well as from other reference types

Page 7: Data Types and Operations On Datausers.cis.fiu.edu/~smithjo/classnotes_3xxxx/class... · Data Types and Operations On Data Objective • To understand what data types are • The

Data Types

Data types

Primitive types Reference types

Integral types Floating Point

boolean

Integers

byte short int long float double

User defined classes

Java classes

char

Boolean types

Character

Page 8: Data Types and Operations On Datausers.cis.fiu.edu/~smithjo/classnotes_3xxxx/class... · Data Types and Operations On Data Objective • To understand what data types are • The

Primitive Types

• Primitive types are atomic

• There are three types – integral, floating point, and boolean

• Integral – they can be represented by an integer value

• There are two groups – integer and character

• Integer – byte, short, int, long

Page 9: Data Types and Operations On Datausers.cis.fiu.edu/~smithjo/classnotes_3xxxx/class... · Data Types and Operations On Data Objective • To understand what data types are • The

Integer Type

Data types Storage Required Range of Values

byte 8 bits (byte) -128 to +127

short 16 bits (2 bytes) -32,768 to +32,767

int 32 bits (4 bytes) -2,147,483,648 to +2,147,483,647

long 64 bits (8bytes) -9,223,372,036,854,775,808 to

+9,223,372,036,854,775,807

Page 10: Data Types and Operations On Datausers.cis.fiu.edu/~smithjo/classnotes_3xxxx/class... · Data Types and Operations On Data Objective • To understand what data types are • The

Floating Point Type

Data Type Storage required Range of Values

float 32 bits (4 bytes) -3.4 x 1038 to +3.4 x 1038

double 64 bits (8 bytes) -1.7 x 10308 to +1.7 x 10308

Page 11: Data Types and Operations On Datausers.cis.fiu.edu/~smithjo/classnotes_3xxxx/class... · Data Types and Operations On Data Objective • To understand what data types are • The

Storage Space

long

int

short

byte

Page 12: Data Types and Operations On Datausers.cis.fiu.edu/~smithjo/classnotes_3xxxx/class... · Data Types and Operations On Data Objective • To understand what data types are • The

Default Values

• Integer types – 0

• Floating point types – 0.0

Page 13: Data Types and Operations On Datausers.cis.fiu.edu/~smithjo/classnotes_3xxxx/class... · Data Types and Operations On Data Objective • To understand what data types are • The

Assignment Incompatibility

• Variables can be initialized wrongly

• This situation gives rise to syntax errors

• Consider the following statement:

int x = 2.0;

Configuration: j2sdk1.4.1_02 <Default>----

C:\chapter3\unicodeChar.java:5: possible loss of precision

found : double required: int

int x = 2.0;

^

1 error

Process completed

Page 14: Data Types and Operations On Datausers.cis.fiu.edu/~smithjo/classnotes_3xxxx/class... · Data Types and Operations On Data Objective • To understand what data types are • The

Assignment Incompatibility

• Consider the following statement:

short x = 150000;

• This gives rise to syntax error also.

Configuration: j2sdk1.4.1_02 <Default>----

C: \chapter3\unicodeChar.java:5: possible loss of precision

found : int required: short

short x = 150000;

^

1 error

Process completed

Page 15: Data Types and Operations On Datausers.cis.fiu.edu/~smithjo/classnotes_3xxxx/class... · Data Types and Operations On Data Objective • To understand what data types are • The

Assignment Incompatibility

Consider the following segment of code:

int x = 2;

byte y = x;

-----Configuration: j2sdk1.4.1_02 <Default>----

C:\istings\data_types\default_types.java:6: possible

loss of precision

found : int

required: byte

byte y = x;

^

1 error

Process completed.

Page 16: Data Types and Operations On Datausers.cis.fiu.edu/~smithjo/classnotes_3xxxx/class... · Data Types and Operations On Data Objective • To understand what data types are • The

Character type - char

• The character data type named char is :

Any printable symbol found on the keyboard, or

Certain sequence of characters called escape sequence. • In either case, it requires 16 bits (2 bytes) of memory to store the char value

• A char value can be represented decimal value in the range 0 to 65,536, or as

Unicode character in the range ‘\u0000” to ‘\uFFFF’

Data type Storage Required Range in Decimal Range in Unicode

char 16 bits (2 bytes) 0 to 65,536 \u0000 to \uFFFF

Page 17: Data Types and Operations On Datausers.cis.fiu.edu/~smithjo/classnotes_3xxxx/class... · Data Types and Operations On Data Objective • To understand what data types are • The

Boolean Type

• Java’s logical data type is called boolean.

• The set of values that represent the boolean data type is true and false.

• This data type is implemented when comparing primitive types.

• Boolean variables are declared the same way as other variables

• The default of a boolean variable is false • Consider the following statement

boolean x = 0;

Configuration: j2sdk1.4.1_02 <Default>----

C: \chapter3\unicodeChar.java:5: incompatible types

found : int required: boolean

boolean x = 0;

^

1 error

Process completed.

Page 18: Data Types and Operations On Datausers.cis.fiu.edu/~smithjo/classnotes_3xxxx/class... · Data Types and Operations On Data Objective • To understand what data types are • The

Operator and Operations on Data

• Computers are known as number crunching machines.

• To crunch numbers, they need to perform operations on the numbers

• Java has five types of operations to perform on primitive data values:

Arithmetic operations

Relational operations

Logical operations

Bit-wise operations, and

Bit-shift operations

• We will study the first three – Arithmetic, Relational and Logical operations

Page 19: Data Types and Operations On Datausers.cis.fiu.edu/~smithjo/classnotes_3xxxx/class... · Data Types and Operations On Data Objective • To understand what data types are • The

Arithmetic Operator and Operations

• Java defines five binary arithmetic operators: + - * / %

• They are used to form arithmetic expressions.

• The format of an arithmetic expression is:

operand operator operand;

• Operands are any valid identifier or numeric literal, and

• Operator is any of five arithmetic operators. See summarized below

Operator Name Algebraic form Example Result

+ Addition x + y 25 + 15 40

- Subtraction x – y 25 - 15 10

* Multiplication x * y 18 * 2 36

/ Division x / y 37 / 5 7

% Modulus operation x % y 37 % 5 2

Page 20: Data Types and Operations On Datausers.cis.fiu.edu/~smithjo/classnotes_3xxxx/class... · Data Types and Operations On Data Objective • To understand what data types are • The

The operator / vs %

• The operators (+ , - , * ) have the usual arithmetic meaning

• The operator ( / ), gives the quotient when applied to division

That is why: 37/5 = 7 , and not 7.4

• The operator ( % ), gives the remainder when applied to division

Hence, 37 % 5 = 2.

2

___________

35

7

375

2

___________

35

7

375

Page 21: Data Types and Operations On Datausers.cis.fiu.edu/~smithjo/classnotes_3xxxx/class... · Data Types and Operations On Data Objective • To understand what data types are • The

The operator / vs %

• If a task takes a worker 127 minutes to complete, how many hours and how

many minutes did it take the person to complete.

• If we were to program this, we would have to tell the computer precisely how

to carry out the calculation. That is:

The number of hours would be (127 / 60) 2 hours, and

The number of minutes would be (127 % 60) 7 minutes.

Page 22: Data Types and Operations On Datausers.cis.fiu.edu/~smithjo/classnotes_3xxxx/class... · Data Types and Operations On Data Objective • To understand what data types are • The

Example

• A small company wants you to write a program to figure out the number of

boxes needed to ship book orders without wasting space. They have four types

of boxes: extra large, large, medium and small, which can hold 25, 15, 5 and 1

book(s) respectively.

• Write a Java program that accepts the number of books to be shipped and

displays the number of boxes needed with their type. For example if the

company wants to ship 81 books your output should be 3 extra large boxes, 1

medium box and 1 small box.

Page 23: Data Types and Operations On Datausers.cis.fiu.edu/~smithjo/classnotes_3xxxx/class... · Data Types and Operations On Data Objective • To understand what data types are • The

Solution

• As before let us identify the elements of the problem

• Let us call the entity – PackingBooks

• No list the characteristics (attributes) of PackingBooks

Constants

Variables

• Constructor

• Operations

Methods

Page 24: Data Types and Operations On Datausers.cis.fiu.edu/~smithjo/classnotes_3xxxx/class... · Data Types and Operations On Data Objective • To understand what data types are • The

PackingBooks - Attributes

• Constants

Extra large box

Large box

Medium box

Small box

• Variables

books

extra large

large

medium

small

total_boxes

Page 25: Data Types and Operations On Datausers.cis.fiu.edu/~smithjo/classnotes_3xxxx/class... · Data Types and Operations On Data Objective • To understand what data types are • The

PackingBooks - Constructor

• The problem suggests only one

argument required – the

number of books

• PackingBooks( books)

Mutator Method

determineBoxes()

Accessor Methods

getExtraLargeBox()

getLargeBox()

getMediumBox()

getSmallBox()

getTotalBoxes()

Page 26: Data Types and Operations On Datausers.cis.fiu.edu/~smithjo/classnotes_3xxxx/class... · Data Types and Operations On Data Objective • To understand what data types are • The

Class PackingBooks

1. public class Packing

2. {

3. private static final int XTRA_LARGE_BOX = 25,

4. LARGE_BOX = 15,

5. MEDIUM_BOX = 5,

6. SMALL_BOX = 1;

7.

8. private int books;

9. private int xlarge, large, medium, small, total_boxes;

10.

11. public Packing(int books)

12. {

13. this.books = books;

14. }

Page 27: Data Types and Operations On Datausers.cis.fiu.edu/~smithjo/classnotes_3xxxx/class... · Data Types and Operations On Data Objective • To understand what data types are • The

Class PackingBooks – Mutator Method

15.

16. void determineBoxes()

17. {

18. xlarge = books/XTRA_LARGE_BOX;

19. books = books % XTRA_LARGE_BOX;

20.

21. large = books/LARGE_BOX;

22. books = books % LARGE_BOX;

23.

24. medium = books/MEDIUM_BOX;

25. small = books % MEDIUM_BOX;

26.

27. total_boxes = xlarge + large + medium + small;

28. }

Page 28: Data Types and Operations On Datausers.cis.fiu.edu/~smithjo/classnotes_3xxxx/class... · Data Types and Operations On Data Objective • To understand what data types are • The

Accessor Methods

27. int getXtraLargeBox()

28. {

29. return big;

30. }

31.

32. int getLargeBox()

33. {

34. return large;

35. }

36.

37. int getMediumBox()

38. {

39. return medium;

40. }

41.

42. int getSmallBox()

43. {

44. return small;

45. }

46. int getTotal()

47. {

48. return total_boxes;

49. }

50. }

Page 29: Data Types and Operations On Datausers.cis.fiu.edu/~smithjo/classnotes_3xxxx/class... · Data Types and Operations On Data Objective • To understand what data types are • The

Class PackingBooks – Test class

1. class TestPacking

2. {

3. public static void main(String [] arg)

4. {

5. Packing pack = new Packing(127);

6. pack.calculate();

7.

8. System.out.println(pack.getXLarge()

+ " extra large boxes\n"

+ pack.getLarge()

9. + " large boxes\n" + pack.getMedium()

10. + " medium boxes\n" + pack.getSmall()

11. + " small box\n" + pack.getTotal()

12. + " total boxes\n") ;

13. }

14. }

Page 30: Data Types and Operations On Datausers.cis.fiu.edu/~smithjo/classnotes_3xxxx/class... · Data Types and Operations On Data Objective • To understand what data types are • The

Integer Operations

Integer

oprations

Result

Example

Actual Result

Correct Result

int + int number too large 2147483647 + 53 -2147483596 2147483700

int - int

number too large -2147483647 - 53 2147483596 -2147483700

int * int

number too large 1000000000 * 500 1783793664 500000000000

int / int

Arithmetic Exception 125/0 ArithmeticException No correct result

int % int

Arithmetic Exception 125 % 0 ArithmeticException No correct result

Integer operations can produce erroneous results

Page 31: Data Types and Operations On Datausers.cis.fiu.edu/~smithjo/classnotes_3xxxx/class... · Data Types and Operations On Data Objective • To understand what data types are • The

Floating Point Operations

Floating -Point operations can produce erroneous results

Floating-Point Operations Results

float + float Infinity

float - float -Infinity

float * float Infinity

float / float Infinity

-float / float -Infinity

-float / 0.0 -Infinity

0.0/0.0 NaN

-float * float -Infinity

Modulus operation ( % ) Same as division

Page 32: Data Types and Operations On Datausers.cis.fiu.edu/~smithjo/classnotes_3xxxx/class... · Data Types and Operations On Data Objective • To understand what data types are • The

Evaluate Arithmetic expressions

2 + 3 – 4 + 5

2 + 3 – 4 + 5

5

1

6

In general, arithmetic expressions are evaluated from left to right

Page 33: Data Types and Operations On Datausers.cis.fiu.edu/~smithjo/classnotes_3xxxx/class... · Data Types and Operations On Data Objective • To understand what data types are • The

Evaluate Arithmetic expressions

• The order of evaluating an expression may be altered.

• Criteria

Parenthesize (sub-expressions) expressions have the highest priority.

Multiplication, division and modulus have next level of priority

Addition and subtraction have the lowest level of priority.

Page 34: Data Types and Operations On Datausers.cis.fiu.edu/~smithjo/classnotes_3xxxx/class... · Data Types and Operations On Data Objective • To understand what data types are • The

Evaluate Arithmetic expressions

2 + 3 – 4 * 5

2 + 3 – 4 * 5

20

5

-15

The operations * / % must be carried out before addition and subtraction

Page 35: Data Types and Operations On Datausers.cis.fiu.edu/~smithjo/classnotes_3xxxx/class... · Data Types and Operations On Data Objective • To understand what data types are • The

Evaluate Arithmetic expressions

2 + ( 3 – 4) * 5

2 + ( 3 – 4 ) * 5

-1

-5

-3

The parentheses must be carried out before + - * / %

Page 36: Data Types and Operations On Datausers.cis.fiu.edu/~smithjo/classnotes_3xxxx/class... · Data Types and Operations On Data Objective • To understand what data types are • The

Evaluate Arithmetic expressions

11 % 4 * 2 – 14/3 + (8 –2 * -3)

11 % 4 * 2 – 14 / 3 + ( 8 – 2 * -3 )

-6

14

3

6

4

2

16

Page 37: Data Types and Operations On Datausers.cis.fiu.edu/~smithjo/classnotes_3xxxx/class... · Data Types and Operations On Data Objective • To understand what data types are • The

Converting Algebraic Expression

s = s0 +v0t + ½ gt2

• s = s0 + v0 * t + g * t * t / 2.0;

or

• s = s0 + v0 * t +1.0/2 *g * t * t ;

or

• s = s0 + v0 * t +0.5 *g * t * t ;

or

• s = s0 + v0 * t + (float)1/2 *g * t * t ;

Page 38: Data Types and Operations On Datausers.cis.fiu.edu/~smithjo/classnotes_3xxxx/class... · Data Types and Operations On Data Objective • To understand what data types are • The

Centigrade =

1. class DataTypes

2. {

3. public static void main(String[] arg)

4. {

5. double fahrenheit = 42.0;

6. double centigrade = 5/9*(fahrenheit - 32.0);

7. System.out.println(centigrade);

8. }

9. }

9

)32(5 fahrenheit

Page 39: Data Types and Operations On Datausers.cis.fiu.edu/~smithjo/classnotes_3xxxx/class... · Data Types and Operations On Data Objective • To understand what data types are • The

The Fundamental Types

What will happen if you attempt to compile each of the following lines of code?

1. int x = 25.0;

2. float x = 1.0;

3. byte x = 130;

4. char x = 128;

5. boolean x = 1;