ee 422c day 2 java, eclipse. copyright pearson education, 2010 based on slides bu marty stepp and...

23
EE 422C Day 2 Java, Eclipse

Upload: berniece-rhoda-white

Post on 18-Jan-2016

217 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: EE 422C Day 2 Java, Eclipse. Copyright Pearson Education, 2010 Based on slides bu Marty Stepp and Stuart Reges from

EE 422C

Day 2Java, Eclipse

Page 2: EE 422C Day 2 Java, Eclipse. Copyright Pearson Education, 2010 Based on slides bu Marty Stepp and Stuart Reges from

Copyright Pearson Education, 2010Based on slides bu Marty Stepp and Stuart Reges from http://www.buildingjavaprograms.com/

"Should array indices start at 0 or 1? My compromise of 0.5 was rejected without, I thought, proper consideration. "

- Stan Kelly-Bootle

Page 3: EE 422C Day 2 Java, Eclipse. Copyright Pearson Education, 2010 Based on slides bu Marty Stepp and Stuart Reges from

Announcements

• Homework 1 online

Page 4: EE 422C Day 2 Java, Eclipse. Copyright Pearson Education, 2010 Based on slides bu Marty Stepp and Stuart Reges from

Today

• Start off Eclipse• Write programs with if/else, for and while

loops, methods, object input and return.• Static methods in Math and Arrays classes.

Page 5: EE 422C Day 2 Java, Eclipse. Copyright Pearson Education, 2010 Based on slides bu Marty Stepp and Stuart Reges from

Some self-help resources

• Cave of Programming on YouTube.– Java basics taught using Eclipse.

• Eclipse and Java – Using the Debugger, Alex Taylor , 7 videos on YouTube

• Using the Eclipse Workbench, Alex Taylor, 6 videos on Youtube

Page 6: EE 422C Day 2 Java, Eclipse. Copyright Pearson Education, 2010 Based on slides bu Marty Stepp and Stuart Reges from
Page 7: EE 422C Day 2 Java, Eclipse. Copyright Pearson Education, 2010 Based on slides bu Marty Stepp and Stuart Reges from

JVM

• JVM (Java Virtual Machine) is an abstract machine. • It is a specification that provides runtime

environment in which java bytecode can be executed.

• Java is platform independent. • The JVM performs following main tasks:

– Loads code– Verifies code– Executes code

Page 8: EE 422C Day 2 Java, Eclipse. Copyright Pearson Education, 2010 Based on slides bu Marty Stepp and Stuart Reges from

8

Page 9: EE 422C Day 2 Java, Eclipse. Copyright Pearson Education, 2010 Based on slides bu Marty Stepp and Stuart Reges from

JRE (Java Runtime Environment)

• Used to provide runtime environment.• Physical implementation of JVM.• Contains set of libraries + other files that JVM

uses at runtime.

Page 10: EE 422C Day 2 Java, Eclipse. Copyright Pearson Education, 2010 Based on slides bu Marty Stepp and Stuart Reges from

Array declaration<type>[] <name> = new <type>[<length>];

– Example:

int[] numbers = new int[10];

index

0 1 2 3 4 5 6 7 8 9

value

0 0 0 0 0 0 0 0 0 0

Page 11: EE 422C Day 2 Java, Eclipse. Copyright Pearson Education, 2010 Based on slides bu Marty Stepp and Stuart Reges from

Array declaration, cont.• The length can be any non-negative integer

expression.

int x = 2 * 3 + 1;int[] data = new int[x % 5 + 2];

• Each element initially gets a "zero-equivalent" value.

Type Default value

int 0

double 0.0

boolean false

Stringor other object

null(means, "no object")

Page 12: EE 422C Day 2 Java, Eclipse. Copyright Pearson Education, 2010 Based on slides bu Marty Stepp and Stuart Reges from

Accessing elements<name>[<index>] // access<name>[<index>] = <value>; // modify

– Example:

numbers[0] = 27;numbers[3] = -6;

System.out.println(numbers[0]);if (numbers[3] < 0) { System.out.println("Element 3 is negative.");}

index

0 1 2 3 4 5 6 7 8 9

value

0 0 0 0 0 0 0 0 0 0

index

0 1 2 3 4 5 6 7 8 9

value

27 0 0 -6 0 0 0 0 0 0

Page 13: EE 422C Day 2 Java, Eclipse. Copyright Pearson Education, 2010 Based on slides bu Marty Stepp and Stuart Reges from

clicker Question8 What is output by the following code?String[] names = new String[5];names[1] = "Olivia";names[3] = "Isabelle";System.out.print(names[0].length());A. no output due to null pointer exceptionB. no output due to array index out of bounds exceptionC. no output due to a compile errorD. 0E. 6

Page 14: EE 422C Day 2 Java, Eclipse. Copyright Pearson Education, 2010 Based on slides bu Marty Stepp and Stuart Reges from

Limitations of arrays

• You cannot resize an existing array:int[] a = new int[4];a.length = 10; // error

• You cannot compare arrays with == or equals:int[] a1 = {42, -7, 1, 15};int[] a2 = {42, -7, 1, 15};if (a1 == a2) { ... } // false!if (a1.equals(a2)) { ... } // false!

• An array does not know how to print itself:int[] a1 = {42, -7, 1, 15};System.out.println(a1); // [I@98f8c4]

Page 15: EE 422C Day 2 Java, Eclipse. Copyright Pearson Education, 2010 Based on slides bu Marty Stepp and Stuart Reges from

The Arrays class• Class Arrays in package java.util has

useful static methods for manipulating arrays:

• Syntax:Arrays.<methodName>(<parameters>)

Method name DescriptionbinarySearch(<array>, <value>) returns the index of the given value in a

sorted array (or < 0 if not found)

copyOf(<array>, <length>) returns a new copy of an array

equals(<array1>, <array2>) returns true if the two arrays contain same elements in the same order

fill(<array>, <value>) sets every element to the given value

sort(<array>) arranges the elements into sorted order

toString(<array>) returns a string representing the array, such as "[10, 30, -25, 17]"

Page 16: EE 422C Day 2 Java, Eclipse. Copyright Pearson Education, 2010 Based on slides bu Marty Stepp and Stuart Reges from

Arrays.toString• Arrays.toString accepts an array as a

parameter and returns a String representation of its elements.

int[] e = {0, 2, 4, 6, 8};e[1] = e[3] + e[4]; System.out.println("e is " + Arrays.toString(e));

Output:

e is [0, 14, 4, 6, 8]

– Must import java.util.Arrays;

Page 17: EE 422C Day 2 Java, Eclipse. Copyright Pearson Education, 2010 Based on slides bu Marty Stepp and Stuart Reges from

Reference semantics

17

Page 18: EE 422C Day 2 Java, Eclipse. Copyright Pearson Education, 2010 Based on slides bu Marty Stepp and Stuart Reges from

Value semantics• value semantics: Behavior where values are

copied when assigned, passed as parameters, or returned.

– All primitive types in Java use value semantics.– When one variable is assigned to another, its value is

copied.– Modifying the value of one variable does not affect

others.int x = 5;int y = x; // x = 5, y = 5y = 17; // x = 5, y = 17x = 8; // x = 8, y = 17

Page 19: EE 422C Day 2 Java, Eclipse. Copyright Pearson Education, 2010 Based on slides bu Marty Stepp and Stuart Reges from

Reference semantics (objects)• reference semantics: Behavior where variables

actually store the address of an object in memory.

– When one variable is assigned to another, the object isnot copied; both variables refer to the same object.

– Modifying the value of one variable will affect others.int[] a1 = {4, 15, 8};int[] a2 = a1; // refer to same array as a1a2[0] = 7;System.out.println(Arrays.toString(a1)); // [7, 15, 8]

index

0 1 2

value

4 15 8

index

0 1 2

value

7 15 8a1 a2

Page 20: EE 422C Day 2 Java, Eclipse. Copyright Pearson Education, 2010 Based on slides bu Marty Stepp and Stuart Reges from

References and objects• Arrays and objects use reference semantics.

Why?– efficiency. Copying large objects slows down a

program.– sharing. It's useful to share an object's data among

methods.

DrawingPanel panel1 = new DrawingPanel(80, 50);

DrawingPanel panel2 = panel1; // same windowpanel2.setBackground(Color.CYAN);

panel1

panel2

Page 21: EE 422C Day 2 Java, Eclipse. Copyright Pearson Education, 2010 Based on slides bu Marty Stepp and Stuart Reges from

Objects as parameters

• When an object is passed as a parameter, the object is not copied. The parameter refers to the same object.– If the parameter is modified, it will affect the original object.

public static void main(String[] args) { DrawingPanel window = new DrawingPanel(80, 50);

window.setBackground(Color.YELLOW); example(window);}

public static void example(DrawingPanel panel) { panel.setBackground(Color.CYAN); ...}

panel

window

Page 22: EE 422C Day 2 Java, Eclipse. Copyright Pearson Education, 2010 Based on slides bu Marty Stepp and Stuart Reges from

Copy of a reference

index 0 1 2

value 126 167 95

index 0 1 2

value 252 334 190

iq

a

• Array variables are references• A parameter is a copy of the same reference the argument stores.• Changes made in the method to the elements are also seen by the

caller.

public static void main(String[] args) { int[] iq = {126, 167, 95}; increase(iq); System.out.println(Arrays.toString(iq));}public static void increase(int[] a) { for (int i = 0; i < a.length; i++) { a[i] = a[i] * 2; }}

– Output:[252, 334, 190]

Page 23: EE 422C Day 2 Java, Eclipse. Copyright Pearson Education, 2010 Based on slides bu Marty Stepp and Stuart Reges from

Using new• Array variables are references• A parameter is a copy of the same reference the argument stores.• Changes made in the method to the elements are also seen by the

caller.public static void main(String[] args) { int[] iq = {1, 2, 3};

int [] iq2 = increase(iq); System.out.println(Arrays.toString(iq), Arrays.toString(iq2));

}public static int[] increase(int[] a) {

for (int i = 0; i < a.length; i++) { a[i] = a[i] * 2; } a = new int [3]; // <- Create new array

a[2] = a[2]*2;return a;

}

– Output: [2, 4, 6][0, 0, 0]