32
Lecture2: Java Basics Bohyung Han CSE, POSTECH [email protected] CSED233: Data Structures (2014F)

Lecture2: Java Basics Bohyung Han CSE, POSTECH [email protected] CSED233: Data Structures (2014F)

Embed Size (px)

Citation preview

Page 1: Lecture2: Java Basics Bohyung Han CSE, POSTECH bhhan@postech.ac.kr CSED233: Data Structures (2014F)

Lecture2: Java Basics

Bohyung HanCSE, POSTECH

[email protected]

CSED233: Data Structures (2014F)

Page 2: Lecture2: Java Basics Bohyung Han CSE, POSTECH bhhan@postech.ac.kr CSED233: Data Structures (2014F)

2 CSED233: Data Structuresby Prof. Bohyung Han, Fall 2014

Data Types

• Primitive data types

Type Bits Minimum Value Maximum Valuebyte 8 -128 127short 16 -32768 32767int 32 -2,147,483,648 2,147,483,647long 64 -9,223,372,036,854,775,808 9,223,372,036,854,775,807float 32 1.40129846432481707e-45 3.40282346638528860e+38double 64 4.94065645841246544e-324 1.79769313486231570e+308boolean 1 true / falsechar 16

Page 3: Lecture2: Java Basics Bohyung Han CSE, POSTECH bhhan@postech.ac.kr CSED233: Data Structures (2014F)

3 CSED233: Data Structuresby Prof. Bohyung Han, Fall 2014

Wrapper Class

• Each primitives has a corresponding class.• String is an object rather than a primitive.

Primitive Wrapper classbyte Byte

short Short

int Integer

long Long

float Float

double Double

boolean Boolean

char Character

String String

Page 4: Lecture2: Java Basics Bohyung Han CSE, POSTECH bhhan@postech.ac.kr CSED233: Data Structures (2014F)

4 CSED233: Data Structuresby Prof. Bohyung Han, Fall 2014

Wrapper Class

• “Wrap” the primitive data type into an object• Providing various functionalities• Part of the java.lang package, which is imported by default• Use of wrapper class

Creating an objectint x = 25; // x is a variable.Integer y = new Integer(33); // y is an ob-

ject. Accessing value

int z = x + y; // Wrongint z = x + y.intValue(); // OK!

Other operationsint x = Integer.parseInt("1234"); String s = Integer.toString(1234);

Page 5: Lecture2: Java Basics Bohyung Han CSE, POSTECH bhhan@postech.ac.kr CSED233: Data Structures (2014F)

5 CSED233: Data Structuresby Prof. Bohyung Han, Fall 2014

String

• A sequence of characters An object, but often regarded as primitive data type Java provides the String class to create and manipulate strings.

• Creating stringString greeting = "Hello world!";

Char[] helloArray = {'h', 'e', 'l', 'l', 'o', '.' };String helloString = new String(helloArray);

• String lengthString palindrome = "Dot saw I was Tod";int len = palindrome.length();

• String concatenation string1.concat(string2); "My name is ".concat("Rumplestiltskin"); "Hello," + " world" + "!"

Page 6: Lecture2: Java Basics Bohyung Han CSE, POSTECH bhhan@postech.ac.kr CSED233: Data Structures (2014F)

6 CSED233: Data Structuresby Prof. Bohyung Han, Fall 2014

Arrays

• A data structure holding a group of variables under a single identifiers

byte[] anArrayOfBytes; int[] anArrayOfLongs; long[] anArrayOfLongs; float[] anArrayOfFloats; double[] anArrayOfDoubles;boolean[] anArrayOfBooleans; char[] anArrayOfChars; String[] anArrayOfStrings;

int[] a;a = new int[2];int[] b = {1, 2, 3, 4};int bLength = b.length;

// array declaration without assignment// specify the length of the array// array declaration with assignment// get the length of an array

Page 7: Lecture2: Java Basics Bohyung Han CSE, POSTECH bhhan@postech.ac.kr CSED233: Data Structures (2014F)

7 CSED233: Data Structuresby Prof. Bohyung Han, Fall 2014

Operators

• Arithmetic Operators

Operator Description Example (A=10, B=20)

+ Adds values on either side of the operator A + B will give 30

- Subtracts right hand operand from left hand operand A - B will give -10

* Multiplies values on either side of the operator A * B will give 200

/ Divides left hand operand by right hand operand B / A will give 2

% Divides left hand operand by right hand operand and returns remainder B % A will give 0

++ Increase the value of operand by 1 B++ gives 21

-- Decrease the value of operand by 1 B-- gives 19

Page 8: Lecture2: Java Basics Bohyung Han CSE, POSTECH bhhan@postech.ac.kr CSED233: Data Structures (2014F)

8 CSED233: Data Structuresby Prof. Bohyung Han, Fall 2014

Operators

• Relational Operators

Operator Description Example (A=10, B=20)

== Checks if the value of two operands are equal or not (A == B) is not true.

!= Checks if the value of two operands are equal or not (A != B) is true.

> Checks if the value of left operand is greater than the value of right operand (A > B) is not true.

< Checks if the value of left operand is less than the value of right operand (A < B) is true.

>= Checks if the value of left operand is greater than or equal to the value of right operand (A >= B) is not true.

<= Checks if the value of left operand is less than or equal to the value of right operand (A <= B) is true.

Page 9: Lecture2: Java Basics Bohyung Han CSE, POSTECH bhhan@postech.ac.kr CSED233: Data Structures (2014F)

9 CSED233: Data Structuresby Prof. Bohyung Han, Fall 2014

Operators

• Bitwise operators

Operator Description Example (A=60, B=13)& Binary AND Operator (A & B) will give 12 which is 0000 1100

| Binary OR Operator (A | B) will give 61 which is 0011 1101

^ Binary XOR Operator (A ^ B) will give 49 which is 0011 0001

~ Binary Ones Complement Operator

(~A ) will give -61 which is 1100 0011 in 2's complement form due to a signed binary number.

<< Binary Left Shift Operator A << 2 will give 240 which is 1111 0000

>> Binary Right Shift Operator A >> 2 will give 15 which is 1111

>>> Shift right zero fill operator A >>>2 will give 15 which is 0000 1111

Page 10: Lecture2: Java Basics Bohyung Han CSE, POSTECH bhhan@postech.ac.kr CSED233: Data Structures (2014F)

10 CSED233: Data Structuresby Prof. Bohyung Han, Fall 2014

Operators

• Logical operators

Operator Description Example

&& Called Logical AND operator (A && B) is false

|| Called Logical OR Operator (A || B) is true

! Called Logical NOT Operator !(A && B) is true

Page 11: Lecture2: Java Basics Bohyung Han CSE, POSTECH bhhan@postech.ac.kr CSED233: Data Structures (2014F)

11 CSED233: Data Structuresby Prof. Bohyung Han, Fall 2014

Operators

• Assignment operators

Operator Description Example= Simple assignment operator C = A + B will assign value of A + B into C

+= Add AND assignment operator C += A is equivalent to C = C + A

-= Subtract AND assignment operator C -= A is equivalent to C = C - A

*= Multiply AND assignment operator C *= A is equivalent to C = C * A

/= Divide AND assignment operator C /= A is equivalent to C = C / A

Page 12: Lecture2: Java Basics Bohyung Han CSE, POSTECH bhhan@postech.ac.kr CSED233: Data Structures (2014F)

12 CSED233: Data Structuresby Prof. Bohyung Han, Fall 2014

Control Flow

• if-then and if-then-else statements

Char assignGrade(int testscore){ int testscore = 76; char grade;

if(testscore >= 90) grade = 'A'; ... else if(testscore >= 60) grade = 'D'; else grade = 'F';

return grade;}

Page 13: Lecture2: Java Basics Bohyung Han CSE, POSTECH bhhan@postech.ac.kr CSED233: Data Structures (2014F)

13 CSED233: Data Structuresby Prof. Bohyung Han, Fall 2014

Control Flow

• switch statementvoid DisplayMonthString (int month){ String month_str;

switch (month) { case 1: month_str = “January”;

break; case 2: month_str = “February”;

break; ... default: month_str = “InvalidMonthNum-ber”;

break; }

System.out.println(month_str);}

Page 14: Lecture2: Java Basics Bohyung Han CSE, POSTECH bhhan@postech.ac.kr CSED233: Data Structures (2014F)

14 CSED233: Data Structuresby Prof. Bohyung Han, Fall 2014

Loop

• for statement

// return {“January”, “February”, …, “Decem-ber”} String[] month_strs = GetMonthStrings();

for (int i = 0; i < month_strs.length; i++){ System.out.println(month_strs[i]);}

Page 15: Lecture2: Java Basics Bohyung Han CSE, POSTECH bhhan@postech.ac.kr CSED233: Data Structures (2014F)

15 CSED233: Data Structuresby Prof. Bohyung Han, Fall 2014

Loop

• while statement

// return {“January”, “February”, …, “Decem-ber”} String[] month_strs = GetMonthStrings();int i = 0;

while(i < month_strs.length){ System.out.println(month_strs[i]); i++;}

Page 16: Lecture2: Java Basics Bohyung Han CSE, POSTECH bhhan@postech.ac.kr CSED233: Data Structures (2014F)

16 CSED233: Data Structuresby Prof. Bohyung Han, Fall 2014

Loop

• do‐while statement

// return {“January”, “February”, …, “Decem-ber”} String[] month_strs = GetMonthStrings();int i = 0;

do{ System.out.println(month_strs[i]); i++;} while(i < month_strs.length)

Page 17: Lecture2: Java Basics Bohyung Han CSE, POSTECH bhhan@postech.ac.kr CSED233: Data Structures (2014F)

17 CSED233: Data Structuresby Prof. Bohyung Han, Fall 2014

Branching

• break, continue and return statements

String padString(String str){ while(1) { if (str.length() >= 10) break; // get out of the loop

else { str += “ ”; continue; // perform one more iter-ation } }

return str; // return a padded string}

Page 18: Lecture2: Java Basics Bohyung Han CSE, POSTECH bhhan@postech.ac.kr CSED233: Data Structures (2014F)

18 CSED233: Data Structuresby Prof. Bohyung Han, Fall 2014

Java Keywords

abstract boolean break byte case catch char

class const continue default do double else

extends final finally float for goto if

imple-ments import instanceof int interface long native

new package private protected public return short

static super switch synchro-nized this throw throws

transient try void volatile while

Page 19: Lecture2: Java Basics Bohyung Han CSE, POSTECH bhhan@postech.ac.kr CSED233: Data Structures (2014F)

19 CSED233: Data Structuresby Prof. Bohyung Han, Fall 2014

Java Output

• FormatsSystem.out.print(<string or var1> + <string or var2>..); System.out.println(<string or var1> + <string or var2>..);

public class OutputExample1{ public static void main (String[] args) { int num = 123;

System.out.println("Good‐night grace!"); System.out.print(num); System.out.println("num=" + num); }}

Page 20: Lecture2: Java Basics Bohyung Han CSE, POSTECH bhhan@postech.ac.kr CSED233: Data Structures (2014F)

20 CSED233: Data Structuresby Prof. Bohyung Han, Fall 2014

Java Constant

• Constant Constants are like variables in that they have a name and store a

certain type of information but unlike variables they CANNOT change.

final int SIZE = 1000;

Page 21: Lecture2: Java Basics Bohyung Han CSE, POSTECH bhhan@postech.ac.kr CSED233: Data Structures (2014F)

21 CSED233: Data Structuresby Prof. Bohyung Han, Fall 2014

Class

public class Date{ // data fields

private int day; private String month; private int year;

// constructors public Date() { day = 1; month = "January"; year = 2014; }

public Date(int d, String m, int y) { day = d; month = m; year = y; }

Anyone can use this class.

Only class members can access.

Anyone can call this constructor.

Page 22: Lecture2: Java Basics Bohyung Han CSE, POSTECH bhhan@postech.ac.kr CSED233: Data Structures (2014F)

22 CSED233: Data Structuresby Prof. Bohyung Han, Fall 2014

Class

public Date(Date d) { this.day = d.getDay(); this.month = d.getMonth(); this.year = d.getYear(); }

// accessor method public int getDay() { return day; }

// mutator method public void setMonth(String str) { month = str; }}

Anyone can call this method.

Calling accessor method

Page 23: Lecture2: Java Basics Bohyung Han CSE, POSTECH bhhan@postech.ac.kr CSED233: Data Structures (2014F)

23 CSED233: Data Structuresby Prof. Bohyung Han, Fall 2014

Testing Class

public class TestDate{ public static void main(String[] args) { Date date1 = new Date(); Date date2 = new Date(date1); Date date3 = new Date(11, “September”, 2013);

System.out.println(“date2: ” + date2.getMonth() + “ ” + date2. getDay() + “ ” + date2.getYear());

date3.setMonth(“October”); System.out.println(“date3: ” + date3.getMonth() + “ ” + date3. getDay() + “ ” + date3.getYear()); }}

Create a Date object.

Modify “month” field of date3 to “October.”

Page 24: Lecture2: Java Basics Bohyung Han CSE, POSTECH bhhan@postech.ac.kr CSED233: Data Structures (2014F)

24 CSED233: Data Structuresby Prof. Bohyung Han, Fall 2014

Inheritance

• Class hierarchy The “Object” class, defined in the java.lang package, defines and

implements behavior common to all classes. Many classes derive directly from “Object”, other classes derive from

some of those classes, and so on, forming a hierarchy of classes.

Class hierarchy

Page 25: Lecture2: Java Basics Bohyung Han CSE, POSTECH bhhan@postech.ac.kr CSED233: Data Structures (2014F)

25 CSED233: Data Structuresby Prof. Bohyung Han, Fall 2014

Superclass (Base Class)public class Bicycle{ // the Bicycle class has three fields public int cadence; public int gear public int speed;

// the Bicycle class has two constructors public Bicycle() { speed = 0; }

public Bicycle(int startCadence, int startSpeed, int start-Gear) { gear = startGear; cadence = startCadence; speed = startSpeed; }

Page 26: Lecture2: Java Basics Bohyung Han CSE, POSTECH bhhan@postech.ac.kr CSED233: Data Structures (2014F)

26 CSED233: Data Structuresby Prof. Bohyung Han, Fall 2014

Superclass (Base Class)

// the Bicycle class currently has three methods public void getCadence() { return cadence; }

public void setGear(int newValue) { gear = newValue; }

public void applyBrake(int decrement) { speed ‐= decrement; }}

Page 27: Lecture2: Java Basics Bohyung Han CSE, POSTECH bhhan@postech.ac.kr CSED233: Data Structures (2014F)

27 CSED233: Data Structuresby Prof. Bohyung Han, Fall 2014

Subclass (Derived Class)public class MountainBike extends Bicycle {

// the MountainBike subclass adds one field public int seatHeight;

// the MountainBike subclass has one constructor public MountainBike(int startHeight,int startCadence, int startSpeed,int startGear) { super(startCadence, startSpeed, startGear); seatHeight = startHeight; }

// the MountainBike subclass adds one method public void setHeight(int newValue) { seatHeight = newValue; }}

“MountainBike” inher-its from “Bicycle.”

It calls constructor of superclass.

Page 28: Lecture2: Java Basics Bohyung Han CSE, POSTECH bhhan@postech.ac.kr CSED233: Data Structures (2014F)

28 CSED233: Data Structuresby Prof. Bohyung Han, Fall 2014

Inheritance

• Properties A subclass inherits all the public and protected members (fields,

methods, and nested classes) from its superclass. Constructors are not members, so they are not inherited. New fields, which are not in the superclass, can be declared in the

subclass. You can write a new instance method in the subclass that has the

same signature as the one in the superclass, thus overriding it. You can write a new static method in the subclass that has the same

signature as the one in the superclass, thus hiding it. You can declare new methods in the subclass that are not in the

superclass. You can write a subclass constructor that invokes the constructor of

the superclass, either implicitly or by using the keyword super.

Page 29: Lecture2: Java Basics Bohyung Han CSE, POSTECH bhhan@postech.ac.kr CSED233: Data Structures (2014F)

29 CSED233: Data Structuresby Prof. Bohyung Han, Fall 2014

Overriding vs. Hiding

• Base class (super class)

public class Animal { public static void testClassMethod() { System.out.println("The static method in Ani-mal"); }

public void testInstanceMethod() { System.out.println("The instance method in Ani-mal"); }}

Page 30: Lecture2: Java Basics Bohyung Han CSE, POSTECH bhhan@postech.ac.kr CSED233: Data Structures (2014F)

30 CSED233: Data Structuresby Prof. Bohyung Han, Fall 2014

Overriding vs. Hiding

• Subclass (derived class)public class Cat extends Animal { public static void testClassMethod() { System.out.println("The static method in Cat"); }

public void testInstanceMethod() { System.out.println("The instance method in Cat"); }

public static void main(String[] args) { Cat myCat = new Cat(); Animal myAnimal = myCat; Animal.testClassMethod(); myAnimal.testInstanceMethod(); }}

The static method in An-imalThe instance method in Cat

Page 31: Lecture2: Java Basics Bohyung Han CSE, POSTECH bhhan@postech.ac.kr CSED233: Data Structures (2014F)

31 CSED233: Data Structuresby Prof. Bohyung Han, Fall 2014

Many Pre C‐ reated Classes

• Rule of thumb Before writing new program code to implement the features of your

program you should check to see if a class has already been written with the features that you need.

• The Java API is Sun Microsystems's collection of pre built ‐Java classes: http://java.sun.com/javase/7/docs/api/

• Java tutorial http://docs.oracle.com/javase/tutorial/

Page 32: Lecture2: Java Basics Bohyung Han CSE, POSTECH bhhan@postech.ac.kr CSED233: Data Structures (2014F)

32