Top Banner
Data Types, Variables, and Arithmetic Java Java Methods Methods An Introduction to Object-Oriented Programming Maria Litvin Gary Litvin Copyright © 2003 by Maria Litvin, Gary Litvin, and Skylight Publishing. All rights reserved. TM int chapter = 6;
31

Data Types, Variables, and Arithmetic JavaMethods An Introduction to Object-Oriented Programming Maria Litvin Gary Litvin Copyright © 2003 by Maria Litvin,

Jan 05, 2016

Download

Documents

Jane Smith
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Data Types, Variables, and Arithmetic JavaMethods An Introduction to Object-Oriented Programming Maria Litvin Gary Litvin Copyright © 2003 by Maria Litvin,

Data Types, Variables, and Arithmetic

JavaJavaMethodsMethods

An Introductionto Object-Oriented Programming

Maria Litvin

Gary Litvin

Copyright © 2003 by Maria Litvin, Gary Litvin, and Skylight Publishing. All rights reserved.

TM

int chapter = 6;

Page 2: Data Types, Variables, and Arithmetic JavaMethods An Introduction to Object-Oriented Programming Maria Litvin Gary Litvin Copyright © 2003 by Maria Litvin,

6-2

Objectives: Review primitive data types

Learn how to declare fields and local variables

Learn about arithmetic operators, compound assignment operators, and increment / decrement operators

Learn how to avoid common mistakes in arithmetic

Page 3: Data Types, Variables, and Arithmetic JavaMethods An Introduction to Object-Oriented Programming Maria Litvin Gary Litvin Copyright © 2003 by Maria Litvin,

6-3

Variables A variable is a “named container”

that holds a value.

q = 100 - q;

means:

1. Read the current value of q

2. Subtract it from 100

3. Move the result back into q

count

5

mov ax,qmov bx,100sub bx,axmov q,bx

Page 4: Data Types, Variables, and Arithmetic JavaMethods An Introduction to Object-Oriented Programming Maria Litvin Gary Litvin Copyright © 2003 by Maria Litvin,

6-4

Variables (cont’d)

Variables can be of different data types: int, char, double, boolean, etc.

Variables can hold objects; then the type is the class of the object.

The programmer gives names to variables.

Names usually start with a lowercase letter.

Page 5: Data Types, Variables, and Arithmetic JavaMethods An Introduction to Object-Oriented Programming Maria Litvin Gary Litvin Copyright © 2003 by Maria Litvin,

6-5

Variables (cont’d) A variable must be declared before it can be

used: int count;

double x, y;

JButton go;

FallingCube cube;

String firstName;

Declarations

Type

Name(s)

Page 6: Data Types, Variables, and Arithmetic JavaMethods An Introduction to Object-Oriented Programming Maria Litvin Gary Litvin Copyright © 2003 by Maria Litvin,

6-6

Variables (cont’d) The assignment operator = sets the variable’s value:

A variable can be initialized in its declaration:

count = 5;x = 0;go = new JButton("Go");firstName = args[0];

Assignments

int count = 5;JButton go = new JButton("Go");String firstName = args[0];

Declarations with initialization

Page 7: Data Types, Variables, and Arithmetic JavaMethods An Introduction to Object-Oriented Programming Maria Litvin Gary Litvin Copyright © 2003 by Maria Litvin,

6-7

Variables (cont’d) Each variable has a scope — the area in

the source code where it is “visible.”

If you use a variable outside its scope, the compiler reports a syntax error.

Variables can have the same name. Caution: use only when their scopes do not intersect.

{ int k; ...}

{ int k; ...}

Page 8: Data Types, Variables, and Arithmetic JavaMethods An Introduction to Object-Oriented Programming Maria Litvin Gary Litvin Copyright © 2003 by Maria Litvin,

6-8

Fields vs. Local Variables

Fields are declared outside all constructors and methods.

Local variables are declared inside a constructor or a method.

Page 9: Data Types, Variables, and Arithmetic JavaMethods An Introduction to Object-Oriented Programming Maria Litvin Gary Litvin Copyright © 2003 by Maria Litvin,

6-9

Fields vs. Local Variables (cont’d) Fields are usually grouped together,

either at the top or at the bottom of the class.

The scope of a field is the whole class.

Page 10: Data Types, Variables, and Arithmetic JavaMethods An Introduction to Object-Oriented Programming Maria Litvin Gary Litvin Copyright © 2003 by Maria Litvin,

6-10

Fieldspublic class SomeClass{

}

Fields

Constructors and methods

public class SomeClass{

}

Scope

Scope

Fields

Constructors and methods

Page 11: Data Types, Variables, and Arithmetic JavaMethods An Introduction to Object-Oriented Programming Maria Litvin Gary Litvin Copyright © 2003 by Maria Litvin,

6-11

Local Variables Local variables are declared inside a constructor or a

method.

Local variables lose their values and are destroyed once the constructor or the method is exited.

The scope of a local variable is from its declaration down to the closing brace of the block in which it is declared.

Page 12: Data Types, Variables, and Arithmetic JavaMethods An Introduction to Object-Oriented Programming Maria Litvin Gary Litvin Copyright © 2003 by Maria Litvin,

6-12

Local Variables (cont’d)public class SomeClass{ ... public SomeType SomeMethod (...) {

{

} } ...}

Local variable declared

Local variable

Scope

Page 13: Data Types, Variables, and Arithmetic JavaMethods An Introduction to Object-Oriented Programming Maria Litvin Gary Litvin Copyright © 2003 by Maria Litvin,

6-13

Variables (cont’d)

Use local variables whenever appropriate; never use fields where local variables should be used.

Give prominent names to fields, so that they are DIFFERENT from local variables.

Use the same name for local variables that are used in similar ways in different methods (e.g., x, y for coordinates, count for a counter, i, k for indices, etc.).

Page 14: Data Types, Variables, and Arithmetic JavaMethods An Introduction to Object-Oriented Programming Maria Litvin Gary Litvin Copyright © 2003 by Maria Litvin,

6-14

Variables (cont’d)

Common mistakes:

public void SomeMethod (...){ int x; ... int x = 5; // should be: x = 5; ...

Variable declared twice — syntax error

Page 15: Data Types, Variables, and Arithmetic JavaMethods An Introduction to Object-Oriented Programming Maria Litvin Gary Litvin Copyright © 2003 by Maria Litvin,

6-15

Variables (cont’d)

Common mistakes:

private int cubeX;...public SomeClass(...) // constructor{ int cubeX = 5; // should be: cubeX = 5; ...

A field is overridden by a local variable; the value of the field cubeX remains unset

Page 16: Data Types, Variables, and Arithmetic JavaMethods An Introduction to Object-Oriented Programming Maria Litvin Gary Litvin Copyright © 2003 by Maria Litvin,

6-16

Primitive Data Types

int double char boolean

byte short long float

Used inJava Methods

Page 17: Data Types, Variables, and Arithmetic JavaMethods An Introduction to Object-Oriented Programming Maria Litvin Gary Litvin Copyright © 2003 by Maria Litvin,

6-17

Constants

'A', '+', '\n', '\t' // char

-99, 2010, 0 // int

0.75, -12.3, 8., .5 // double

new line

tab

Page 18: Data Types, Variables, and Arithmetic JavaMethods An Introduction to Object-Oriented Programming Maria Litvin Gary Litvin Copyright © 2003 by Maria Litvin,

6-18

Constants (cont’d)

private final int delay = 30;

private final double aspectRatio = 0.7;

Symbolic constants are initialized final variables:

Page 19: Data Types, Variables, and Arithmetic JavaMethods An Introduction to Object-Oriented Programming Maria Litvin Gary Litvin Copyright © 2003 by Maria Litvin,

6-19

Constants (cont’d)

Why use symbolic constants?

– easier to change the value throughout, if necessary

– easy to change into a variable– more readable, self-documenting code– additional data type checking

Page 20: Data Types, Variables, and Arithmetic JavaMethods An Introduction to Object-Oriented Programming Maria Litvin Gary Litvin Copyright © 2003 by Maria Litvin,

6-20

Arithmetic Operators: +, -, /, * , %

The precedence of operators and parentheses work the same way as in algebra.

m % n means the remainder when m is divided by n (e.g. 17 % 5 is 2).

% has the same rank as / and *

Same-rank binary operators are performed in order from left to right.

Page 21: Data Types, Variables, and Arithmetic JavaMethods An Introduction to Object-Oriented Programming Maria Litvin Gary Litvin Copyright © 2003 by Maria Litvin,

6-21

Arithmetic (cont’d)

The type of the result is determined by the types of the operands, not their values; this rule applies to all intermediate results in expressions.

If one operand is an int and another is a double, the result is a double; if both operands are ints, the result is an int.

Page 22: Data Types, Variables, and Arithmetic JavaMethods An Introduction to Object-Oriented Programming Maria Litvin Gary Litvin Copyright © 2003 by Maria Litvin,

6-22

Arithmetic (cont’d)

Caution: if a and b are ints, then a / b is truncated to an int…

17 / 5 gives 3 3 / 4 gives 0

…even if you assign the result to a double:

double ratio = 2 / 3;The double type of the result doesn’t help: ratio still gets the value 0.0.

Page 23: Data Types, Variables, and Arithmetic JavaMethods An Introduction to Object-Oriented Programming Maria Litvin Gary Litvin Copyright © 2003 by Maria Litvin,

6-23

Arithmetic (cont’d) To get the correct double result, use double

constants or the cast operator:

double ratio = 2.0 / 3;

double ratio = 2 / 3.0;

double factor = (double) m / (double) n;

double factor = m / (double) n;

double r2 = k / 2.0;

double r2 = (double) k / 2;

Casts

Page 24: Data Types, Variables, and Arithmetic JavaMethods An Introduction to Object-Oriented Programming Maria Litvin Gary Litvin Copyright © 2003 by Maria Litvin,

6-24

Arithmetic (cont’d) Caution: the range for ints is from

-231 to 231-1 (about -2·109 to 2·109)

Overflow is not detected by the Java compiler or interpreter

n = 8 10^n = 100000000 n! = 40320n = 9 10^n = 1000000000 n! = 362880n = 10 10^n = 1410065408 n! = 3628800n = 11 10^n = 1215752192 n! = 39916800n = 12 10^n = -727379968 n! = 479001600n = 13 10^n = 1316134912 n! = 1932053504n = 14 10^n = 276447232 n! = 1278945280

Page 25: Data Types, Variables, and Arithmetic JavaMethods An Introduction to Object-Oriented Programming Maria Litvin Gary Litvin Copyright © 2003 by Maria Litvin,

6-25

Arithmetic (cont’d)

Use compound assignment operators:

a = a + b; a += b;

a = a - b; a -= b;

a = a * b; a *= b;

a = a / b; a /= b;

a = a % b; a %= b;

Use increment and decrement operators:

a = a + 1; a++;

a = a - 1; a--;

Do not use these in larger expressions

Page 26: Data Types, Variables, and Arithmetic JavaMethods An Introduction to Object-Oriented Programming Maria Litvin Gary Litvin Copyright © 2003 by Maria Litvin,

6-26

Ramblecs Case Study Add a control panel with a speed gauge

Page 27: Data Types, Variables, and Arithmetic JavaMethods An Introduction to Object-Oriented Programming Maria Litvin Gary Litvin Copyright © 2003 by Maria Litvin,

6-27

Ramblecs (cont’d)

Now four classes:

Ramblecs (applet)

FallingCube cube

LetterPanel whiteboardControlPanel controlpanel

Page 28: Data Types, Variables, and Arithmetic JavaMethods An Introduction to Object-Oriented Programming Maria Litvin Gary Litvin Copyright © 2003 by Maria Litvin,

6-28

Ramblecs (cont’d)import java.awt.*;import javax.swing.*;

public class Ramblecs extends JApplet{ private ControlPanel controlpanel; private LetterPanel whiteboard;

public void init() { whiteboard = new LetterPanel(); whiteboard.setBackground(Color.white); controlpanel = new ControlPanel(whiteboard); Container c = getContentPane(); c.add(whiteboard, BorderLayout.CENTER); c.add(controlpanel, BorderLayout.EAST); }}

Ramblecs.java

Page 29: Data Types, Variables, and Arithmetic JavaMethods An Introduction to Object-Oriented Programming Maria Litvin Gary Litvin Copyright © 2003 by Maria Litvin,

6-29

Ramblecs (cont’d) /** * Control panel's drawing method */ public void paintComponent(Graphics g) { ... // Draw the gauge: int degrees = (int)(180.0 * speed / maxSpeed); g.setColor(Color.blue); g.fillArc(xGauge, yGauge, size, size, 0, 180); // full semicircle g.setColor(Color.red); g.fillArc(xGauge, yGauge, size, size, 180 - degrees, degrees); // slice on the left side: // from 180 - degrees to 180. ... }

ControlPanel.java

Page 30: Data Types, Variables, and Arithmetic JavaMethods An Introduction to Object-Oriented Programming Maria Litvin Gary Litvin Copyright © 2003 by Maria Litvin,

6-30

Review: What is a variable? What is the type of variable that holds an

object? What is meant by the scope of a variable? What is the scope of a field? What is the scope of a local variable? Is it OK to give the same name to variables

in different methods? Is it OK to give the same name to a field and

to a local variable of the same class?

Page 31: Data Types, Variables, and Arithmetic JavaMethods An Introduction to Object-Oriented Programming Maria Litvin Gary Litvin Copyright © 2003 by Maria Litvin,

6-31

Review (cont’d): What is the range for ints? When is a cast to double used? Given

double dF = 68.0;double dC = 5 / 9 * (dF - 32);

what is the value of dC? When is a cast to int used? Should compound assignment operators

be avoided?