Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


Presentation on theme: "Data Types, Variables, and Arithmetic JavaMethods An Introduction to Object-Oriented Programming Maria Litvin Gary Litvin Copyright © 2003 by Maria Litvin,"— Presentation transcript:

1 Data Types, Variables, and Arithmetic JavaMethods 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;

2 6-2 Objectives: l Review primitive data types l Learn how to declare fields and local variables l Learn about arithmetic operators, compound assignment operators, and increment / decrement operators l Learn how to avoid common mistakes in arithmetic

3 6-3 Variables l 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,q mov bx,100 sub bx,ax mov q,bx

4 6-4 Variables (cont’d) l Variables can be of different data types: int, char, double, boolean, etc. l Variables can hold objects; then the type is the class of the object. l The programmer gives names to variables. l Names usually start with a lowercase letter.

5 6-5 Variables (cont’d) l 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)

6 6-6 Variables (cont’d) l The assignment operator = sets the variable’s value: l 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

7 6-7 Variables (cont’d) l Each variable has a scope — the area in the source code where it is “visible.” l If you use a variable outside its scope, the compiler reports a syntax error. l Variables can have the same name. Caution: use only when their scopes do not intersect. { int k;... } { int k;... }

8 6-8 Fields vs. Local Variables l Fields are declared outside all constructors and methods. l Local variables are declared inside a constructor or a method.

9 6-9 Fields vs. Local Variables (cont’d) l Fields are usually grouped together, either at the top or at the bottom of the class. l The scope of a field is the whole class.

10 6-10 Fields public class SomeClass { } Fields Constructors and methods public class SomeClass { } Scope Fields Constructors and methods

11 6-11 Local Variables l Local variables are declared inside a constructor or a method. l Local variables lose their values and are destroyed once the constructor or the method is exited. l The scope of a local variable is from its declaration down to the closing brace of the block in which it is declared.

12 6-12 Local Variables (cont’d) public class SomeClass {... public SomeType SomeMethod (...) { }... } Local variable declared Local variable Scope

13 6-13 Variables (cont’d) l Use local variables whenever appropriate; never use fields where local variables should be used. l Give prominent names to fields, so that they are DIFFERENT from local variables. l 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.).

14 6-14 Variables (cont’d) l Common mistakes: public void SomeMethod (...) { int x;... int x = 5; // should be: x = 5;... Variable declared twice — syntax error

15 6-15 Variables (cont’d) l 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

16 6-16 Primitive Data Types l int l double l char l boolean l byte l short l long l float Used in Java Methods

17 6-17 Constants 'A', '+', '\n', '\t' // char - 99, 2010, 0 // int 0.75, - 12.3, 8.,.5 // double new line tab

18 6-18 Constants (cont’d) private final int delay = 30; private final double aspectRatio = 0.7; l Symbolic constants are initialized final variables:

19 6-19 Constants (cont’d) l 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

20 6-20 Arithmetic Operators: +, -, /, *, % l The precedence of operators and parentheses work the same way as in algebra. l m % n means the remainder when m is divided by n (e.g. 17 % 5 is 2). % has the same rank as / and * l Same-rank binary operators are performed in order from left to right.

21 6-21 Arithmetic (cont’d) l 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. l 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.

22 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 l …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.

23 6-23 Arithmetic (cont’d) l 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

24 6-24 Arithmetic (cont’d) Caution: the range for ints is from - 2 31 to 2 31 - 1 (about - 2·10 9 to 2·10 9 ) l Overflow is not detected by the Java compiler or interpreter n = 8 10^n = 100000000 n! = 40320 n = 9 10^n = 1000000000 n! = 362880 n = 10 10^n = 1410065408 n! = 3628800 n = 11 10^n = 1215752192 n! = 39916800 n = 12 10^n = -727379968 n! = 479001600 n = 13 10^n = 1316134912 n! = 1932053504 n = 14 10^n = 276447232 n! = 1278945280

25 6-25 Arithmetic (cont’d) l 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; l Use increment and decrement operators: a = a + 1; a ++ ; a = a - 1; a -- ; Do not use these in larger expressions

26 6-26 Ramblecs Case Study l Add a control panel with a speed gauge

27 6-27 Ramblecs (cont’d) l Now four classes:

28 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

29 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

30 6-30 Review: l What is a variable? l What is the type of variable that holds an object? l What is meant by the scope of a variable? l What is the scope of a field? l What is the scope of a local variable? l Is it OK to give the same name to variables in different methods? l Is it OK to give the same name to a field and to a local variable of the same class?

31 6-31 Review (cont’d): l What is the range for ints? l When is a cast to double used? l Given double dF = 68.0; double dC = 5 / 9 * (dF - 32); what is the value of dC? l When is a cast to int used? l Should compound assignment operators be avoided?


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

Similar presentations


Ads by Google