Intro to Java Midterm Review

26
Intro to Java Midterm Review Dan Deutsch Daniel Deutsch

description

Intro to Java Midterm Review. Dan Deutsch. About Java. Compiled vs. Interpreted Java is compiled to Java Bytecode , not interpreted Bytecode is then interpreted when the program runs Python is interpreted, so it translates as the program runs on the computer The Java API - PowerPoint PPT Presentation

Transcript of Intro to Java Midterm Review

Page 1: Intro to Java Midterm Review

Daniel Deutsch

Intro to Java Midterm Review

Dan Deutsch

Page 2: Intro to Java Midterm Review

Daniel Deutsch

About Java• Compiled vs. Interpreted• Java is compiled to Java Bytecode, not interpreted• Bytecode is then interpreted when the program runs• Python is interpreted, so it translates as the program runs on the computer

• The Java API• The Java Application Programming Interface is a library of code that you can

use in Java programs• It has things like the String class and the Scanner class

Page 3: Intro to Java Midterm Review

Daniel Deutsch

Primitives and Reserved Words• Primitives• Types already built into Java.

Variables can be these types• They turn purple in jGrasp• Integer types:

• byte, short, int, long• Floating point types:

• float, double• Other:

• boolean, char

• Reserved words• You can’t use any of the words

that Java has reserved to be “keywords” as a variable name• All of the primitives, public, private,

protected, static, void, class, switch, case, default, for, while, do, continue, if, else, return, new, this, throw, throws,

Page 4: Intro to Java Midterm Review

Daniel Deutsch

Variable Names• Variables must start with a letter, underscore or $• After the first letter, it can be a letter, an underscore, $ or a number• Good examples:• Num1, DAYS_IN_YEAR, $, money$$, _scanner

• Bad examples:• 7even, hello world, private, num1*

Page 5: Intro to Java Midterm Review

Daniel Deutsch

Characters• Stored in memory as 8 bits• Indicated by single quotes• Each character maps to a

number between 0 and 255• ‘a’ = 97• ‘A’ = 65• ‘0’ = 48• This means that ‘a’ > ‘A’

• char c1 = ‘a’;System.out.println(c1 + 2);

• int c2 = c1 + 2;System.out.println(c2);

• char c3 = (char) (c1 + 2);System.out.println(c3);

99

99

c

Page 6: Intro to Java Midterm Review

Daniel Deutsch

Arithmetic• Operators have an order of

operations• ()• - negation• *, /, %• +, -• =

• Be careful of integer division!! Casting helps to get around this

• int a = 5, b = 2;System.out.println(a / b);

• System.out.println((double) a / b);• double c = 5.0;System.out.println(c / b);

• System.out.println(5.0 / b);• double d = 8.825;int e = (int) d;

• System.out.println(e);• System.out.println((double) (5 / 2));

2

2.52.5

2.5

8

2.0

Page 7: Intro to Java Midterm Review

Daniel Deutsch

Arithmetic• The mod operator

• % gives you the remainder when dividing two numbers• int mod = 33 % 4;

• Find the ones digit of the number 2358?• int ones = 2358 % 10;

• The tens digit?• int tens = 2358 / 10;• tens = tens % 10;

• Misc. operators• num++, num += 1, num = num + 1

• What’s the difference between num++ and ++num?• num++ executes then line, then

increments by 1• ++num increments by 1, then

executes line• int num = 0;System.out.println(num++);

• // num is now 1• System.out.println(++num);

2355

0

2

--, *=, /=, +=, -=, %=

Page 8: Intro to Java Midterm Review

Daniel Deutsch

Objects• Objects are instantiations of Classes• They have data associated with them and you

can call methods on them• Scanner scanner = new Scanner(“Dan 37.4 java”);• // here we call the next() method on a scannerString d = scanner.next();

• Java saves the location in memory where the Object’s data is. Primitives actually save the value of the variable• int a = 5;• String s = “Dan”;

• The Math class and the Character class provide static methods that you can call with the class name• double d = Math.floor(3.25);

• You cannot instantiate them!• Math math = new Math();a 5

s Dan

Dan3.0

Page 9: Intro to Java Midterm Review

Daniel Deutsch

Strings• Strings are Objects, not primitive

types• Indicated with double quotes

LengthString s = “abcdefghijk”;int length = s.length();

indexOfint index = s.indexOf(‘c’);char bad = s.charAt(length);

charAtchar c = s.charAt(index);

substringString s1 = s.substring(3);String s2 = s.substring(index, 6);11

2

Crashes!

c

defghijk

cdef

toLowerCaseString lower = “UPPER”.toLowerCase();

toUpperCaseupper

Page 10: Intro to Java Midterm Review

Daniel Deutsch

Strings• Escape characters• There are special characters which use two symbols to represent them

• \t is a tab• \n is a newline character• \\ is the \ character

String s = “1\t2\n\t3\t\\”;System.out.println(s);

1 23 \

Page 11: Intro to Java Midterm Review

Daniel Deutsch

Strings• Covert a String to an int or

double• String s = “72”;• int a = Integer.parseInt(s);• double d = Double.parseDouble(“38.08”);

• int b = Integer.parseInt(“seven”);

• Convert a number into a String• int a = 7;• String s = a + “”;

• If you need to compare two Strings, never use ==. The == operator compares the values at the memory address. Objects store a location in memory where the data is stored, not the actual value of the variable. Use equals instead

String s1 = “Java”, s2 = “Java”;if (s1.equals(s2)) System.out.println(“same!”);

equalsIgnoreCase()

Crashes!

Page 12: Intro to Java Midterm Review

Daniel Deutsch

Scanner• Scanner is a class that allows you

to iterate over a stream of text, like System.in or a String• It’s located in java.util.Scanner,

which you have to import

initializationScanner kb = new Scanner(System.in);Scanner s = new Scanner(“Dan 38 12.7”);

hasNext hasNextLinenextif (scanner.hasNext()) String d = s.next();

nextIntint a = s.nextInt();

nextDoubledouble d = s.nextDouble();

nextChar does not exist. Do this instead:// user types “yes”char c = kb.next().charAt(0);

true“Dan”

38

12.7

s.next();s.hasNext();

‘y’

Crashes!

false

Page 13: Intro to Java Midterm Review

Daniel Deutsch

Scanner Example“First 3 24.8 12 Last”

Scanner s = new Scanner(“First 3 24.8 12 Last”);

s.next();

s.next();

s.nextInt();

s.nextDouble();

s.nextInt();

s.next();

“First”

“3”

crashes!

24.8

12

Last

s.hasNext(); false

Page 14: Intro to Java Midterm Review

Daniel Deutsch

Math Class• You can use the Math class to do useful math operations• You call the methods with the Math class

powdouble d1 = Math.pow(2, 3);

rounddouble d2 = Math.round(7.8);

ceildouble d3 = Math.ceil(2.1);double d4 = Math.ceil(3.0);

floordouble d5 = Math.floor(5.6);

sqrtdouble d6 = Math.sqrt(34);

8.0

8.0

3.03.0

5.0

5.83…

Page 15: Intro to Java Midterm Review

Daniel Deutsch

Printf• The printf command allows

you to format a print statement in very specific ways• You create a String that encodes

the output format of the string• %d for integers• %f for floats• %s for Objects (e.g. Strings)

• %% displays %, like the \ character works with normal Strings

• You can specify how many spaces wide you want the result to be and how many points after the decimal you want to see• %.2f will have 2 digits after the decimal,

padded with 0s. Dosen’t work with integers – why?

• %8d will make sure the width of the number is at least 8 characters

• %08d will pad the number with 0s if necessary

• The newline character \n is not included, like System.out.print();

Page 16: Intro to Java Midterm Review

Daniel Deutsch

Printf Examplesint a = 7;System.out.printf(“%3d\n”, a);

System.out.printf(“%03d\n”, a);

double d = 3.2;System.out.printf(“%04d\n”, d);

System.out.printf(“%.3f\n”, d);

System.out.printf(“%06.3f%%\n”, d);

System.out.printf(“My name is %s\n”, “Dan”);

double d2 = 1234567.8;System.out.printf(“%f\n”, d2);

System.out.printf(“%2f\n”, d2);

“ 7”

“007”

crashes!

“3.200”

“03.200%”

“My name is Dan”

1234567.800000

1234567.800000

Page 17: Intro to Java Midterm Review

Daniel Deutsch

If Statements• If statements are useful when you

want to change the logic of your program based on values of variables or properties of Objects• They must use expressions that

evaluates to Booleans• If true, it will only execute the

next statement unless curly braces are used to create code blocks, regardless of indentation

if (a == 3) System.out.println(“equal”);System.out.println(“always runs”);

a = 3;“equals”“always runs”

a = 2;“always runs”;

• If statements can combine with else statements for more control. Ifthe if statement evaluates to false, the else statement runs. Otherwise only the if statement runs

if (a == 3) System.out.println(“equal”);else System.out.println(“not equal”);

a = 3a = 2

Page 18: Intro to Java Midterm Review

Daniel Deutsch

If Statements• If you have mutually exclusive options, you can use an if-else-if

structure. If you include an else, exactly one of the options will be chosen

char choice = kb.next().charAt(0);if (choice = ‘a’) System.out.println(“a chosen”);else if (choice == ‘b’) System.out.println(“b chosen”);

char choice = kb.next().charAt(0);if (choice = ‘a’) System.out.println(“a chosen”);else if (choice == ‘b’) System.out.println(“b chosen”);else System.out.println(“neither”);

abc

abc

Page 19: Intro to Java Midterm Review

Daniel Deutsch

If Statement Examplesint a = 2, b = 3;if (a == 2 && b == 3) System.out.println(1);else if (!(a != 2 || b != 3)) System.out.println(2);

1

This will never be called, no matter what a and b are. Why?

(a == 2 && b == 3) is the same as !(a != 2 || b != 3)

if (a == 8 && b == 5) System.out.println(“a is 8”); System.out.println(“b is 5”);

Misleading indentation!Only executes next statement!

a = 2, b = 3

if (a == 8 && b == 5) x++; y++;

a = 8, b = 5

if (a == 8 && b == 5) { System.out.println(“a is 8”); System.out.println(“b is 5”);}

a = 2, b = 3a = 8, b = 5

a = 8, b = 5

a =

8, b

= 5

a =

8, b

= 5

a = 2, b = 3

a =

2, b

= 3

Page 20: Intro to Java Midterm Review

Daniel Deutsch

If Statement Examplesif (a <= 5) if (b <= 2) Sysytem.out.println(“tiny”);else { System.out.println(“huge”); System.out.println(“end”); }

Misleading indentation! Rewrite it

if (a <= 5) if (b <= 2) System.out.println(“tiny”); else { System.out.println(“huge”); System.out.println(“end”); }

else goes withthe most recent if

a = 2, b = 1a = 2, b = 3a = 6, b = 1 if (a <= 5) { if (b <= 2) System.out.println(“tiny”);}else System.out.println(“huge”);System.out.println(“end”);

{

}

This is the same thing!Just clearer (and better)

if (a <= 5) { if (b <= 2) System.out.println(“tiny”); } else System.out.println(“huge”); System.out.println(“end”);

Misleading indentation! Rewrite it

a = 2, b = 1a = 2, b = 5a = 6, b = 1

Page 21: Intro to Java Midterm Review

Daniel Deutsch

Switch Statements• Switch statements are interesting control structures. They are like if statements, but multiple clauses can be executed• Unless there is a break, the program will keep executing• The default case is for when no other case is selected

char choice = kb.next().charAt(0);switch (choice) { case ‘a’: case ‘A’: x++; break; case ‘b’: y++; default: z++;}

a

aa

a

a

a

A

A A

AA

A

b

b b

bb

b

b

c

c c

c

cc

c

Page 22: Intro to Java Midterm Review

Daniel Deutsch

For Loops• For loops are useful when code needs to be repeated and you know how many times it

needs to execute. You may not know it will execute 5 times every time the code runs, but it will execute s.length() times• There are 3 parts that create the for loop

• They are executed in the following order:1. Initialization2. condition

2.1 If true, the body2.2 Otherwise, end

3. Afterthought4. Go to step 2

for (int i = 0; i < s.length(); i++)

initialization condition afterthought

Page 23: Intro to Java Midterm Review

Daniel Deutsch

For Loop Examplesfor (int i = 0; i < 10; i++) System.out.print(i + “ “);

String s = “I love Java”;for (int i = 0; i < s.length(); i += 2) System.out.print(s.charAt(i));

for (int n = 1; n < 1000; n *= 2) System.out.print(n + “ “);

for (int i = 10; i 0; i--) System.out.print(i + “ “);

for (int i = 0; i < 10; i++) System.out.println((i * 2) + “ “); System.out.println(“finished body”);

Nothing!

024…18Finished body

{

}0Finished body2Finished body4…18Finished body

10 9 8 … 1

<>

0 1 2 … 9i = 012910

012345678910

Ilv aa

n = 11 * 222*24512512 * 210241 2 4 … 512

Page 24: Intro to Java Midterm Review

Daniel Deutsch

While and Do-While Loops• While loops are useful when you don’t know how many times the

loop will run. Could be based on user input• Do-while loops are useful when you don’t know how many times it

will run, but it will run at least once

int num = 0;while (num < 5) { if (kb.next().equals(“y”)) num++;}

do { char choice = kb.next().charAt(0); // display menu} while (choice != ‘q’);

Page 25: Intro to Java Midterm Review

Daniel Deutsch

File Structure• The class declaration goes first• Method declarations of the class go in the body• Any imports/package declarations go outside of the class

public class MyClass {

}

public static void main(String[] args) {

}

// code goes here

public static int add(a, int b) { return a + b;

}

class declarationMemorize this!

main method

other methods

import java.util.Scanner;imports

Page 26: Intro to Java Midterm Review

Daniel Deutsch

Testing• White box testing: every line of code get executed.• The white box means you can see the code and make the test cases based on

the code• Test boundary cases

• Test invalid and valid cases

• Regression testing: rewriting code or adding code and making sure that everything that worked before works now• Black box testing: try many values that are valid/invalid. You don’t know

what the program is doing, so you try many cases

if (0 <= a && a <= 10) Test -1, 0, 1, 9, 10, and 11. Probably values in between