30
Saeid Zebardast @saeid http://about.me/saeid [email protected] 1

Java for beginners

Embed Size (px)

Citation preview

Page 1: Java for beginners

Saeid Zebardast @saeid http://about.me/saeid [email protected]

1

Page 2: Java for beginners

Please Please Please Ask Questions

As Much As You Like• This is not a lecture!

- But an opportunity to learn from each other.

- If you haven’t seen some of these frameworks, methods, etc. It is OK!

- Let we know if you know

‣ Better ways

‣ Best practices

‣ My mistakes!

Page 3: Java for beginners

Introduction• What’s Java?

- Since 1995

- By James Gosling and Sun Microsystems

‣ Sun acquired by Oracle in 2009/2010, $7.4 billion.

‣ James Gosling resigned from Oracle (April 2010).

- Base on C/C++

- JVM (Java Virtual Machine)

• License Issue

- What’s OpenJDK?

3

Page 4: Java for beginners

JVM

Page 5: Java for beginners

Java Principles1.Simple

- Syntax is based on C++.

- No need to remove unreferenced objects.

2.Secure

- No explicit pointer.

- Programs run inside virtual machine sandbox.

3.Object Oriented

- Object, Class, Inheritance, Abstraction and etc.

- Java is pure OOP Language. (C++ is semi object oriented).

4.Robust

- Compiler detects many problems.

- Strong memory management.

- Lack of pointers that avoids security problem.

- Automatic garbage collection.

Page 6: Java for beginners

Java Principles5.Architecture-neutral

- Machine independent.

- Write one, run anywhere.

6.Portable

- Java byte codes on any environment and any platform.

7.High Performance

- Byte code is "close" to native code.

- Still somewhat slower than a compiled language (e.g., C++).

8.Multithreaded

- Many tasks at once by defining multiple threads.

9.Distributed

- URL class allows a Java application to open and access remote objects on the internet.

Page 7: Java for beginners

Java History• JDK 1.0 (January 21, 1996)

• JDK 1.1 (February 19, 1997)

• J2SE 1.2 (December 8, 1998)

• J2SE 1.3 (May 8, 2000)

• J2SE 1.4 (February 6, 2002)

• J2SE 5.0 (September 30, 2004)

• Java SE 6 (December 11, 2006)

• Java SE 7 (July 28, 2011)

• Java SE 8 (March 18, 2014)

7

Page 8: Java for beginners

Java Uses• Desktop, Web-based and Mobile Apps

- Android

- JetBrains IDEs (IntelliJ Idea, CLion and etc.), Eclipse, NetBeans

- LibreOffice (OpenOffice)

• Embedded Systems

- X86, ARM, MIPS, LynxOS, WinCE.

• Big Data

- Hadoop (Facebook), Cassandra (Netflix, CERN, Reddit)

8

Page 9: Java for beginners

Installation• Just enter the following command:

- $ sudo apt-get install openjdk-7-jdk

• Check Java version:

- $ java -version

• Check Java compiler version:

- $ javac -version

9

Page 10: Java for beginners

Java Syntax• Data Types

• Variables

• Operators

• Statements

10

Page 11: Java for beginners

Data Types• Primitives

- short, byte, boolean, int and etc.

• Objects

- Object, String, Date, Integer, Long and etc.

11

Page 12: Java for beginners

Primitive Data Types Integer

Type Min Max 2^

byte -128 127 2^7

short -32,768 32,767 2^15

int -2,147,483,648 2,147,483,647 2^31

long -9,223,372,036,854,775,808 9,223,372,036,854,775,807 2^63

Page 13: Java for beginners

Primitive Data Types Floating-point

Type Size (bits) Precision

float 32 From 3.402,823,5 E+38 to 1.4 E-45

double 64 From 1.797,693,134,862,315,7 E+308 to 4.9 E-324

Page 14: Java for beginners

Primitive Data Types Other

Type Size (bits) Precision

boolean 1 true, false

char 16All Unicode characters. From ‘\u0000’ to ‘\uFFFF’. Check http://unicode-table.com/

Page 15: Java for beginners

Object Data Types• Everything is Object!

- String

- Date

- Integer, Long, Double

- Person, Shape

- and almost everything.

15

Page 16: Java for beginners

Variables• type identifier [=value];

- boolean status;

- int i = 0;

- int d = 66, e, f = 1410;

‣ declare three ints and initialize d and f.

- String name;

- Date today = new Date();

16

Page 17: Java for beginners

Operators

17

Type operators

Arthimetic +, -, *, /, %

Assignment +=, =-. *=, /=, %=, =

Relational !=, ==, <, >, <=, >=

Logical &&, ||, !

Bitwise &, |, ~, ^, <<, >>

Page 18: Java for beginners

Select Statements• () ? : ;

- inline if, shortcut if-else

• if () {}

• if () {} else {}

• if () {} else if {} else {}

• switch () { case X: ; break; case Y: ; break; default : ;}

18

Page 19: Java for beginners

Iteration Statements• while () {}

• do {} while ();

• for () {}

• for (:) {} //foreach

19

Page 20: Java for beginners

Syntax Comments

• /* This is a multi-line comment. It may occupy more than one line. */

• // This is an end-of-line comment

• Java Docs

• /** * This is a documentation comment. * * @author Saeid Zebardast */

Page 21: Java for beginners

Access modifiersModifier Same class or

nested classOther class inside the same package

Extended Class inside another

package

Non-extended inside another

package

private yes no no no

default(package private) yes yes no no

protected yes yes yes no

public yes yes yes yes

Page 22: Java for beginners

Methods• [modifiers] return_type method_name([parameterType parameterName, …]) {

method body; [return result]}

• public static void main(String[] args) { System.out.println(“Hello World!”); // without return!}

• long getMax(int a, int b) { if (a > b) return a; else return b; }

Page 23: Java for beginners

Classes• Top-level class

- [modifiers] class CLASS_NAME { //the file name should be CLASS_NAME.java // Class members (variables, methods, classes)}

• Inner class

- class Foo { // Top-level class class Bar { // Inner class }}

• Local class

- class Foo { void bar() { class Foobar {// Local class within a method } }}

• Initialization

- Foo foo = new Foo();

Page 24: Java for beginners

Inheritance• Use extends

- class Foo { // class members}

- class Foobar extends Foo { // class members}

• Overriding methods

- class Operation { public int doSomething() { return 0; }}

- class NewOperation extends Operation { @Override public int doSomething() { return 1; }}

Page 25: Java for beginners

Interfaces• Interface (Animal.java)

- interface Animal { public void eat(); public void sleep(); }

• Implements (Cat.java)

- public class Cat implements Animal{ String name; public Cat(String name) { this.name = name; } public void eat(){ System.out.println(name + “ eats"); } public void sleep(){ System.out.println(name + “sleeps"); } public String getName(){ return name; } public static void main(String args[]){ Cat cat = new Cat(“Barney”); cat.eat(); cat.sleep(); }}

Page 26: Java for beginners

Abstract Methods and Classes

• abstract class GraphicObject { int x, y; ... void moveTo(int newX, int newY) { ... } abstract void draw(); abstract void resize();}

• class Circle extends GraphicObject { void draw() { ... } void resize() { ... }}

• class Rectangle extends GraphicObject { void draw() { ... } void resize() { ... }}

Page 27: Java for beginners

Java File Structure[package _________] // package directory name (com.zebardast.java.tutorials)

[import _________][import _________][import _________]

[public] class CLASS_NAME { //File Name should be CLASS_NAME.java //class members}class Foo { //class members}

class Bar { //class members}

Page 28: Java for beginners

Simple Exercise Hello Word!

• Create HelloWorldApp.java:

- public class HelloWorldApp { public static void main(String[] args) { System.out.println("Hello World!"); // Print the string to the console. }}

• Compile:

- $ javac HelloWorldApp.java

• Run:

- $ java HelloWorldApp

28

Page 29: Java for beginners

Read The F* Manual• RTFM

- http://docs.oracle.com/javase/

• The Really Big Index

- http://docs.oracle.com/javase/tutorial/reallybigindex.html

29

Page 30: Java for beginners

Thank You