Java Basics: Data Types, Variables, and Loops “ If debugging is the process of removing software bugs, then programming must be the process.

Download Report

Transcript Java Basics: Data Types, Variables, and Loops “ If debugging is the process of removing software bugs, then programming must be the process.

Java Basics:
Data Types, Variables, and Loops
“ If debugging is the process of removing software bugs, then programming
must be the process of putting them in. ”
- Edsger Dijkstra
Plan for the Day
 Variables - symbols or names that represent values
 Data Types - the kind of value does a variable represent
 int - integers, such as 1024, -77, 2, 0
 double - real numbers, or actually (good) approximations of real
numbers. For example, 3.14159, -0.023343
 char - single characters, which are enclosed in single quotes in Java:
‘$’, ‘a’, ‘*’, ‘R’
 boolean - logical values: true or false
 Arithmetic operators (and another use of +)
 + represents addition in Java, but also the concatenation or appending
of two strings
Based on slides at buildingjavaprograms.com
1
Data types
 type: A category or set of data values.
 Constrains the operations that can be performed on data
 Many languages ask the programmer to specify types
 // Variable myNumber stores integer values, and currently
 // has the value 3
 int myNumber = 3;
 Internally, computers store everything as 1s and 0s
104
 01101000
"hi"  01101000110101
2
Java's primitive types
 primitive types: Java’s built-in data types for
numbers, text characters and logic values.
 8 primitive types in Java
 Non-primitive types are object types
 We'll use these four primitive types in this class:
Name
int
double
char
boolean
Description
integers (whole numbers)
real numbers
single text characters
logical values
Examples
42, -3, 0, 926394
3.14, -0.25, 9.0
'a', 'X', '?', '\n'
true, false
3
Expressions
 expression: A value or operation that computes a
value.
 Example: 3 + 9 * 2
 The simplest expression is a literal value.
84
 -2.11
 A complex expression can use operators and
parentheses.
 (-4.5 + 2.11) * 8 // * represents multiplication

4
Arithmetic operators
 Operators we will use often in cs 305j:
 +
  *
 /
 %
addition
subtraction (or negation)
multiplication
division
modulus (a.k.a. remainder)
 As a program runs, its expressions are evaluated.
 1 + 1 evaluates to 2
 System.out.println(3 * 4); //prints 12
 How would we print the text 3 * 4 on the screen?
5
Integer division with /
 When we divide integers, the quotient is also an integer.
 14 / 4 is 3, not 3.5
3
4
4 ) 14
10 ) 45
12
40
2
5
 More examples:
 32 / 5
is 6
 84 / 10
is 8
 156 / 100 is 1
 Dividing by 0 causes an error when your program runs.
6
Integer remainder with %
 The % operator computes the remainder from integer
division.
 14 % 4 is 2, since 14 divided by 4 is 3,
with remainder 2
 33 % 5 is 3, since 218 divided by 5 is 6,
with remainder 3
 What is the result of the following
operations?
 45 % 6
 2 % 2
 8 % 20
 11 % 4
7
Applications of % Operator
How do we…
 Obtain last (ones) digit of a number.
 Ex: From 432115, get 5
 Obtain last 4 digits of a SSN.
 Ex: For SSN 552689321, get 9321
 Determine whether a number is odd.
 Exercise: Suppose some unknown integer (greater than
100) is stored in variable n. How do you obtain the tens
digit?
8
Operator Precedence
 precedence: Order in which operators are evaluated.
 Operators of same precedence level evaluate left-
to-right.
1 - 2 - 3 is (1 - 2) - 3 which is -4
 */% have a higher precedence than +-
1
6
6
6
+ 3 * 4
+ 8 / 2 * 3
+
4
* 3
+
12
is
13
is
18
 Parentheses can force a certain order of evaluation:
(1 + 3) * 4
is
16
9
Precedence examples
1 * 2 + 3 * 5 % 4
 \_/


|
2



+ 3 * 5 % 4
\_/
|
2
+ 15
% 4
\___/
|
2
+
3
\________/
|
5



1 + 8 % 3 * 2 - 9
\_/
|
1 +
2
* 2 - 9
\___/
|
1 +
4
- 9
\______/
|
5
- 9
\_________/
|
-4
10
Precedence questions
 What values result from the following expressions?
 9 / 5
 695 % 20
 7 + 6 * 5
 7 * 6 + 5
 248 % 100 / 5
 6 * 3 - 9 / 4
 (5 - 7) * 4
 6 + (18 % (17 - 12))
11
Real numbers (type double)
 Java can manipulate real numbers (numbers with
a decimal point): 6.022 , -42.0 , 2.143e17
 The operators
+-*/%()
all still work with
double.
 / produces a more precise answer:
 15.0 / 2.0 is 7.5
 % is not typically used on real numbers
 Precedence is the same: () before */%
before +-
12
Real number example
 2.0 * 2.4 + 2.25 * 4.0 / 2.0

\___/
|
4.8



+ 2.25 * 4.0 / 2.0
\___/
|
4.8
+
9.0
/ 2.0
\_____/
|
4.8
+
4.5
\____________/
|
9.3
13
Precision Issues with Reals
 Computations with real numbers are not always as precise
as we expect (though the answer we get is close):
 System.out.println ( 11.0 - 10.91);
 We expect: 0.09
 What’s printed: 0.08999999999999999
 Computers represent some real numbers in an imprecise way
internally, so some calculations with them are off by a very slight
amount.
 We can usually tolerate the precision errors, but later we will
learn some ways to produce a better output for examples like
above.
14
Mixing types
 When int and double are mixed, the result is a double.
 4.2 * 3 is 12.6
 The conversion is per-operator, affecting only its operands.
 7 / 3 * 1.2 + 3 / 2
 \_/



|
2
* 1.2 + 3 / 2
\___/
|
2.4
+ 3 / 2
\_/
|
2.4
+
1
\________/
|
3.4
 3 / 2 is 1 above, not 1.5.
 2.0 + 10 / 3 * 2.5 - 6 / 4

\___/
|
2.0 +
3
* 2.5 - 6 / 4

\_____/
|
2.0 +
7.5
- 6 / 4

\_/
|
2.0 +
7.5
1
 \_________/
|
9.5
1

\______________/
|
8.5
15
String concatenation
 string concatenation: Using + between a string and
another value to make a longer string.
"hello" + 42
1 + "abc" + 2
"abc" + 1 + 2
1 + 2 + "abc"
"abc" + 9 * 3
"1" + 1
4 - 1 + "abc"
is
is
is
is
is
is
is
"hello42"
"1abc2"
"abc12"
"3abc"
"abc27"
"11"
"3abc"
 Use + to print a string and an expression's value together.
 System.out.println("Grade: " + (95.1 + 71.9) / 2);
• Output: Grade: 83.5
16
Receipt example
What's bad about the following code?
public class Receipt {
public static void main(String[] args) {
// Calculate total owed, assuming 8% tax / 15% tip
System.out.println("Subtotal:");
System.out.println(38 + 40 + 30);
System.out.println("Tax:");
System.out.println((38 + 40 + 30) * .08);
System.out.println("Tip:");
System.out.println((38 + 40 + 30) * .15);
System.out.println("Total:");
System.out.println(38 + 40 + 30 +
(38 + 40 + 30) * .08 +
(38 + 40 + 30) * .15);
}
}
 The subtotal expression (38 + 40 + 30) is repeated
 So many println statements
17
Variables
 variable: A piece of the computer's memory that is given a
name and type, and can store a value.
 Like preset stations on a car stereo, or cell phone speed dial:
 We use variables to store the result of a calculation, so we can
use it later
18
Variable Declaration
 variable declaration: Sets aside memory for storing a value
of some specified type.
 Variables must be declared before they can be used.
 A declaration specifies the variable’s name and type. The name
is an identifier.
 Declaration Syntax:
<type> <name>;
-- Example: int x;
-- Example: double myGPA;
x
myGPA
 Multiple variable declarations on same line:
 double sideA, sideB, sideC;
19
Assignment
 Declaring a variable: sets aside a chunk of memory for
storing values
 assignment: Stores a value in a variable.
 The value can be an expression; the variable stores its result.
 Syntax:
<name> = <expression>;
 int x;
x = 3;
 double myGPA;
myGPA = 1.0 + 2.25;
x
myGPA
3
3.25
20
Using variables
 Once given a value, a variable can be used in expressions:
int x;
x = 3;
System.out.println("x is " + x);
// x is 3
System.out.println(5 * x - 1);
// 5 * 3 - 1
 You can assign a value more than once:
int x;
x = 3;
System.out.println(x + " here");
x
11
3
// 3 here
x = 4 + 7;
System.out.println("now x is " + x); // now x is 11
21
Declaration/initialization
 A variable can be declared/initialized in one statement.
 Syntax:
<type> <name> = <value>;
 double myGPA = 3.95;
 int x = (11 % 3) + 12;
x
myGPA
14
3.95
22
Assignment and algebra
 Assignment uses = , but it is not an algebraic equation.
 X = … ; means “store the value of the expression on
the right in the memory set aside for x”
 x = 3;
means “store 3 in the memory allocated for x”
 What happens here?
int x = 3;
x = x + 2;
// ???
x
3
5
23
Assignment and types
 A variable can only store a value of its own type.
 int x = 2.5;
// ERROR: incompatible types
 An int value can be stored in a double variable.
 The value is converted into the equivalent real number.
 double myGPA = 4;
 double avg = 11 / 2;

myGPA
4.0
avg
5.0
Why does avg store 5.0
and not 5.5 ?
24
Compiler errors
 A variable can't be used until it is assigned a value.
 int x;
System.out.println(x);
// ERROR: x has no value
 You may not declare the same variable twice.
 int x;
int x;
// ERROR: x already exists
 int x = 3;
int x = 5;

// ERROR: x already exists
How can this code be fixed?
25
Printing a variable's value
 Use + to print a string and a variable's value on one line.
 double grade = (95.1 + 71.9 + 82.6) / 3.0;
System.out.println("Your grade was " + grade);
int students = 11 + 17 + 4 + 19 + 14;
System.out.println("There are " + students +
" students in the course.");
• Output:
Your grade was 83.2
There are 65 students in the course.
26
Receipt question
Improve the receipt program using variables.
public class Receipt {
public static void main(String[] args) {
// Calculate total owed, assuming 8% tax / 15% tip
System.out.println("Subtotal:");
System.out.println(38 + 40 + 30);
System.out.println("Tax:");
System.out.println((38 + 40 + 30) * .08);
System.out.println("Tip:");
System.out.println((38 + 40 + 30) * .15);
System.out.println("Total:");
System.out.println(38 + 40 + 30 +
(38 + 40 + 30) * .15 +
(38 + 40 + 30) * .08);
}
}
27
Receipt answer
public class Receipt {
public static void main(String[] args) {
// Calculate total owed, assuming 8% tax / 15% tip
int subtotal = 38 + 40 + 30;
double tax = subtotal * .08;
double tip = subtotal * .15;
double total = subtotal + tax + tip;
System.out.println("Subtotal: " + subtotal);
System.out.println("Tax: " + tax);
System.out.println("Tip: " + tip);
System.out.println("Total: " + total);
}
}
28
Exercises
What is the result?
1. int x = 4;
x = x + 3;
2. 5 = 1 + 4;
3. Double y = 6;
y = 2 * y;
29
What is the Output?
1. int average = (9 + 8)/2;
System.out.println(average);
average = (average * 2 + 10 + 4)/4;
System.out.println(average);
2. System.out.println(3 + 2 + “friends are coming over”);
3. System.out.println(“Call “ + 9 + 1 + 1);
30
Real or Integer?

Categorize each of the following quantities by whether an int or
double variable would best to store it:
Integer (int)
Real Number
(double)
1.
2.
3.
4.
Temperature in degrees
Population of lemmings
Your grade point average
The average of a collection
5. Number of rainy days this month
6. Number of miles traveled today
7. A person’s weight in pounds
of exam scores

credit: Kate Deibel, http://www.cs.washington.edu/homes/deibel/CATs/
31
Exercise
Write a program that assigns the length and width of a
rectangle to two variables, and then prints the area of the
rectangle.
Sample Output:
Length = 4
Width = 3
The triangle’s area is 12.
32
Exercise using Variables
 For student Jane Doe:
 Exam 1 score: 95
 Exam 2 score: 89
 Exam 3 score: 93
 Write a program that displays Jane Doe’s exam
average.
 Output:
On exam 2, Jane Doe made 89.
Her exam average is 92.333333.
33
Increment and Decrement Operators
 The increment operator ++ adds 1 to a number
 result ++; // The value stored in result is increased by 1
 The decrement operator -- subtracts 1 from a number
 result --; // value stored in result is decreased by 1
 These operators can come before or after the variable/value:
 ++count;

--count;
34
Example Increment/Decrement
 Output?
int count = 1;
int n = 2 + count++;
System.out.println(“count = “ + count);
System.out.println(“n = “ + n);
 What about now:
int count = 1;
int n = 2 + ++count;
35
Assignment Operators
 Combine assignment with an operation
 Use whenever you want to apply some operation to the
value of a variable, and store the result in that variable
Example:
count += 5;
is equivalent to
count = count + 5;
Example:
int result = 2;
result *= 4; // result = ?
36
Assignment Operators
 Example:
int count1 = 3;
int count2 = 6;
int product *= count1 + count2; // what is product?
equivalent to
int product = product * (count1 + count2);
 Example:
String s = “hello”;
S += “ world”; // what is s?
equivalent to
S = s + “ world”;
37