1 java basics: data types, variables, and loops “ if debugging is the process of removing software...

37
1 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

Upload: bernard-nelson

Post on 04-Jan-2016

215 views

Category:

Documents


1 download

TRANSCRIPT

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

1

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 DayVariables - symbols or names that represent valuesData Types - the kind of value does a variable represent

int - integers, such as 1024, -77, 2, 0double - real numbers, or actually (good) approximations of

real numbers. For example, 3.14159, -0.023343char - 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

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

2

Data typestype: A category or set of data values.

Constrains the operations that can be performed on dataMany 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 0s104 01101000"hi" 01101000110101

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

3

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 Description Examplesint integers (whole numbers) 42, -3, 0, 926394

double real numbers 3.14, -0.25, 9.0char single text characters 'a', 'X', '?', '\n'

boolean logical values true, false

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

4

Expressionsexpression: A value or operation that computes a

value.Example: 3 + 9 * 2The simplest expression is a literal value.

84-2.11

A complex expression can use operators and parentheses.(-4.5 + 2.11) * 8 // * represents multiplication

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

5

Arithmetic operatorsOperators 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 2System.out.println(3 * 4); //prints 12How would we print the text 3 * 4 on the screen?

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

6

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 684 / 10 is 8156 / 100 is 1

Dividing by 0 causes an error when your program runs.

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

7

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 % 62 % 28 % 2011 % 4

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

8

Applications of % Operator

How do we…Obtain last (ones) digit of a number.

Ex: From 432115, get 5Obtain last 4 digits of a SSN.

Ex: For SSN 552689321, get 9321Determine 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?

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

9

Operator Precedenceprecedence: 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 + 3 * 4 is 136 + 8 / 2 * 36 + 4 * 36 + 12 is 18

Parentheses can force a certain order of evaluation:(1 + 3) * 4 is 16

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

10

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

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

11

Precedence questionsWhat values result from the following expressions?

9 / 5695 % 207 + 6 * 57 * 6 + 5248 % 100 / 56 * 3 - 9 / 4(5 - 7) * 46 + (18 % (17 - 12))

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

12

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 numbersPrecedence is the same: () before */% before +-

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

13

Real number example2.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

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

14

Precision Issues with RealsComputations 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.09What’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.

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

15

Mixing typesWhen 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

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

16

String concatenation string concatenation: Using + between a string and

another value to make a longer string.

"hello" + 42 is "hello42"1 + "abc" + 2 is "1abc2""abc" + 1 + 2 is "abc12"1 + 2 + "abc" is "3abc""abc" + 9 * 3 is "abc27""1" + 1 is "11"4 - 1 + "abc" is "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

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

17

Receipt exampleWhat'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 repeatedSo many println statements

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

18

Variablesvariable: 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

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

19

Variable Declarationvariable 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;

Multiple variable declarations on same line:double sideA, sideB, sideC;

x

myGPA

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

20

AssignmentDeclaring a variable: sets aside a chunk of memory for

storing valuesassignment: 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 3

myGPA 3.25

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

21

Using variablesOnce 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"); // 3 here

x = 4 + 7;System.out.println("now x is " + x); // now x is 11

x 3x 11

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

22

Declaration/initializationA variable can be declared/initialized in one statement.

Syntax:<type> <name> = <value>;

double myGPA = 3.95;

int x = (11 % 3) + 12;

x 14

myGPA 3.95

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

23

Assignment and algebraAssignment 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 3x 5

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

24

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;

Why does avg store 5.0and not 5.5 ?

myGPA 4.0

avg 5.0

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

25

Compiler errorsA 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?

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

26

Printing a variable's valueUse + 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.2There are 65 students in the course.

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

27

Receipt questionImprove 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); }}

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

28

Receipt answerpublic 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); }}

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

29

ExercisesWhat is the result?1. int x = 4; x = x + 3;

2. 5 = 1 + 4;

3. Double y = 6; y = 2 * y;

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

30

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);

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

31

Real or Integer? Categorize each of the following quantities by whether an int or double

variable would best to store it:

1. Temperature in degrees 5. Number of rainy days this month2. Population of lemmings 6. Number of miles traveled today3. Your grade point average 7. A person’s weight in pounds4. The average of a collection of exam scores

credit: Kate Deibel, http://www.cs.washington.edu/homes/deibel/CATs/

Integer (int) Real Number (double)

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

32

ExerciseWrite 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 = 4Width = 3The triangle’s area is 12.

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

33

Exercise using VariablesFor student Jane Doe:

Exam 1 score: 95Exam 2 score: 89Exam 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.

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

34

Increment and Decrement Operators

The increment operator ++ adds 1 to a numberresult ++; // 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;

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

35

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;

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

36

Assignment OperatorsCombine assignment with an operationUse whenever you want to apply some operation to the

value of a variable, and store the result in that variableExample:

count += 5;is equivalent to

count = count + 5;

Example:int result = 2;result *= 4; // result = ?

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

37

Assignment OperatorsExample:

int count1 = 3;int count2 = 6;int product *= count1 + count2; // what is product?

equivalent toint product = product * (count1 + count2);

Example:String s = “hello”;S += “ world”; // what is s?

equivalent toS = s + “ world”;