• No results found

Java Basics: Data Types, Variables, and Loops

N/A
N/A
Protected

Academic year: 2021

Share "Java Basics: Data Types, Variables, and Loops"

Copied!
37
0
0

Loading.... (view fulltext now)

Full text

(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

(2)

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

(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 Examples

int integers (whole numbers) 42, -3, 0, 926394 double real numbers 3.14, -0.25, 9.0 char single text characters 'a', 'X', '?', '\n' boolean logical values true, false

(4)

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

(5)

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?

(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 6

84 / 10 is 8

156 / 100 is 1

Dividing by 0 causes an error when your program runs.

(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 % 6

2 % 2

8 % 20

(8)

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?

(9)

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 + 3 * 4 is 13

6 + 8 / 2 * 3 6 + 4 * 3

6 + 12 is 18

Parentheses can force a certain order of evaluation:

(1 + 3) * 4 is 16

(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

(11)

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

(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 numbers

Precedence is the same: () before */%

before +-

(13)

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

(14)

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.

(15)

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

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

\______________/

(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

(17)

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

(18)

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

(19)

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;

Multiple variable declarations on same line:

x

myGPA

(20)

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;

3 x

3.25 myGPA

(21)

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"); // 3 here x = 4 + 7;

System.out.println("now x is " + x); // now x is 11 3

x 11

x

(22)

Declaration/initialization

A variable can be declared/initialized in one statement.

Syntax:

<type> <name> = <value>;

double myGPA = 3.95;

int x = (11 % 3) + 12;

14 x

3.95 myGPA

(23)

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; // ??? xx 35

(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.0 and not 5.5 ?

4.0 myGPA

5.0 avg

(25)

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?

(26)

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.

(27)

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

} }

(28)

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

} }

(29)

Exercises

What is the result?

1. int x = 4;

x = x + 3;

2. 5 = 1 + 4;

3. Double y = 6;

y = 2 * y;

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

(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 month 2. Population of lemmings 6. Number of miles traveled today 3. Your grade point average 7. A person’s weight in pounds 4. The average of a collection of exam scores

Real Number (double)

Integer (int)

(32)

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.

(33)

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.

(34)

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;

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

(36)

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 = ?

(37)

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

References

Related documents

Fields or local variables in Java are of one of two sorts Primitive type: variable stores the value. declaration implies memory allocation to store its value (depending on

If global predefined variables declared as java tutorials on other method declarations together for declaring it exits and examples of declaration in spring, malware cannot

Također, rezultati su pokazali da isticanje u nagradama i orijentacija na izvedbu imaju najveću (pozitivnu) povezanost sa zadovoljstvom poslom, kao i to da su najbolji

Can she declare a reference variable of excel array literal whose component type species an unbounded wildcard parameterized type.. Note the use of

Enhancements included embedding additional JavaScript to control overriding methods from the report layout page to the report viewer page, and controlling the look of the MRV pages

The Cash Flow Statement shows money that comes into the business, money that goes out and money that is kept on hand to meet daily expenses and emergencies.. W H AT I T S H O W S

SAP Recycling Administration (REA) helps companies map the legal regulations of three EU directives and carry out the required quantity flow reporting

In this case, a Catholic priest is able to establish religious authority with new contacts in a new media environment and maintain religious authority by using Facebook to