Download presentation
Presentation is loading. Please wait.
Published byJane Smith Modified over 9 years ago
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?
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.