Fall 2015CISC124 - Prof. McLeod1 CISC124 Have you filled out the lab section survey? (As of last...

Post on 05-Jan-2016

215 views 2 download

Transcript of Fall 2015CISC124 - Prof. McLeod1 CISC124 Have you filled out the lab section survey? (As of last...

Fall 2015 CISC124 - Prof. McLeod 1

CISC124

• Have you filled out the lab section survey? (As of last night 54 left to fill out the survey.)

• TA names have been added to the “Instructor” page.

• Labs start next week:– Go to meet your TA.– Work on Exercises. Exercise 1 to 3 are good

preparation for assignment 1.– Ask any questions you have about getting IDE working,

exercises, lecture material, etc.

Today

• How Java works, Cont.

• Begin Java Syntax: – Class Structure.– Primitive Types.

Fall 2015 CISC124 - Prof. McLeod 2

History of Java, From Last Lecture

• Java was first used to build applets attached to web pages to make them interactive.

• These were compact, platform-independent byte code files.

• One compiler, many virtual machines. The VMs were embedded in the various browsers.

• Later Java was modified to produce stand-along applications.

Fall 2015 CISC124 - Prof. McLeod 3

4Fall 2015 CISC124 - Prof. McLeod

How Java Works, Cont.• So, Java can be used either to create applets for

use in web pages or for stand-alone applications.

• Most “Integrated Development Environments” or IDE’s will support the development of either kind of program.

5Fall 2015 CISC124 - Prof. McLeod

How Java Works, Cont.

• However, all IDE’s, including Eclipse, must use the appropriate JDK in the background.

• Two components of the JDK are the programs “javac.exe” and “java.exe”.

• javac.exe is the byte code compiler, and java.exe is the JRE which executes the byte code file.

• “Compilation” is the process of converting the *.java file to a *.class file (the byte code file). This is done by calling javac.exe in the background, and supplying that program with all the required command line parameters.

6Fall 2015 CISC124 - Prof. McLeod

How Java Works, Cont.

• The java.exe program:– accepts the byte code file, – links in any required libraries,– creates executable code in memory– converts it to machine language– and sends it to the CPU.

• The java.exe program must know the right machine language commands for just the type of CPU it is designed for!

7Fall 2015 CISC124 - Prof. McLeod

Text Editor

Compiler

Linker

Loader

Source

Errors

Bytecode

Library

Executable

Input Data

Output Data

text

binary

binary

binary

successful

not successful

Eclipse

javac.exe

java.exe

8Fall 2015 CISC124 - Prof. McLeod

Questions:

• Suppose we have two kinds of errors:– Syntax errors– Runtime errors

• What is the difference?• Considering the two step process of running a

Java program, at what stages will these errors be caught and who does the catching?

• Who does the fixing???

Fall 2015 CISC124 - Prof. McLeod 9

OOP in Java

• A class or “object definition” or an “object”, consists of instance variables and/or methods.

• By convention, instance variables are all declared before the methods:

public class ShowStructure {

// instance variables or “attributes” here

// methods here

} // end class ShowStructure

Fall 2015 CISC124 - Prof. McLeod 10

OOP in Java – Cont.

• By convention, class names start with a capital letter, member names (attributes and methods) start with a lower case letter.

• In Java, a class is an Object, and an Object is a class (rather Zen is it not!)

• Code and attributes cannot be defined outside of a class.

• The only code that can exist outside a method are attributes or other (“inner”) class definitions.

Fall 2015 CISC124 - Prof. McLeod 11

Attributes

• Also called “class variables” or “instance variables” or “fields”.

• Declared within a class at the same level as the method declarations.

• These variables are known to all methods within a class (their scope).

• You can control their privacy and the way they are stored in memory (using public/private/protected and static).

Aside – Access Modifiers

• public means the attribute or method is available to any external class (as well as inside the class).

• private means that the attribute or method, the “member”, is only available inside the class in which it is declared.

• protected means the member is only public to classes in the same package as the class in which the member is declared.

Fall 2015 CISC124 - Prof. McLeod 12

static (First Pass)• static means different things depending on

where it is used. For now, consider:

• public static members are available outside the class without the need to instantiate the class.

• Any static member remains in memory until the program is complete.

• Since main is static, it can only invoke other static methods when they are in the same class.Fall 2015 CISC124 - Prof. McLeod 13

Fall 2015 CISC124 - Prof. McLeod 14

Attribute Declaration

• Syntax:

[private|public] [static] [final] type attributeName [= literalValue];

• Note that the type part is not optional – this is why java is a declarative language.

• And, a variable cannot change its type later (static typing).

• You cannot use a variable unless you have declared it first.

Fall 2015 CISC124 - Prof. McLeod 15

Variable Declaration

• Declaring a variable inside a method gives that variable the scope of just inside the method, not outside the method.

• Generally a variable is only available inside the block ({…}) in which it is declared.

• The syntax for declaration inside a method is the same except you don’t need the [private|public] [static] [final] parts.

Fall 2015 CISC124 - Prof. McLeod 16

• The syntax for simple method declaration:

[private|public] [static] [final] returnType methodName ([parameterList]) {…}

• If main invokes methods or uses attributes in the same class as itself then those attributes and methods must also be declared static. (If you forget the pre-compiler in Eclipse will remind you!)

Method Declaration (a “Header”)

Fall 2015 CISC124 - Prof. McLeod 17

Method Declaration - Cont.

• A method must have a returnType.• The returnType can be any single Object or a

primitive type. (For example: an int, double, String, an array (like int[], or any other pre-defined Object.)

• If the method does not return anything, then the keyword void is used instead.

• The main method does not return any value, so that’s why it is declared as in:

public static void main (String[] args) {…}

18Fall 2015 CISC124 - Prof. McLeod

Aside - The main Method

• For the JVM to run an application, it must know where to start.

• By design, the starting point is always the execution of the main method.

• The JVM expects the main method to be declared exactly as shown – the only thing you can change is the name of the String array, called args above.

Fall 2015 CISC124 - Prof. McLeod 19

Method Declaration - Cont.

• parameterList provides a means of passing items, or parameters, into a method.

• It is optional.• It can consist of one or many parameters,

separated by commas.• Each parameter type must be declared in the

parameter list, as in type variableName, type variableName, …

• Java does not have named or optional parameters as does Python.

Fall 2015 CISC124 - Prof. McLeod 20

Methods - the return Statement

• Also important: Unless the return type is void, the method must contain at least one return statement. A void method can also use a return statement without anything after it, as a means of terminating the method.

• A method always stops (terminates) when a return statement is encountered.

• Syntax:

return [literal|expression];

Fall 2015 CISC124 - Prof. McLeod 21

The return Statement - Cont.

• The type of “literal|expression” must match the return type specified in the method declaration statement.

Fall 2015 CISC124 - Prof. McLeod 22

Method Examples

public static void printHello() {System.out.println(“Hello”);

} // end printHello

public static void printHelloName(String yourName) {System.out.println(“Hello “ + yourName);

} // end printHelloName

public static void printAvg(int a, int b) {System.out.println((a + b) / 2.0);

} // end printAvg

Fall 2015 CISC124 - Prof. McLeod 23

Method Examples - Cont.

public static double average(double a, double b) {return (a + b) / 2;

} // end average

public static int lowest(int a, int b) {if (a <= b)return a;

elsereturn b;

} // end lowest

Does this have to be here?

Attribute Examples

public static double aVar;

public static int aNum = 100;

private static String hello = “Hello”;

Fall 2015 CISC124 - Prof. McLeod 24

Note: these methods and attributes are written as if they are in the same class as main and main will be using them.

Example: A Simple Class

public class Simple {

public static int aNum = 100;

public static int sumNums(int num1, int num2) {return num1 + num2;

}public static void main(String[] args) {

int anotherNum = 200;System.out.println(sumNums(aNum,

anotherNum));}

}

Fall 2015 CISC124 - Prof. McLeod 25

Python versus Java (Round 1)• You can see some major syntactical differences

already:– Variable type declaration in mandatory. Non-void return

type declaration is mandatory. Parameter type declaration is mandatory.

– Variable types are not dynamic!– A class header is required.– public static, The ;– Indentation in Java is for style only. { } are used to

indicate code blocks or code containment.– println() must be invoked as a member of the System.out object.

Fall 2015 CISC124 - Prof. McLeod 26

Fall 2015 CISC124 - Prof. McLeod 27

Primitive Types in Java

• Java primitive types:

charbyte shortintlongfloatdoubleboolean

Fall 2015 CISC124 - Prof. McLeod 28

Primitive Types?

• What is a primitive type anyways?

• Everything else in Java is an Object.• A variable declared as one of the types shown on

the previous slide is not an Object.• Why does Java have primitive types?

• Object construction often involves the data abstraction of several primitive type attributes.

Fall 2015 CISC124 - Prof. McLeod 29

Integer Primitive Types

• byte, short, int, long

• For byte, from -128 to 127, inclusive (1 byte).• For short, from -32768 to 32767, inclusive (2

bytes).• For int, from -2147483648 to 2147483647,

inclusive (4 bytes). • For long, from -9223372036854775808 to

9223372036854775807, inclusive (8 bytes).

• A “byte” is 8 bits, where a “bit” is either 1 or 0.

Fall 2015 CISC124 - Prof. McLeod 30

Aside - Number Ranges

• Where do these min and max numbers come from?

• Memory limitations and the system used by Java (two’s complement) to store numbers determines the actual numbers.

• The Wrapper classes can be used to provide the values - for example:

Integer.MAX_VALUE // returns the value 2147483647

Fall 2015 CISC124 - Prof. McLeod 31

Real Primitive Types

• Also called “Floating Point” Types:

• float, double

• For float, (4 bytes) roughly ±1.4 x 10-38 to ±3.4 x 1038 to 7 significant digits.

• For double, (8 bytes) roughly ±4.9 x 10-308 to ±1.7 x 10308 to 15 significant digits.

Fall 2015 CISC124 - Prof. McLeod 32

Character Primitive Type

• char

• From '\u0000' to '\uffff' inclusive, that is, from 0 to 65535 (base 10) or 0 to ffff (base 16, or “hexadecimal”). A variable of the char type represents a Unicode character. Can also be represented as 'a' or '8', etc.

Fall 2015 CISC124 - Prof. McLeod 33

Boolean Primitive Type

• boolean is either true or false.

Fall 2015 CISC124 - Prof. McLeod 34

String Objects

• String’s are not primitive data types, but are Objects.

• A String is declared in the same way as a primitive type using the keyword: String.