Upload
foysal-ahamed
View
215
Download
0
Embed Size (px)
Citation preview
8/3/2019 CSI-211-W01a
1/14
United International University
Trimester: Fall 2009
Course: CSI 211
Course Title: Object Oriented Programming
Lecture 1a: Java Introduction
What is Java?
A Language
A Platform
An OS
A Chip
Java - Characteristics
Uses C/C++ basic syntax and basic data types -int, char, float, double, long,
short, byte etc.
Uses standard C/C++ control structures
Pure OO language
No stand alone functions -All code is part of a class
No explicit pointers - uses references
Uses garbage collection
Java is strongly typed
Java More characteristics
Java is normally compiled to a bytecode ;Java bytecode is a machine language
for an abstract machine
Each platform (or browser) that runs Java has a Java Virtual Machine (JVM or
sometimes VM) . The JVM executes Java bytecodes
JVMs with Just-In-Time (JIT) compilers will:
UIU Lecture 1a, CSI 211 1/14
8/3/2019 CSI-211-W01a
2/14
Compile the bytecodes to native machine code
This is done for each method the first time is executed
The native machine code is cached
The JVM then runs the native machine code for the method
Java 1.2 will have a JVM (Hotspot) that runs Java code much faster than
simple JIT JVMs
Other languages can be compiled to Java's bytecode
An Ada compiler exists that compiles Ada to Java bytecode
Java - The Platform
Java has a large API (application programming interface) covering a wide
range of areas The following list of Java APIs and applications from Sun
show the range of applications of Java . For reference
http://java.sun.com/products/index.html
Java Foundation Classes (JFC) - GUI
Java Interface Definition Language (IDL) - CORBA
JDBCTM Database Access
JavaBeansTM - componentware
JavaTM Communications API - serial & parallel port
JavaHelpTM
JavaTM Advanced Imaging
JavaTM Web Server TM
PersonalJavaTM - Java on personal consumer devices
EmbeddedJavaTM - Java on embedded devices
JavaTM Card TM - Java on a smart card
JavaTM Naming and Directory Interface TM (JNDI)
Java Message Service (JMS)
UIU Lecture 1a, CSI 211 2/14
http://java.sun.com/products/index.htmlhttp://java.sun.com/products/index.html8/3/2019 CSI-211-W01a
3/14
Java - The OS
Sun and IBM are implementing the Java OS which is an operating system that executesthe Java environment directly on hardware platforms
Java - The Chip
Some companies are implementing hardware that uses the Java bytecode as nativemachine code
Versions of Java
JDK(Java Development Kit) 1.0.2o First widely used version
o All browsers with Java support this version
JDK 1.1.X
Current release is JDK 1.1.6o Made changes to the language from JDK 1.0.X
o Add inner classes , Generics
o API is about 3 times larger than 1.0.2
o Event model for GUI components changed from 1.0.2
JDK 1.2 -Currently in beta 4o API is about 3 times larger than 1.1.X, so lots of new stuff
o Should contain major performance increases
o Major additions to GUI components
JAVA IDE
Using JDK you can compile and run java program from command line.o c:> javac HelloWorld. java - compiling here and it will produce
HelloWorld.class i.e. bytecode.o c:>java HelloWorld - It runs java byte code on native machine
Creating, Compiling, Debugging and Execution for these four steps JDK is notuser friendly. IDE is provided for that. A list of IDEs are:
o Eclipse - from IBM
o Netbeans
UIU Lecture 1a, CSI 211 3/14
8/3/2019 CSI-211-W01a
4/14
o Jbuilder from Borland
o Visual Studio J++ - from microsoft
o Visual Cafe from Webgain.
UIU Lecture 1a, CSI 211 4/14
8/3/2019 CSI-211-W01a
5/14
o
An Example HelloWorld
/**
This is my first java program*/
public class HelloWorldExample
{
public static void main( String args[] )
{
System.out.println("Hello World");
}
}
Java Source Code Naming Conventions
All java source file should end in .java
Each .java file can contain only one public class
The name of the file should be the name of the public class plus ".java"
Do not use abbreviations in the name of the class
If the class name contains multiple words then capitalize the first letter of each
word ex. HelloWorld.java
CLASSPATH
Java uses the environment variable CLASSPATHto locate class libraries
.class files those needed to compile or run the program it searches from
CLASSPATH
By default class path consists only the current directory but you can provide them
inclasspath option ofjavac or include directories in CLASSPATHenvironmentvariables.
Example classpath = . ; c:\java\lib; c:\csi211\lab
UIU Lecture 1a, CSI 211 5/14
8/3/2019 CSI-211-W01a
6/14
Some Basic Java Syntax
Java Comments
/* Standard C comment works*/
// C++ comment works
/** Special comment for documentation java comments*/
class Syntax
{
public static void main( String args[] )
{
int aVariable = 5;double aFloat = 5.8;
if ( aVariable < aFloat )
System.out.println( "True" );
int b = 10; // This is legal in Java
char c;
c = 'a';
}
}
Java Program Style and Layout
Three different indentation styles you can use
You can pick a reasonable indentation style and use it consistently in your
programs
Style#1
class Syntax { // brace starts from here
public static void main( String args[] ) {
int aVariable = 5;
if ( aVariable < aFloat )
System.out.println( "True" );}
}
UIU Lecture 1a, CSI 211 6/14
8/3/2019 CSI-211-W01a
7/14
Style #2
class Syntax
{ // brace starts
public static void main( String args[] )
{
int aVariable = 5;
if ( aVariable < aFloat )
System.out.println( "True" );
}
}
Style#3
class Syntax
{// brace starts
public static void main( String args[] )
{
int aVariable = 5;
if ( aVariable < aFloat )System.out.println( "True" );
}
}
Naming conventions
Class Naming UsesCapitalized word(s) i.e. Title case
Examples:-
HelloWorld, MyList, StudentMark
Wrong:helloWorld, HW (do not use abbreviation)
Variable and function names
starts with a lowercase letter and after that use Title case
Examples:-
variableAndFunctionNames
aFloat, studentName
Names of constants
All are capital letters and separated by underscore. Example isNAMES_OF_CONSTANTS
UIU Lecture 1a, CSI 211 7/14
8/3/2019 CSI-211-W01a
8/14
Example of Keywords - do not use for any naming
abstract default implements protected throws
boolean do import public transient
break double instanceof return try
byte else int short void
case extends interface static volatile
catch final long super while
char finally native switch
class float new synchronized
const for package this
continue if private throw
Reserved for possible future use (not used now)
byvalue cast future generic goto
inner operator outer rest var
Boolean
true, false act like keywords but are boolean constants
publicclass BooleanTest {
publicstaticvoid main( String args[] ){
boolean flag = 2 > 3;
if ( flag && true)
System.out.println( "True" );
else
System.out.println( "False" );
}
}
Input and Output
Standard Java Output
System.out is standard out in Java
System.err is error out in Java
UIU Lecture 1a, CSI 211 8/14
8/3/2019 CSI-211-W01a
9/14
class Output
{
public static void main( String args[] )
{
// Standard out
System.out.print( "Prints, but no newline" );
System.out.println( "Prints, adds platforms newline at end" );
double test = 4.6;
System.out.println( test );
System.out.println( "You can use " + "the plus operator on "
+ test + " String mixed with numbers" );
System.out.println( 5 + "\t" + 7 );
System.out.println( "trouble" + 5 + 7 ); //Problem here
System.out.println( "ok" + (5 + 7) );
System.out.flush(); // flushes output buffer
System.err.println( "Standard error output" );
}
}
Output
Prints, but no linefeed Prints, adds linefeed at end
4.6
You can use the plus operator on 4.6 String mixed with numbers
5 7
trouble57
ok12
Standard error output
Standard Java Input
Java assumes that you will be using a GUI for input from the user Hence there is
no "simple" way to read input from a user Scanner class is in jdk 1.5
package lecture01;
import java.util.Scanner;
publicclass TestInput {
publicstaticvoid main( String[] args ){
Scanner scanner = new Scanner(System.in);
System.out.print("Write your name: ");
String userName = scanner.nextLine();
System.out.println("Your name is : " + userName);
}
}
OutputWrite your name: Monzurur Rahman
Your name is : Monzurur RahmanYou typed: 34
UIU Lecture 1a, CSI 211 9/14
8/3/2019 CSI-211-W01a
10/14
Basic Data Types
class PrimitiveTypes
{
public static void main( String args[] ){
// Integral Types
byte aByteVariable; // 8-bits
short aShortVariable; // 16-bits
int aIntVariable; // 32-bits
long aLongVariable; // 64-bits
// Floating-Point Types
float aFloatVariable; // 32-bit IEEE 754 float
double aDoubleVariable; // 64-bit IEEE 754 float
// Character Type
char aCharVariable; // always 16-bit Unicode
// Boolean Types
boolean aBooleanVariable; // true or false
}}
Arithmetic Literals
class ArithmeticLiterals
{
public static void main( String args[] )
{
long aLong = 5L;
long anotherLong = 12l;
int aHex = 0x1;int alsoHex = 0X1aF;
int anOctal = 01;
int anotherOctal = 0731;
long aLongOctal = 012L;
long aLongHex = 0xAL;
float aFloat = 5.40F;
float alsoAFloat = 5.40f;
float anotherFloat = 5.40e2f;
float yetAnotherFloat = 5.40e+12f;
float compileError = 5.40; //Need cast here
double aDouble = 5.40; //Double is default!!
double alsoADouble = 5.40d;
double moreDouble = 5.40D;double anotherDouble = 5.40e2;
double yetAnotherDouble = 5.40e+12d;
}
}
UIU Lecture 1a, CSI 211 10/14
8/3/2019 CSI-211-W01a
11/14
Operations on Primitive Types
Integer Type
Equality = !=Relational < >=
Unary + -
Arithmetic + - * / %
Pre, postfix increment/decrement ++ --
Shift > >>>
Unary Bitwise logical negation ~
Binary Bitwise logical operators & | ^
class Operations{
public static void main( String args[] )
{
int a = 2;
int b = +4;
int c = a + b;
if ( b > a )
System.out.println("b is larger");
else
System.out.println("a is larger");
System.out.println( a > 1); // Shift right: 1
System.out.println( ~a ); // bitwise negation: -3System.out.println( a | b); // bitwise OR: 6
System.out.println( a ^ b); // bitwise XOR: 6
System.out.println( a & b); // bitwise AND: 0
}
}
Floating-Point Types Operations
Equality = !=
Relational < >=
Unary + -
Arithmetic + - * / %
Pre, postfix increment/decrement ++ --
UIU Lecture 1a, CSI 211 11/14
8/3/2019 CSI-211-W01a
12/14
N aN, +, -
Zero divide with floating-point results in +, -
Overflow results in either +, -.
Underflow results in zero.
An operation that has no mathematically definite result produces NaN - Not aNumber
NaN is not equal to any number, including another NaN
class NaN
{
public static void main( String args[] )
{
float size = 0;float average = 10 / size;
float infinity = 1.40e38f * 1.40e38f;
System.out.println( average ); // Prints Infinity
System.out.println( infinity ); // Prints Infinity
}
}
Casting
class Casting
{
public static void main( String args[] )
{
int anInt = 5;
float aFloat = 5.8f;
aFloat = anInt; // Implicit casts up are ok
anInt = aFloat ; // Compile error,
// must explicitly cast down
anInt = (int) aFloat ;
float error = 5.8; // Compile error, 5.8 is double
float works = ( float) 5.8;
char c = (char) aFloat;
double aDouble = 12D;
double bDouble = anInt + aDouble; // anInt is cast upto double,
int noWay = 5 / 0; // Compile error, compiler detects
// zero divide
int zero = 0;
int trouble = 5 / zero; //Some compilers may give error here
int notZeroYet;
UIU Lecture 1a, CSI 211 12/14
8/3/2019 CSI-211-W01a
13/14
notZeroYet = 0;
trouble = 5 / notZeroYet ; // No compile error!
}
}
Ints and Booleans are Differentclass UseBoolean
{
public static void main( String args[] )
{
if ( ( 5 > 4 ) == true )
System.out.println( "Java's explicit compare " );
if ( 5 > 4 )
System.out.println( "Java's implicit compare " );
if ( ( 5 > 4 ) != 0 ) // Compile error
System.out.println( "C way does not work" );
boolean cantCastFromIntToBoolean = (boolean) 0;
// compile error
int x = 10;int y = 5;
if ( x = y ) // Compile error
System.out.println( "This does not work in Java " );
}
}
Default Values of Variables
All arithmetic variables (int, float, double) are initialize to 0
char variables are initialize to the null character: '\u000'
boolean variables are initialize to false
reference variables are initialize to null
Compiler usually complains about using variables before explicitly giving them a value
class InitializeBeforeUsing
{
public static void main( String args[] )
{
int noExplicitValue;
System.out.println( noExplicitValue ); // Compile error
int someValue;
boolean tautology = true;if ( tautology )
{
someValue = 5;
}
System.out.println( someValue ); // Compile error
}
}
UIU Lecture 1a, CSI 211 13/14
8/3/2019 CSI-211-W01a
14/14
Characters
class CharactersLiterals
{
public static void main( String args[] )
{char backspace = '\b';
char tab = '\t';
char linefeed = '\n';
char formFeed = '\f';
char carriageReturn = '\r';
char doubleQuote = '\"';
char singleQuote = '\'';
char aCharacter = 'b';
char unicodeFormat = '\u0062'; // 'b'
}
}
Unicode
Superset of ASCII
Includes:
ASCII, Latin letter with diacritics
Greek, Cyrillic
Korean HangulHan ( Chinese, Japanese, Korean )
*************** End of Lecture 1a **************
UIU Lecture 1a, CSI 211 14/14