2. 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!
3. 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
5. Java Principles
1. 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.
6. Java Principles
5.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.
11. Data Types
• Primitives
- short, byte, boolean, int and etc.
• Objects
- Object, String, Date, Integer, Long and etc.
11
12. 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
13. 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
14. Primitive Data Types
Other
Type Size (bits) Precision
boolean 1 true, false
char 16
All Unicode characters.
From ‘u0000’ to ‘uFFFF’.
Check http://unicode-table.com/
15. Object Data Types
• Everything is Object!
- String
- Date
- Integer, Long, Double
- Person, Shape
- and almost everything.
15
16. 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
18. Select Statements
• () ? : ;
- inline if, shortcut if-else
• if () {}
• if () {} else {}
• if () {} else if {} else {}
• switch () {
case X: ; break;
case Y: ; break;
default : ;
}
18
19. Iteration Statements
• while () {}
• do {} while ();
• for () {}
• for (:) {} //foreach
19
20. 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
*/
21. Access modifiers
Modifier
Same class or
nested class
Other 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
22. 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;
}
23. 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();
24. 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;
}
}
25. 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();
}
}
26. 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() {
...
}
}
27. 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
}
28. 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
29. Read The F* Manual
• RTFM
- http://docs.oracle.com/javase/
• The Really Big Index
- http://docs.oracle.com/javase/tutorial/
reallybigindex.html
29