Java Methods ObjectOriented Programming and Data Structures 3
Java Methods Object-Oriented Programming and Data Structures 3 rd AP edition Maria Litvin ● Gary Litvin int chapter = 5; Data Types, Variables, and Arithmetic Copyright © 2015 by Maria Litvin, Gary Litvin, and Skylight Publishing. All rights reserved. 1
Objectives: • Discuss primitive data types • Learn how to declare fields and local variables • Learn about arithmetic operators, compound assignment operators, and increment / decrement operators • Discuss common mistakes in arithmetic 2
Variables • A variable is a “named container” • that holds a value. q = 100 - q; 5 count means: Ø Ø Ø 1. Read the current value of q 2. Subtract it from 100 3. Move the result back into q mov ax, q mov bx, 100 sub bx, ax mov q, bx 3
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 of variables usually start with a lowercase letter. 4
Variables (cont’d) • A variable must be declared before it can be used: int Type count; double x, y; JButton go; Name(s) Balloon b; String first. Name; 5
Variables (cont’d) • The assignment operator = sets the variable’s value: count = 5; x = 0; go = new JButton("Go"); first. Name = args[0]; 6
Variables (cont’d) • A variable can be initialized in its declaration: int count = 5; JButton go = new JButton("Go"); String first. Name = args[0]; 7
Variables: Scope • 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 when their scopes do not overlap. { int k =. . . ; . . . } for (int k =. . . ) {. . . } 8
Fields • Fields are declared outside all constructors and methods. • 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. 9
Fields (cont’d) Scope public class Some. Class { Fields } Constructors and methods Or: Scope public class Some. Class { Constructors and methods Fields } 10
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. 11
Local Variables (cont’d) public class Some. Class {. . . public Some. Type Some. Method (. . . ) { Local variable declared { Scope Local variable declared } }. . . } 12
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 (for example, x, y for coordinates, count for a counter, i, j, k for indices and loop control variables, etc. ). 13
Variables (cont’d) • Common mistakes: public void some. Method (. . . ) { int x = 0; . . . int x = 5; // should be: x = 5; . . . Variable declared twice within the same scope — syntax error 14
Variables (cont’d) • Common mistakes: private double radius; . . . public Circle (. . . ) // constructor { double radius = 5; . . . Declares a local variable radius; the value of the field radius remains 0. 0 15
Primitive Data Types • • int double char boolean • • byte short long float Used in Java Methods 16
Strings • String is not a primitive data type • Strings work like any other objects, with two exceptions: Ø Ø strings in double quotes are recognized as literal constants + and += concatenate strings (or a string and a number or an object, which is converted into a string) "Catch " + 22 "Catch 22" 17
Literal Constants new line tab 'A', '+', 'n', 't' char -99, 2010, 0 int 0. 75, -12. 3, 8. , . 5 double “coin. gif", "1776", "y", "n" String 18
Symbolic Constants • Symbolic constants are initialized final variables: private final int side. Length = 8; private static final int BUFFER_SIZE = 1024; public static final int PIXELS_PER_INCH = 6; 19
Why Symbolic Constants? • Easy to change the value throughout the program, if necessary • Easy to change into a variable • More readable, self-documenting code • Additional data type checking by the compiler 20
Arithmetic • Operators: +, -, /, * , % • The precedence of operators and parentheses is the same as in algebra. • m % n means the remainder when m is divided by n (for example, 17 % 5 is 2; % 8 is 2). % has the same rank as / and *. 2 • • Same-rank binary operators are performed in order from left to right. 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. 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. 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; int m =. . . , n =. . . ; double ratio = (double) m / (double) n; double ratio = (double) m / n; Casts double r 2 = n / 2. 0; 24
Arithmetic (cont’d) • A cast to int can be useful: Returns a double int pts. On. Die = (int)(Math. random() * 6) + 1; int miles = (int)(km * 1. 61 + 0. 5); Converts kilometers to miles, rounded to the nearest integer 25
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 n n n = = = = 8 9 10 11 12 13 14 10^n 10^n = = = = 1000000000 1410065408 1215752192 -727379968 1316134912 276447232 n! n! = 40320 = 3628800 = 39916800 = 479001600 = 1932053504 = 1278945280 26
Arithmetic (cont’d) • Compound assignment operators: • Increment and decrement operators: a = a + b; a = a - b; a += b; a -= b; a = a * b; a *= b; a = a / b; a /= b; a = a % b; a %= b; a = a + 1; a = a - 1; a++; a--; Do not use these in larger expressions 27
From Numbers to Strings • The easiest way to convert x into a string is to concatenate x with an empty string: String s = x + ""; Empty string 'A' 123 -1 "A" "123" "-1" . 1 3. 14 Math. PI "0. 1" "3. 141592653589793" • The same rules apply to System. out. print(x) 28
From Objects to Strings • The to. String method is called: public class Fraction { private int num, denom; . . . public String to. String () { return num + "/" + denom; } } Fraction f = new Fraction (2, 3); System. out. println (f) ; Output: 2/3 is called automatically f. to. String() 29
The Math class • Has methods for common math functions: Ø Ø Ø Ø Math. abs(x) |x|, absolute value of x Math. round(x) x rounded to an integer Math. pow(x, e) xe Math. sqrt(x) square root of x Math. max(x, y) the greater of x, y Math. min(x, y) the smaller of x, y Math. random() a random number 0 x < 1 Other math functions: trig, log, etc. 30
Review: • What is a variable? • What is the type of a 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? 31
Review (cont’d): • 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? • What is the range for ints? • When is a cast to double used? 32
Review (cont’d): • Given double d. F = 68. 0; double d. C = 5 / 9 * (d. F - 32); what is the value of d. C? • When is a cast to int used? • Should compound assignment operators be avoided? • Name a few methods of Math. 33
- Slides: 33