introduction to java. introduction to java java programming language ◦ object-oriented programming...

33
INTRODUCTION TO JAVA INTRODUCTION TO JAVA

Upload: rosaline-corey-morris

Post on 13-Jan-2016

272 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: INTRODUCTION TO JAVA. Introduction to Java Java programming language ◦ Object-Oriented Programming ◦ Compiled to byte code of JVM Java virtual machine

INTRODUCTION TO JAVAINTRODUCTION TO JAVA

Page 2: INTRODUCTION TO JAVA. Introduction to Java Java programming language ◦ Object-Oriented Programming ◦ Compiled to byte code of JVM Java virtual machine

Introduction to JavaIntroduction to JavaJava programming language

◦ Object-Oriented Programming◦ Compiled to byte code of JVM

Java virtual machine (JVM)◦ Java interpreter – interpret the compiled byte code◦ Software simulated CPU architecture◦ Cross-platform: support Linux, Windows, PalmOS…

etc.Java runtime environment (JRE)

◦ Predefined set of java classes available to use◦ Core Java APIs – basic utilities, I/O, graphics,

network…

Page 3: INTRODUCTION TO JAVA. Introduction to Java Java programming language ◦ Object-Oriented Programming ◦ Compiled to byte code of JVM Java virtual machine

Java is portable,Java is portable,As long as there is a JVM

compiled for that particular processor and OS

Typical program, like C or C++, is compiled for a particular processor architecture and OS.

“Write once, run everywhere!”◦Sun’s motto for Java

Page 4: INTRODUCTION TO JAVA. Introduction to Java Java programming language ◦ Object-Oriented Programming ◦ Compiled to byte code of JVM Java virtual machine

Bottom line: slow but safeBottom line: slow but safeNot suitable for high-performance

computation◦ Scientific computation, games, OS kernel◦ Compiled to byte codes of JVM, not native

machine language instructions◦ New release of Java is improving the speed a

lot Just-in-time (JIT) compiler: convert byte codes

to native machine language on the flyVery safe

◦ No pointer◦ Automatic garbage collection◦ Check array access bound

Page 5: INTRODUCTION TO JAVA. Introduction to Java Java programming language ◦ Object-Oriented Programming ◦ Compiled to byte code of JVM Java virtual machine

JavaJavaJava is an object-oriented language,

with a syntax similar to C◦Structured around objects and methods◦A method is an action or something

you do with the objectAvoid those overly complicated

features of C++:◦Operator overloading, pointer,

templates, etc.

Page 6: INTRODUCTION TO JAVA. Introduction to Java Java programming language ◦ Object-Oriented Programming ◦ Compiled to byte code of JVM Java virtual machine

Getting and using javaGetting and using java J2SDK freely download from

http://www.oracle.com/technetwork/java/index.html (http://java.sun.com)

All text editors support java◦ Notepad, wordpad◦ Just save to .java file

Have IDEs that comparable to Visual Studio◦ EditPlus (simple)◦ JCreator (simple)◦ Eclipse (more complicated)

Page 7: INTRODUCTION TO JAVA. Introduction to Java Java programming language ◦ Object-Oriented Programming ◦ Compiled to byte code of JVM Java virtual machine

Compile and run an Compile and run an applicationapplicationWrite java class Hello containing a

main() method and save in file “Hello.java”◦The file name MUST be the same as class

nameCompile with: javac Hello.javaCreates compiled .class file:

Hello.classRun the program: java Hello

◦Notice: use the class name directly, no .class!

Page 8: INTRODUCTION TO JAVA. Introduction to Java Java programming language ◦ Object-Oriented Programming ◦ Compiled to byte code of JVM Java virtual machine

Hello World!Hello World!

/* Our first Java program – Hello.java */public class Hello {

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

System.out.println( "hello world!" );}

}

File name: Hello.java

Command line arguments

Standard output, print with new line

Page 9: INTRODUCTION TO JAVA. Introduction to Java Java programming language ◦ Object-Oriented Programming ◦ Compiled to byte code of JVM Java virtual machine

About classAbout classFundamental unit of Java programAll java programs are classesEach class define a unique kind of

object ( a new data type)Each class defines a set of fields,

methods or other classespublic: modifier. This class is

publicly available and anyone can use it.

Page 10: INTRODUCTION TO JAVA. Introduction to Java Java programming language ◦ Object-Oriented Programming ◦ Compiled to byte code of JVM Java virtual machine

Things to noticeThings to noticeJava is case sensitivewhitespace doesn’t matter for

compilationFile name must be the same as one

of the class names, including capitalization!

At most one public class per fileIf there is one public class in the file,

the filename must be the same as itGenerally one class per file

Page 11: INTRODUCTION TO JAVA. Introduction to Java Java programming language ◦ Object-Oriented Programming ◦ Compiled to byte code of JVM Java virtual machine

What is an object?What is an object?Object is a thingAn object has state, behavior and

identity◦Internal variable: store state◦Method: produce behavior◦Unique address in memory: identity

An object is a manifestation of a class

Page 12: INTRODUCTION TO JAVA. Introduction to Java Java programming language ◦ Object-Oriented Programming ◦ Compiled to byte code of JVM Java virtual machine

What is class? What is class? Class introduces a new data typeA class describes a set of objects

that have identical characteristics (data elements) and behaviors (methods).◦Existing classes provided by JRE◦User defined classes

Once a class is established, you can make as many objects of it as you like, or none.

Page 13: INTRODUCTION TO JAVA. Introduction to Java Java programming language ◦ Object-Oriented Programming ◦ Compiled to byte code of JVM Java virtual machine

Simple example: class Simple example: class PersonPerson

A Person has some attributesThe class defines these properties

for all peopleEach person gets his own copy of

the fieldsAttributes = properties = fields

Page 14: INTRODUCTION TO JAVA. Introduction to Java Java programming language ◦ Object-Oriented Programming ◦ Compiled to byte code of JVM Java virtual machine

Class Person: definitionClass Person: definitionclass Person {

String name;

int height;

int weight;

public void printInfo(){

System.out.println(name+" with height="+height+", weight="+weight);

}

}

class ClassName{ /* class body goes here */ }

class: keyword

Page 15: INTRODUCTION TO JAVA. Introduction to Java Java programming language ◦ Object-Oriented Programming ◦ Compiled to byte code of JVM Java virtual machine

Class Person: usageClass Person: usage

Person p1; //declaration

p1 = new Person(); //create an object of Person

p1.name= “David”; //access its field

Person p2 = new Person();

p2.name=“Michael”;

p1.printInfo();

p2.printInfo(); // error here??

Page 16: INTRODUCTION TO JAVA. Introduction to Java Java programming language ◦ Object-Oriented Programming ◦ Compiled to byte code of JVM Java virtual machine

Class PersonClass Person

Name: David

height: 0

weight: 0

Name: Michael

height: 0

weight: 0

p1

p2

Page 17: INTRODUCTION TO JAVA. Introduction to Java Java programming language ◦ Object-Oriented Programming ◦ Compiled to byte code of JVM Java virtual machine

Class Person: variablesClass Person: variables

Person x;

x=p1;

x.printInfo();

x=p2;

x.printInfo();

This gives the same output as previous code !

Page 18: INTRODUCTION TO JAVA. Introduction to Java Java programming language ◦ Object-Oriented Programming ◦ Compiled to byte code of JVM Java virtual machine

Class Person: variablesClass Person: variables

Name: David

height: 0

weight: 0

Name: Michael

height: 0

weight: 0

p1

p2

x

references objects

Page 19: INTRODUCTION TO JAVA. Introduction to Java Java programming language ◦ Object-Oriented Programming ◦ Compiled to byte code of JVM Java virtual machine

ReferenceReferenceWe call x, as well as p1 and p2,

“reference” to the objectHandles to access an objectReference itself is not

accessible/manipulable◦ Different from C/C++, cannot

increment/decrement itImplemented as pointer+

◦ Java runtime is watching all assignment to references

Page 20: INTRODUCTION TO JAVA. Introduction to Java Java programming language ◦ Object-Oriented Programming ◦ Compiled to byte code of JVM Java virtual machine

ReferenceReference

Person p1; //only created the reference, not an object. It points to nothing now (null).

p1 = new Person(); //create the object (allocate storage in memory), and p1 is initialized.

p1.name=“David”; //access the object through the reference

Page 21: INTRODUCTION TO JAVA. Introduction to Java Java programming language ◦ Object-Oriented Programming ◦ Compiled to byte code of JVM Java virtual machine

More on referenceMore on referenceHave distinguished value null,

meaning pointing to nothing◦if( x==null) { … }

Multiple references can point to one object

When no reference point to an object, that object is never accessible again.

Page 22: INTRODUCTION TO JAVA. Introduction to Java Java programming language ◦ Object-Oriented Programming ◦ Compiled to byte code of JVM Java virtual machine

Class Person: problemClass Person: problemp1.weight = 150; // too bad, but possible

p1.weight = -20; // problem!!

Need to ensure the validity of value.

p1.setWeight(150); // OK, now p1’s weight is 150

p1.setWeight(-10); ******** Error, weight must be positive number

Page 23: INTRODUCTION TO JAVA. Introduction to Java Java programming language ◦ Object-Oriented Programming ◦ Compiled to byte code of JVM Java virtual machine

Class Person: add methodClass Person: add method

class Person { ... void setWeight(int w){ if(w<=0)

System.err.println("***** error, weight must be positive number! "); else

weight = w; }}

Page 24: INTRODUCTION TO JAVA. Introduction to Java Java programming language ◦ Object-Oriented Programming ◦ Compiled to byte code of JVM Java virtual machine

Class Person: new Class Person: new problemproblem

p1.setWeight(-10); ******** Error, weight must be positive number

p1.weight = -20; ****** ?

How about we forgot to use the set function? Or we just don’t want to?

Solution: just make the variable inaccessible from outside!

Page 25: INTRODUCTION TO JAVA. Introduction to Java Java programming language ◦ Object-Oriented Programming ◦ Compiled to byte code of JVM Java virtual machine

Class Person: private Class Person: private variablevariable

class Person{ private String name; private int weight; private int height;

public void setWeight(int w){if(w<=0) System.err.println("***** error, weight must be positive number! ");else weight = w;}

}

Keyword private: no one can access the element except itself

Keyword public: everyone can access the element

Page 26: INTRODUCTION TO JAVA. Introduction to Java Java programming language ◦ Object-Oriented Programming ◦ Compiled to byte code of JVM Java virtual machine

Class PersonClass Person

class Hello{

public static void main ( String[] args ) {Person p1= new Person();p1.weight = -20;

} }

>javac Hello.javaHello.java:5: weight has private access in Person p1.weight = -20; ^1 error

Page 27: INTRODUCTION TO JAVA. Introduction to Java Java programming language ◦ Object-Oriented Programming ◦ Compiled to byte code of JVM Java virtual machine

Java Basics: primitive Java Basics: primitive typestypesOne group of types get special

treatment in JavaVariable is not created by “new”,

not a referenceVariable holds the value directly

Page 28: INTRODUCTION TO JAVA. Introduction to Java Java programming language ◦ Object-Oriented Programming ◦ Compiled to byte code of JVM Java virtual machine

Primitive typesPrimitive typesPrimitive type Size Minimum Maximum Wrapper type

boolean 1-bit — — Boolean

char 16-bit Unicode 0 Unicode 216- 1 Character

byte 8-bit -128 +127 Byte

short 16-bit -215 +215-1 Short

int 32-bit -231 +231-1 Integer

long 64-bit -263 +263-1 Long

float 32-bit IEEE754 IEEE754 Float

double 64-bit IEEE754 IEEE754 Double

Page 29: INTRODUCTION TO JAVA. Introduction to Java Java programming language ◦ Object-Oriented Programming ◦ Compiled to byte code of JVM Java virtual machine

Primitive typesPrimitive typesAll numerical types are signed!

◦No unsigned keyword in JavaThe “wrapper” class allow you to

make a non-primitive object to represent the primitive one◦char c =‘a’;◦Character C = new Character(c);◦Character C = new Character(‘a’);

Page 30: INTRODUCTION TO JAVA. Introduction to Java Java programming language ◦ Object-Oriented Programming ◦ Compiled to byte code of JVM Java virtual machine

Primitive types - booleanPrimitive types - booleanboolean can never convert to or

from other data type, not like C or C++

boolean is not a integerif(0) doesn’t work in javaHave to explicitly state the

comparison◦if( x ==0) {

Page 31: INTRODUCTION TO JAVA. Introduction to Java Java programming language ◦ Object-Oriented Programming ◦ Compiled to byte code of JVM Java virtual machine

Primitive types - charPrimitive types - charChar is unsigned typeThe Character wrapper class has

several static methods to work with char, like isDigit(), toUpperCase() etc.

Page 32: INTRODUCTION TO JAVA. Introduction to Java Java programming language ◦ Object-Oriented Programming ◦ Compiled to byte code of JVM Java virtual machine

Default values for primitive Default values for primitive membersmembersWhen a primitive

type data is a member of a class, it’s guaranteed to get a default value even if you don’t initialize it.

Not true for those local variables!!◦ There will be compile

error if you use it without initialization

Primitive type Default

boolean false

char ‘\u0000’ (null)

byte (byte)0

short (short)0

int 0

long 0L

float 0.0f

double 0.0d

Page 33: INTRODUCTION TO JAVA. Introduction to Java Java programming language ◦ Object-Oriented Programming ◦ Compiled to byte code of JVM Java virtual machine

Example Example

class Hello{

public static void main ( String[] args ) {int x;System.out.println(x);

} }

>javac Hello.javaHello.java:5: variable x might not have been initialized System.out.println(x); ^1 error