SlideShare a Scribd company logo
Java$Basics$ 
Dr. Shahid Raza! 1!
Three Java Editions 
• Java Platform, Standard Edition (Java SE) 
• Java Platform, Enterprise Edition (Java EE) 
• Java Platform, Micro Edition (Java ME) 
Lecture 2: Overview: Java Peculiarities 3
The Java Platform, Standard Edition 
(Java SE) 
Lecture 2: Overview: Java Peculiarities 4
Java Platform, Enterprise Edition 
(Java EE) 
• Enterprise Application 
Technologies 
– Enterprise JavaBeans (EJB) 
– J2EE Connector Architecture 
– Java Message Service (JMS) 
• Web Application 
Technologies 
– Java Servlet 
– JavaServer Pages (JSP) 
– JavaServer Faces (JSF) 
– Java Persistence API (JSR) 
• Provides a POJO persistence 
model for object-relational 
mapping. Developed and use 
for EJB, but can be used 
directly 
– Java Transaction API (JTA) 
– JavaMail 
• Management and Security 
Technologies 
– J2EE Application 
Deployment 
– J2EE Management 
– Java Authorization Contract 
for Containers 
Lecture 2: Overview: Java Peculiarities 5
Object.Oriented$Nomenclature$ 
• Class$means$a$category$of$things$ 
– A$class$name$can$be$used$in$Java$as$the$type$of$a$field$or$ 
local$variable$or$as$the$return$type$of$a$func?on$(method)$ 
• Object$means$a$par?cular$item$that$belongs$to$a$ 
class$ 
– Also$called$an$instance$ 
• For$example,$consider$the$following$line:$ 
$ $$ $$$$String s1 = Hello;$ 
– Here,$String$is$the$class,$s1$is$an$instance$variable$of$class$ 
String,$whose$value$is$the$String$object$Hello$$ 
Dr. Shahid Raza! 2!
Example$1:$Instance$Variables$ 
(Fields$or$Data$Members)$ 
class Ship1 { 
public double x, y, speed, direction; 
public String name; 
} 
public class Test1 { 
public static void main(String[] args) { 
Ship1 s1 = new Ship1(); 
s1.x = 0.0; 
s1.y = 0.0; 
s1.speed = 1.0; 
s1.direction = 0.0; // East 
s1.name = Ship1; 
System.out.println(s1.name +  is initially at ( 
+ s1.x + , + s1.y + ).); 
s1.x = s1.x + s1.speed 
* Math.cos(s1.direction * Math.PI / 180.0); 
s1.y = s1.y + s1.speed 
* Math.sin(s1.direction * Math.PI / 180.0); 
System.out.println(s1.name +  has moved to ( 
+ s1.x + , + s1.y + ).); 
} 
} 
Dr. Shahid Raza! 3!
Instance$Variables:$Results$ 
• Compiling$and$Running:$ 
javac Test1.java 
java Test1 
Output:$ 
Ship1 is initially at (1,0). 
Ship2 has moved to (-1.41421,1.41421). 
Dr. Shahid Raza! 4!
Primitive Data Types 
• Much like in C 
– byte 
– short 
– char 
Lecture 2: Overview: Java Peculiarities 21 
– int 
– long 
– float 
– double 
• See Examples in Exercise 0.
Widening Primitive Conversions 
• Do not lose information about the overall 
magnitude of a numeric value. 
From To 
byte short, int, long, float, double 
short int, long, float, double 
char int, long, float, double 
int long, float, double 
long float, double 
float double 
Lecture 2: Overview: Java Peculiarities 22
Narrowing Primitive Conversions 
• May lose information about the overall magnitude of 
a numeric value and may also lose precision. 
From To 
byte char 
short byte, char 
char byte, short 
int byte, short, char 
long byte, short, char, int 
float byte, short, char, int, long 
double byte, short, char, int, long, float 
Lecture 2: Overview: Java Peculiarities 23
Example$1:$Major$Points$ 
• Java$naming$conven?on$ 
• Format$of$class$defini?ons$ 
• Crea?ng$classes$with$new$ 
• Accessing$fields$with$ 
variableName.fieldName$ 
Dr. Shahid Raza! 5!
Java$Naming$Conven?ons$ 
• Leading$uppercase$leTer$in$class$name$ 
public class MyClass { 
... 
} 
• Leading$lowercase$leTer$in$field,$local$ 
variable,$and$method$(func?on)$names$ 
– myField,myVar,myMethod 
Dr. Shahid Raza! 6!
First$Look$at$Java$Classes$ 
• The$general$form$of$a$simple$class$is$ 
modifier class Classname { 
modifier data-type field1; 
modifier data-type field2; 
... 
modifier data-type fieldN; 
modifier Return-Type methodName1(parameters) { 
//statements 
} 
... 
modifier Return-Type methodName2(parameters) { 
//statements 
} 
} 
Dr. Shahid Raza! 7!
Objects$and$References$ 
• Once$a$class$is$defined,$you$can$easily$declare$a$ 
variable$(object$reference)$of$the$class$ 
Ship s1, s2; 
Point start; 
Color blue; 
• Object$references$are$ini?ally$null$$$ 
– The$null$value$is$a$dis?nct$type$in$Java$and$should$ 
not$be$considered$equal$to$zero$$ 
– A$primi?ve$data$type$cannot$be$cast$to$an$object$(use$ 
wrapper$classes)$ 
• The$new$operator$is$required$to$explicitly$create$ 
the$object$that$is$referenced$ 
ClassName variableName = new ClassName();$ 
Dr. Shahid Raza! 8!
Accessing$Instance$Variables$ 
• Use$a$dot$between$the$variable$name$and$the$field$ 
name,$as$follows:$ 
variableName.fieldName$$ 
• For$example,$Java$has$a$built.in$class$called$Point$that$ 
has$x$and$y$fields$ 
Point p = new Point(2, 3); // Build a Point object 
int xSquared = p.x * p.x; // xSquared is 4 
p.x = 7; 
• One$major$excep?on$applies$to$the$access$fields$ 
through$varName.fieldName$rule$ 
– Methods$can$access$fields$of$current$object$without$varName$ 
– This$will$be$explained$when$methods$(func?ons)$are$discussed$ 
Dr. Shahid Raza! 9!
Example$2:$Methods$ 
class Ship2 { 
public double x=0.0, y=0.0, speed=1.0, direction=0.0; 
public String name = UnnamedShip; 
private double degreesToRadians(double degrees) { 
return(degrees * Math.PI / 180.0); 
} 
public void move() { 
double angle = degreesToRadians(direction); 
x = x + speed * Math.cos(angle); 
y = y + speed * Math.sin(angle); 
} 
public void printLocation() { 
System.out.println(name +  is at ( 
+ x + , + y + ).); 
} 
} 
Dr. Shahid Raza! 10!
Methods$(Con?nued)$ 
public class Test2 { 
public static void main(String[] args) { 
Ship2 s1 = new Ship2(); 
s1.name = Ship1; 
Ship2 s2 = new Ship2(); 
s2.direction = 135.0; // Northwest 
s2.speed = 2.0; 
s2.name = Ship2; 
s1.move(); 
s2.move(); 
s1.printLocation(); 
s2.printLocation(); 
} 
} 
• Compiling$and$Running:$ 
javac Test2.java 
java Test2 
• Output:$ 
Ship1 is at (1,0). 
Ship2 is at (-1.41421,1.41421). 
Dr. Shahid Raza! 11!
Example$2:$Major$Points$ 
• Format$of$method$defini?ons$ 
• Methods$that$access$local$fields$ 
• Calling$methods$ 
• Sta?c$methods$ 
• Default$values$for$fields$ 
• public/private$dis?nc?on$ 
Dr. Shahid Raza! 12!
Defining$Methods$ 
(Func?ons$Inside$Classes)$ 
• Basic$method$declara?on:$ 
p u b l i c R e t u r n T y p e m e t h o d N a m e ( ttyyppee12 aarrgg12,, ...) { 
... 
return(something of ReturnType); 
} 
• Excep?on$to$this$format:$if$you$declare$the$return$ 
type$as$void 
– This$special$syntax$that$means$this$method$isnt$ 
going$to$return$a$value$–$it$is$just$going$to$do$some$ 
side$effect$like$prin?ng$on$the$screen$$ 
– In$such$a$case$you$do$not$need$(in$fact,$are$not$ 
permiTed),$a$return$statement$that$includes$a$ 
value$to$be$returned$ 
Dr. Shahid Raza! 13!
Examples$of$Defining$Methods$ 
• Here$are$two$examples:$ 
– The$first$squares$an$integer$$ 
– The$second$returns$the$faster$of$two$Ship$objects,$assuming$that$a$ 
class$called$Ship$has$been$defined$that$has$a$field$named$speed$$ 
// Example function call: 
// int val = square(7); 
public int square(int x) { 
return(x*x); 
} 
// Example function call: 
// Ship faster = fasterShip(someShip, someOtherShip); 
public Ship fasterShip(Ship ship1, Ship ship2) { 
if (ship1.speed  ship2.speed) { 
return(ship1); 
} else { 
return(ship2); 
} 
}$ 
Dr. Shahid Raza! 14!
Excep?on$to$the$Field$Access$with$ 
Dots$Rule$ 
• Normally$access$a$field$via: variableName.fieldName $ 
$ 
but$an$excep?on$is$when$a$method$of$a$class$wants$to$access$ 
fields$of$that$same$class$$ 
– In$that$case,$omit$the$variable$name$and$the$dot$ 
– For$example,$a$move$method$within$the$Ship$class$might$do:$ 
public void move() { 
x = x + speed * Math.cos(direction); 
... 
} 
• Here,$x,$speed,$and$direction$are$all$fields$within$the$class$that$ 
the$move$method$belongs$to,$so$move$can$refer$to$the$fields$directly$ 
$ 
– As$well$see$later,$you$s?ll$can$use$the$variableName.fieldName$ 
approach,$and$Java$invents$a$variable$called$this$that$can$be$used$for$ 
that$purpose$ 
Dr. Shahid Raza! 15!
Sta?c$Methods$ 
• Sta?c$func?ons$are$like$global$func?ons$in$other$ 
languages$ 
$ 
• You$can$call$a$sta?c$method$through$the$class$name$ 
ClassName.functionName(arguments); 
– For$example,$the$Math$class$has$a$sta?c$method$called$cos$ 
that$expects$a$double$precision$number$as$an$argument$ 
• So$you$can$call$Math.cos(3.5)$without$ever$having$any$object$ 
(instance)$of$the$Math$class$ 
Dr. Shahid Raza! 16!
Method$Visibility$ 
• public/private$dis?nc?on$ 
– A$declara?on$of$private$means$that$outside$methods$ 
cant$call$it$..$only$methods$within$the$same$class$can$ 
• Thus,$for$example,$the$main$method$of$the$Test2$class$could$ 
not$have$done$$ 
double x = s1.degreesToRadians(2.2); 
– ATemp?ng$to$do$so$would$have$resulted$in$an$error$at$compile$?me$$ 
– Only$say$public$for$methods$that$you$want%to%guarantee% 
your%class%will%make%available%to%users$$ 
– You$are$free$to$change$or$eliminate$private$methods$ 
without$telling$users$of$your$class$about$ 
$$$ 
Dr. Shahid Raza! 17!
Example$3:$Constructors$ 
class Ship3 { 
public double x, y, speed, direction; 
public String name; 
public Ship3(double x, double y, 
double speed, double direction, 
String name) { 
this.x = x; // this differentiates instance vars 
this.y = y; // from local vars. 
this.speed = speed; 
this.direction = direction; 
this.name = name; 
} 
private double degreesToRadians(double degrees) { 
return(degrees * Math.PI / 180.0); 
} 
... 
Dr. Shahid Raza! 18!
Constructors$(Con?nued)$ 
public void move() { 
double angle = degreesToRadians(direction); 
x = x + speed * Math.cos(angle); 
y = y + speed * Math.sin(angle); 
} 
public void printLocation() { 
System.out.println(name +  is at ( 
+ x + , + y + ).); 
} 
} 
public class Test3 { 
public static void main(String[] args) { 
Ship3 s1 = new Ship3(0.0, 0.0, 1.0, 0.0, Ship1); 
Ship3 s2 = new Ship3(0.0, 0.0, 2.0, 135.0, Ship2); 
s1.move(); 
s2.move(); 
s1.printLocation(); 
s2.printLocation(); 
} 
}$ 
Dr. Shahid Raza! 19!
Constructor$Example:$Results$ 
• Compiling$and$Running: 
javac Test3.java 
java Test3 
• Output:$ 
Ship1 is at (1,0). 
Ship2 is at (-1.41421,1.41421). 
Dr. Shahid Raza! 20!
Example$3:$Major$Points$ 
• Format$of$constructor$defini?ons$ 
• The$this$reference$ 
• Destructors$(not!)$ 
Dr. Shahid Raza! 21!
Constructors$ 
• Constructors$are$special$func?ons$called$when$a$class$is$ 
created$with$new$ 
– Constructors$are$especially$useful$for$supplying$values$of$fields$ 
– Constructors$are$declared$through:$ 
public ClassName(args) { 
... 
} 
– No?ce$that$the$constructor$name$must$exactly$match$the$class$ 
name$ 
– Constructors$have$no$return$type$(not$even$void),$unlike$a$ 
regular$method$ 
– Java$automa?cally$provides$a$zero.argument$only$if$the$class$doesnt$define$its$own$constcrouncstotrru$$ctor$if$and$ 
• Thats$why$you$could$say$ 
Ship1 s1 = new Ship1(); 
$$$in$the$first$example,$even$though$a$constructor$was$never$defined$ 
Dr. Shahid Raza! 22!
The$this$Variable$ 
• The$this$object$reference$can$be$used$inside$any$non.sta?c$ 
method$to$refer$to$the$current$object$ 
• The$common$uses$of$the$this$reference$are:$ 
1. To$pass$a$reference$to$the$current$object$as$a$parameter$to$other$ 
methods$ 
someMethod(this); 
2. To$resolve$name$conflicts$ 
• Using$this$permits$the$use$of$instance$variables$in$methods$that$ 
have$local$variables$with$the$same$name$ 
– Note$that$it$is$only$necessary$to$say$this.fieldName$when$you$ 
have$a$local$variable$and$a$class$field$with$the$same$name;$otherwise$ 
just$use$fieldName$with$no$this 
Dr. Shahid Raza! 23!
Destructors$ 
This Page Intentionally Left Blank 
Dr. Shahid Raza! 24!
Summary$ 
• Class$names$should$start$with$uppercase;$method$names$ 
with$lowercase$ 
• Methods$must$define$a$return$type$or$void$if$no$result$ 
is$returned$ 
• If$a$method$accepts$no$arguments,$the$arg.list$in$the$ 
method$declara?on$is$empty$instead$of$void$as$in$C$ 
• Sta?c$methods$do$not$require$an$instance$of$the$class;$ 
sta?c$methods$can$be$accessed$through$the$class$name$ 
• The$this$reference$in$a$class$refers$to$the$current$ 
object$$ 
• Class$constructors$do$not$declare$a$return$type$ 
• Java$performs$its$own$memory$management$and$ 
requires$no$destructors$ 
$$$ 
Dr. Shahid Raza! 25!
Ad

More Related Content

What's hot (20)

Clojure Deep Dive
Clojure Deep DiveClojure Deep Dive
Clojure Deep Dive
Howard Lewis Ship
 
NOSQL101, Or: How I Learned To Stop Worrying And Love The Mongo!
NOSQL101, Or: How I Learned To Stop Worrying And Love The Mongo!NOSQL101, Or: How I Learned To Stop Worrying And Love The Mongo!
NOSQL101, Or: How I Learned To Stop Worrying And Love The Mongo!
Daniel Cousineau
 
What I learned from Seven Languages in Seven Weeks (IPRUG)
What I learned from Seven Languages in Seven Weeks (IPRUG)What I learned from Seven Languages in Seven Weeks (IPRUG)
What I learned from Seven Languages in Seven Weeks (IPRUG)
Kerry Buckley
 
Best Guide for Javascript Objects
Best Guide for Javascript ObjectsBest Guide for Javascript Objects
Best Guide for Javascript Objects
Muhammad khurram khan
 
Scala 2013 review
Scala 2013 reviewScala 2013 review
Scala 2013 review
Sagie Davidovich
 
The Ring programming language version 1.10 book - Part 103 of 212
The Ring programming language version 1.10 book - Part 103 of 212The Ring programming language version 1.10 book - Part 103 of 212
The Ring programming language version 1.10 book - Part 103 of 212
Mahmoud Samir Fayed
 
V8 hidden class and inline cache
V8 hidden class and inline cacheV8 hidden class and inline cache
V8 hidden class and inline cache
Fanis Prodromou
 
Scaladroids: Developing Android Apps with Scala
Scaladroids: Developing Android Apps with ScalaScaladroids: Developing Android Apps with Scala
Scaladroids: Developing Android Apps with Scala
Ostap Andrusiv
 
Hello Swift Final 5/5 - Structures and Classes
Hello Swift Final 5/5 - Structures and ClassesHello Swift Final 5/5 - Structures and Classes
Hello Swift Final 5/5 - Structures and Classes
Cody Yun
 
Solr & Lucene @ Etsy by Gregg Donovan
Solr & Lucene @ Etsy by Gregg DonovanSolr & Lucene @ Etsy by Gregg Donovan
Solr & Lucene @ Etsy by Gregg Donovan
Gregg Donovan
 
Dart
DartDart
Dart
anandvns
 
SOLID Ruby SOLID Rails
SOLID Ruby SOLID RailsSOLID Ruby SOLID Rails
SOLID Ruby SOLID Rails
Michael Mahlberg
 
OSDC.fr 2012 :: Cascalog : progammation logique pour Hadoop
OSDC.fr 2012 :: Cascalog : progammation logique pour HadoopOSDC.fr 2012 :: Cascalog : progammation logique pour Hadoop
OSDC.fr 2012 :: Cascalog : progammation logique pour Hadoop
Publicis Sapient Engineering
 
Scala for scripting
Scala for scriptingScala for scripting
Scala for scripting
michid
 
Functional Object-Oriented Imperative Scala / 関数型オブジェクト指向命令型 Scala by Sébasti...
Functional Object-Oriented Imperative Scala / 関数型オブジェクト指向命令型 Scala by Sébasti...Functional Object-Oriented Imperative Scala / 関数型オブジェクト指向命令型 Scala by Sébasti...
Functional Object-Oriented Imperative Scala / 関数型オブジェクト指向命令型 Scala by Sébasti...
scalaconfjp
 
Postobjektové programovanie v Ruby
Postobjektové programovanie v RubyPostobjektové programovanie v Ruby
Postobjektové programovanie v Ruby
Jano Suchal
 
Erlang for data ops
Erlang for data opsErlang for data ops
Erlang for data ops
mnacos
 
Scala traits training by Sanjeev Kumar @Kick Start Scala traits & Play, organ...
Scala traits training by Sanjeev Kumar @Kick Start Scala traits & Play, organ...Scala traits training by Sanjeev Kumar @Kick Start Scala traits & Play, organ...
Scala traits training by Sanjeev Kumar @Kick Start Scala traits & Play, organ...
Sanjeev_Knoldus
 
Solr @ Etsy - Apache Lucene Eurocon
Solr @ Etsy - Apache Lucene EuroconSolr @ Etsy - Apache Lucene Eurocon
Solr @ Etsy - Apache Lucene Eurocon
Giovanni Fernandez-Kincade
 
循環参照のはなし
循環参照のはなし循環参照のはなし
循環参照のはなし
Masahiro Honma
 
NOSQL101, Or: How I Learned To Stop Worrying And Love The Mongo!
NOSQL101, Or: How I Learned To Stop Worrying And Love The Mongo!NOSQL101, Or: How I Learned To Stop Worrying And Love The Mongo!
NOSQL101, Or: How I Learned To Stop Worrying And Love The Mongo!
Daniel Cousineau
 
What I learned from Seven Languages in Seven Weeks (IPRUG)
What I learned from Seven Languages in Seven Weeks (IPRUG)What I learned from Seven Languages in Seven Weeks (IPRUG)
What I learned from Seven Languages in Seven Weeks (IPRUG)
Kerry Buckley
 
The Ring programming language version 1.10 book - Part 103 of 212
The Ring programming language version 1.10 book - Part 103 of 212The Ring programming language version 1.10 book - Part 103 of 212
The Ring programming language version 1.10 book - Part 103 of 212
Mahmoud Samir Fayed
 
V8 hidden class and inline cache
V8 hidden class and inline cacheV8 hidden class and inline cache
V8 hidden class and inline cache
Fanis Prodromou
 
Scaladroids: Developing Android Apps with Scala
Scaladroids: Developing Android Apps with ScalaScaladroids: Developing Android Apps with Scala
Scaladroids: Developing Android Apps with Scala
Ostap Andrusiv
 
Hello Swift Final 5/5 - Structures and Classes
Hello Swift Final 5/5 - Structures and ClassesHello Swift Final 5/5 - Structures and Classes
Hello Swift Final 5/5 - Structures and Classes
Cody Yun
 
Solr & Lucene @ Etsy by Gregg Donovan
Solr & Lucene @ Etsy by Gregg DonovanSolr & Lucene @ Etsy by Gregg Donovan
Solr & Lucene @ Etsy by Gregg Donovan
Gregg Donovan
 
OSDC.fr 2012 :: Cascalog : progammation logique pour Hadoop
OSDC.fr 2012 :: Cascalog : progammation logique pour HadoopOSDC.fr 2012 :: Cascalog : progammation logique pour Hadoop
OSDC.fr 2012 :: Cascalog : progammation logique pour Hadoop
Publicis Sapient Engineering
 
Scala for scripting
Scala for scriptingScala for scripting
Scala for scripting
michid
 
Functional Object-Oriented Imperative Scala / 関数型オブジェクト指向命令型 Scala by Sébasti...
Functional Object-Oriented Imperative Scala / 関数型オブジェクト指向命令型 Scala by Sébasti...Functional Object-Oriented Imperative Scala / 関数型オブジェクト指向命令型 Scala by Sébasti...
Functional Object-Oriented Imperative Scala / 関数型オブジェクト指向命令型 Scala by Sébasti...
scalaconfjp
 
Postobjektové programovanie v Ruby
Postobjektové programovanie v RubyPostobjektové programovanie v Ruby
Postobjektové programovanie v Ruby
Jano Suchal
 
Erlang for data ops
Erlang for data opsErlang for data ops
Erlang for data ops
mnacos
 
Scala traits training by Sanjeev Kumar @Kick Start Scala traits & Play, organ...
Scala traits training by Sanjeev Kumar @Kick Start Scala traits & Play, organ...Scala traits training by Sanjeev Kumar @Kick Start Scala traits & Play, organ...
Scala traits training by Sanjeev Kumar @Kick Start Scala traits & Play, organ...
Sanjeev_Knoldus
 
循環参照のはなし
循環参照のはなし循環参照のはなし
循環参照のはなし
Masahiro Honma
 

Viewers also liked (20)

Noise Models
Noise ModelsNoise Models
Noise Models
Sardar Alam
 
filters for noise in image processing
filters for noise in image processingfilters for noise in image processing
filters for noise in image processing
Sardar Alam
 
Noise Models
Noise ModelsNoise Models
Noise Models
Sardar Alam
 
Dct,gibbs phen,oversampled adc,polyphase decomposition
Dct,gibbs phen,oversampled adc,polyphase decompositionDct,gibbs phen,oversampled adc,polyphase decomposition
Dct,gibbs phen,oversampled adc,polyphase decomposition
Muhammad Younas
 
Java
Java Java
Java
Edureka!
 
Lecture 10
Lecture 10Lecture 10
Lecture 10
Wael Sharba
 
Programming with Java: the Basics
Programming with Java: the BasicsProgramming with Java: the Basics
Programming with Java: the Basics
Jussi Pohjolainen
 
Basics of java 2
Basics of java 2Basics of java 2
Basics of java 2
Raghu nath
 
Java basics notes
Java basics notesJava basics notes
Java basics notes
poonguzhali1826
 
Java Basics
Java BasicsJava Basics
Java Basics
Rajkattamuri
 
Java Basics
Java BasicsJava Basics
Java Basics
Brandon Black
 
Introduction to basics of java
Introduction to basics of javaIntroduction to basics of java
Introduction to basics of java
vinay arora
 
Java Course 2: Basics
Java Course 2: BasicsJava Course 2: Basics
Java Course 2: Basics
Anton Keks
 
Java Course 3: OOP
Java Course 3: OOPJava Course 3: OOP
Java Course 3: OOP
Anton Keks
 
PALASH SL GUPTA
PALASH SL GUPTAPALASH SL GUPTA
PALASH SL GUPTA
PALASH GUPTA
 
Java Programming for Designers
Java Programming for DesignersJava Programming for Designers
Java Programming for Designers
R. Sosa
 
Java basics
Java basicsJava basics
Java basics
Jitender Jain
 
Basics of file handling
Basics of file handlingBasics of file handling
Basics of file handling
pinkpreet_kaur
 
2. Basics of Java
2. Basics of Java2. Basics of Java
2. Basics of Java
Nilesh Dalvi
 
Core java Basics
Core java BasicsCore java Basics
Core java Basics
RAMU KOLLI
 
filters for noise in image processing
filters for noise in image processingfilters for noise in image processing
filters for noise in image processing
Sardar Alam
 
Dct,gibbs phen,oversampled adc,polyphase decomposition
Dct,gibbs phen,oversampled adc,polyphase decompositionDct,gibbs phen,oversampled adc,polyphase decomposition
Dct,gibbs phen,oversampled adc,polyphase decomposition
Muhammad Younas
 
Programming with Java: the Basics
Programming with Java: the BasicsProgramming with Java: the Basics
Programming with Java: the Basics
Jussi Pohjolainen
 
Basics of java 2
Basics of java 2Basics of java 2
Basics of java 2
Raghu nath
 
Introduction to basics of java
Introduction to basics of javaIntroduction to basics of java
Introduction to basics of java
vinay arora
 
Java Course 2: Basics
Java Course 2: BasicsJava Course 2: Basics
Java Course 2: Basics
Anton Keks
 
Java Course 3: OOP
Java Course 3: OOPJava Course 3: OOP
Java Course 3: OOP
Anton Keks
 
Java Programming for Designers
Java Programming for DesignersJava Programming for Designers
Java Programming for Designers
R. Sosa
 
Basics of file handling
Basics of file handlingBasics of file handling
Basics of file handling
pinkpreet_kaur
 
Core java Basics
Core java BasicsCore java Basics
Core java Basics
RAMU KOLLI
 
Ad

Similar to Java basics (20)

Static or Dynamic Typing? Why not both?
Static or Dynamic Typing? Why not both?Static or Dynamic Typing? Why not both?
Static or Dynamic Typing? Why not both?
Mario Camou Riveroll
 
Scala @ TechMeetup Edinburgh
Scala @ TechMeetup EdinburghScala @ TechMeetup Edinburgh
Scala @ TechMeetup Edinburgh
Stuart Roebuck
 
Java oop
Java oopJava oop
Java oop
bchinnaiyan
 
Intro to Scala.js - Scala UG Cologne
Intro to Scala.js - Scala UG CologneIntro to Scala.js - Scala UG Cologne
Intro to Scala.js - Scala UG Cologne
Marius Soutier
 
[Start] Scala
[Start] Scala[Start] Scala
[Start] Scala
佑介 九岡
 
<img src="../i/r_14.png" />
<img src="../i/r_14.png" /><img src="../i/r_14.png" />
<img src="../i/r_14.png" />
tutorialsruby
 
jQuery-1-Ajax
jQuery-1-AjaxjQuery-1-Ajax
jQuery-1-Ajax
guestcf600a
 
Microsoft PowerPoint - <b>jQuery</b>-1-Ajax.pptx
Microsoft PowerPoint - <b>jQuery</b>-1-Ajax.pptxMicrosoft PowerPoint - <b>jQuery</b>-1-Ajax.pptx
Microsoft PowerPoint - <b>jQuery</b>-1-Ajax.pptx
tutorialsruby
 
jQuery-1-Ajax
jQuery-1-AjaxjQuery-1-Ajax
jQuery-1-Ajax
guestcf600a
 
Scala uma poderosa linguagem para a jvm
Scala   uma poderosa linguagem para a jvmScala   uma poderosa linguagem para a jvm
Scala uma poderosa linguagem para a jvm
Isaias Barroso
 
Practical PHP 5.3
Practical PHP 5.3Practical PHP 5.3
Practical PHP 5.3
Nate Abele
 
BCS SPA 2010 - An Introduction to Scala for Java Developers
BCS SPA 2010 - An Introduction to Scala for Java DevelopersBCS SPA 2010 - An Introduction to Scala for Java Developers
BCS SPA 2010 - An Introduction to Scala for Java Developers
Miles Sabin
 
An Introduction to Scala for Java Developers
An Introduction to Scala for Java DevelopersAn Introduction to Scala for Java Developers
An Introduction to Scala for Java Developers
Miles Sabin
 
Perl basics for pentesters part 2
Perl basics for pentesters part 2Perl basics for pentesters part 2
Perl basics for pentesters part 2
n|u - The Open Security Community
 
Java script core
Java script coreJava script core
Java script core
Vaishnu Vaishu
 
NUS Hackers Club Mar 21 - Whats New in JavaSE 8?
NUS Hackers Club Mar 21 - Whats New in JavaSE 8?NUS Hackers Club Mar 21 - Whats New in JavaSE 8?
NUS Hackers Club Mar 21 - Whats New in JavaSE 8?
Chuk-Munn Lee
 
Perl basics for Pentesters
Perl basics for PentestersPerl basics for Pentesters
Perl basics for Pentesters
Sanjeev Kumar Jaiswal
 
Jersey
JerseyJersey
Jersey
Yung-Lin Ho
 
55 New Features in Java 7
55 New Features in Java 755 New Features in Java 7
55 New Features in Java 7
Boulder Java User's Group
 
Spl Not A Bridge Too Far phpNW09
Spl Not A Bridge Too Far phpNW09Spl Not A Bridge Too Far phpNW09
Spl Not A Bridge Too Far phpNW09
Michelangelo van Dam
 
Static or Dynamic Typing? Why not both?
Static or Dynamic Typing? Why not both?Static or Dynamic Typing? Why not both?
Static or Dynamic Typing? Why not both?
Mario Camou Riveroll
 
Scala @ TechMeetup Edinburgh
Scala @ TechMeetup EdinburghScala @ TechMeetup Edinburgh
Scala @ TechMeetup Edinburgh
Stuart Roebuck
 
Intro to Scala.js - Scala UG Cologne
Intro to Scala.js - Scala UG CologneIntro to Scala.js - Scala UG Cologne
Intro to Scala.js - Scala UG Cologne
Marius Soutier
 
<img src="../i/r_14.png" />
<img src="../i/r_14.png" /><img src="../i/r_14.png" />
<img src="../i/r_14.png" />
tutorialsruby
 
Microsoft PowerPoint - <b>jQuery</b>-1-Ajax.pptx
Microsoft PowerPoint - <b>jQuery</b>-1-Ajax.pptxMicrosoft PowerPoint - <b>jQuery</b>-1-Ajax.pptx
Microsoft PowerPoint - <b>jQuery</b>-1-Ajax.pptx
tutorialsruby
 
Scala uma poderosa linguagem para a jvm
Scala   uma poderosa linguagem para a jvmScala   uma poderosa linguagem para a jvm
Scala uma poderosa linguagem para a jvm
Isaias Barroso
 
Practical PHP 5.3
Practical PHP 5.3Practical PHP 5.3
Practical PHP 5.3
Nate Abele
 
BCS SPA 2010 - An Introduction to Scala for Java Developers
BCS SPA 2010 - An Introduction to Scala for Java DevelopersBCS SPA 2010 - An Introduction to Scala for Java Developers
BCS SPA 2010 - An Introduction to Scala for Java Developers
Miles Sabin
 
An Introduction to Scala for Java Developers
An Introduction to Scala for Java DevelopersAn Introduction to Scala for Java Developers
An Introduction to Scala for Java Developers
Miles Sabin
 
NUS Hackers Club Mar 21 - Whats New in JavaSE 8?
NUS Hackers Club Mar 21 - Whats New in JavaSE 8?NUS Hackers Club Mar 21 - Whats New in JavaSE 8?
NUS Hackers Club Mar 21 - Whats New in JavaSE 8?
Chuk-Munn Lee
 
Ad

More from Sardar Alam (14)

Undoing of mental illness -- seek help
Undoing of mental illness -- seek helpUndoing of mental illness -- seek help
Undoing of mental illness -- seek help
Sardar Alam
 
introduction to python
introduction to pythonintroduction to python
introduction to python
Sardar Alam
 
Operator Overloading
Operator Overloading  Operator Overloading
Operator Overloading
Sardar Alam
 
skin disease classification
skin disease classificationskin disease classification
skin disease classification
Sardar Alam
 
Introduction to machine learningunsupervised learning
Introduction to machine learningunsupervised learningIntroduction to machine learningunsupervised learning
Introduction to machine learningunsupervised learning
Sardar Alam
 
Opengl texturing
Opengl texturingOpengl texturing
Opengl texturing
Sardar Alam
 
Mathematics fundamentals
Mathematics fundamentalsMathematics fundamentals
Mathematics fundamentals
Sardar Alam
 
3 d graphics with opengl part 2
3 d graphics with opengl  part 23 d graphics with opengl  part 2
3 d graphics with opengl part 2
Sardar Alam
 
3 d graphics with opengl part 1
3 d graphics with opengl part 13 d graphics with opengl part 1
3 d graphics with opengl part 1
Sardar Alam
 
3 d graphics basics
3 d graphics basics3 d graphics basics
3 d graphics basics
Sardar Alam
 
2 d transformations
2 d transformations2 d transformations
2 d transformations
Sardar Alam
 
Gui
GuiGui
Gui
Sardar Alam
 
Inheritance
InheritanceInheritance
Inheritance
Sardar Alam
 
Arrays string handling java packages
Arrays string handling java packagesArrays string handling java packages
Arrays string handling java packages
Sardar Alam
 
Undoing of mental illness -- seek help
Undoing of mental illness -- seek helpUndoing of mental illness -- seek help
Undoing of mental illness -- seek help
Sardar Alam
 
introduction to python
introduction to pythonintroduction to python
introduction to python
Sardar Alam
 
Operator Overloading
Operator Overloading  Operator Overloading
Operator Overloading
Sardar Alam
 
skin disease classification
skin disease classificationskin disease classification
skin disease classification
Sardar Alam
 
Introduction to machine learningunsupervised learning
Introduction to machine learningunsupervised learningIntroduction to machine learningunsupervised learning
Introduction to machine learningunsupervised learning
Sardar Alam
 
Opengl texturing
Opengl texturingOpengl texturing
Opengl texturing
Sardar Alam
 
Mathematics fundamentals
Mathematics fundamentalsMathematics fundamentals
Mathematics fundamentals
Sardar Alam
 
3 d graphics with opengl part 2
3 d graphics with opengl  part 23 d graphics with opengl  part 2
3 d graphics with opengl part 2
Sardar Alam
 
3 d graphics with opengl part 1
3 d graphics with opengl part 13 d graphics with opengl part 1
3 d graphics with opengl part 1
Sardar Alam
 
3 d graphics basics
3 d graphics basics3 d graphics basics
3 d graphics basics
Sardar Alam
 
2 d transformations
2 d transformations2 d transformations
2 d transformations
Sardar Alam
 
Arrays string handling java packages
Arrays string handling java packagesArrays string handling java packages
Arrays string handling java packages
Sardar Alam
 

Recently uploaded (20)

Best HR and Payroll Software in Bangladesh - accordHRM
Best HR and Payroll Software in Bangladesh - accordHRMBest HR and Payroll Software in Bangladesh - accordHRM
Best HR and Payroll Software in Bangladesh - accordHRM
accordHRM
 
AEM User Group DACH - 2025 Inaugural Meeting
AEM User Group DACH - 2025 Inaugural MeetingAEM User Group DACH - 2025 Inaugural Meeting
AEM User Group DACH - 2025 Inaugural Meeting
jennaf3
 
Wilcom Embroidery Studio Crack 2025 For Windows
Wilcom Embroidery Studio Crack 2025 For WindowsWilcom Embroidery Studio Crack 2025 For Windows
Wilcom Embroidery Studio Crack 2025 For Windows
Google
 
GC Tuning: A Masterpiece in Performance Engineering
GC Tuning: A Masterpiece in Performance EngineeringGC Tuning: A Masterpiece in Performance Engineering
GC Tuning: A Masterpiece in Performance Engineering
Tier1 app
 
From Vibe Coding to Vibe Testing - Complete PowerPoint Presentation
From Vibe Coding to Vibe Testing - Complete PowerPoint PresentationFrom Vibe Coding to Vibe Testing - Complete PowerPoint Presentation
From Vibe Coding to Vibe Testing - Complete PowerPoint Presentation
Shay Ginsbourg
 
Mobile Application Developer Dubai | Custom App Solutions by Ajath
Mobile Application Developer Dubai | Custom App Solutions by AjathMobile Application Developer Dubai | Custom App Solutions by Ajath
Mobile Application Developer Dubai | Custom App Solutions by Ajath
Ajath Infotech Technologies LLC
 
Exchange Migration Tool- Shoviv Software
Exchange Migration Tool- Shoviv SoftwareExchange Migration Tool- Shoviv Software
Exchange Migration Tool- Shoviv Software
Shoviv Software
 
sequencediagrams.pptx software Engineering
sequencediagrams.pptx software Engineeringsequencediagrams.pptx software Engineering
sequencediagrams.pptx software Engineering
aashrithakondapalli8
 
Troubleshooting JVM Outages – 3 Fortune 500 case studies
Troubleshooting JVM Outages – 3 Fortune 500 case studiesTroubleshooting JVM Outages – 3 Fortune 500 case studies
Troubleshooting JVM Outages – 3 Fortune 500 case studies
Tier1 app
 
NYC ACE 08-May-2025-Combined Presentation.pdf
NYC ACE 08-May-2025-Combined Presentation.pdfNYC ACE 08-May-2025-Combined Presentation.pdf
NYC ACE 08-May-2025-Combined Presentation.pdf
AUGNYC
 
Top Magento Hyvä Theme Features That Make It Ideal for E-commerce.pdf
Top Magento Hyvä Theme Features That Make It Ideal for E-commerce.pdfTop Magento Hyvä Theme Features That Make It Ideal for E-commerce.pdf
Top Magento Hyvä Theme Features That Make It Ideal for E-commerce.pdf
evrigsolution
 
Time Estimation: Expert Tips & Proven Project Techniques
Time Estimation: Expert Tips & Proven Project TechniquesTime Estimation: Expert Tips & Proven Project Techniques
Time Estimation: Expert Tips & Proven Project Techniques
Livetecs LLC
 
Adobe InDesign Crack FREE Download 2025 link
Adobe InDesign Crack FREE Download 2025 linkAdobe InDesign Crack FREE Download 2025 link
Adobe InDesign Crack FREE Download 2025 link
mahmadzubair09
 
Download 4k Video Downloader Crack Pre-Activated
Download 4k Video Downloader Crack Pre-ActivatedDownload 4k Video Downloader Crack Pre-Activated
Download 4k Video Downloader Crack Pre-Activated
Web Designer
 
A Comprehensive Guide to CRM Software Benefits for Every Business Stage
A Comprehensive Guide to CRM Software Benefits for Every Business StageA Comprehensive Guide to CRM Software Benefits for Every Business Stage
A Comprehensive Guide to CRM Software Benefits for Every Business Stage
SynapseIndia
 
[gbgcpp] Let's get comfortable with concepts
[gbgcpp] Let's get comfortable with concepts[gbgcpp] Let's get comfortable with concepts
[gbgcpp] Let's get comfortable with concepts
Dimitrios Platis
 
Deploying & Testing Agentforce - End-to-end with Copado - Ewenb Clark
Deploying & Testing Agentforce - End-to-end with Copado - Ewenb ClarkDeploying & Testing Agentforce - End-to-end with Copado - Ewenb Clark
Deploying & Testing Agentforce - End-to-end with Copado - Ewenb Clark
Peter Caitens
 
The-Future-is-Hybrid-Exploring-Azure’s-Role-in-Multi-Cloud-Strategies.pptx
The-Future-is-Hybrid-Exploring-Azure’s-Role-in-Multi-Cloud-Strategies.pptxThe-Future-is-Hybrid-Exploring-Azure’s-Role-in-Multi-Cloud-Strategies.pptx
The-Future-is-Hybrid-Exploring-Azure’s-Role-in-Multi-Cloud-Strategies.pptx
james brownuae
 
What Do Candidates Really Think About AI-Powered Recruitment Tools?
What Do Candidates Really Think About AI-Powered Recruitment Tools?What Do Candidates Really Think About AI-Powered Recruitment Tools?
What Do Candidates Really Think About AI-Powered Recruitment Tools?
HireME
 
Why Tapitag Ranks Among the Best Digital Business Card Providers
Why Tapitag Ranks Among the Best Digital Business Card ProvidersWhy Tapitag Ranks Among the Best Digital Business Card Providers
Why Tapitag Ranks Among the Best Digital Business Card Providers
Tapitag
 
Best HR and Payroll Software in Bangladesh - accordHRM
Best HR and Payroll Software in Bangladesh - accordHRMBest HR and Payroll Software in Bangladesh - accordHRM
Best HR and Payroll Software in Bangladesh - accordHRM
accordHRM
 
AEM User Group DACH - 2025 Inaugural Meeting
AEM User Group DACH - 2025 Inaugural MeetingAEM User Group DACH - 2025 Inaugural Meeting
AEM User Group DACH - 2025 Inaugural Meeting
jennaf3
 
Wilcom Embroidery Studio Crack 2025 For Windows
Wilcom Embroidery Studio Crack 2025 For WindowsWilcom Embroidery Studio Crack 2025 For Windows
Wilcom Embroidery Studio Crack 2025 For Windows
Google
 
GC Tuning: A Masterpiece in Performance Engineering
GC Tuning: A Masterpiece in Performance EngineeringGC Tuning: A Masterpiece in Performance Engineering
GC Tuning: A Masterpiece in Performance Engineering
Tier1 app
 
From Vibe Coding to Vibe Testing - Complete PowerPoint Presentation
From Vibe Coding to Vibe Testing - Complete PowerPoint PresentationFrom Vibe Coding to Vibe Testing - Complete PowerPoint Presentation
From Vibe Coding to Vibe Testing - Complete PowerPoint Presentation
Shay Ginsbourg
 
Mobile Application Developer Dubai | Custom App Solutions by Ajath
Mobile Application Developer Dubai | Custom App Solutions by AjathMobile Application Developer Dubai | Custom App Solutions by Ajath
Mobile Application Developer Dubai | Custom App Solutions by Ajath
Ajath Infotech Technologies LLC
 
Exchange Migration Tool- Shoviv Software
Exchange Migration Tool- Shoviv SoftwareExchange Migration Tool- Shoviv Software
Exchange Migration Tool- Shoviv Software
Shoviv Software
 
sequencediagrams.pptx software Engineering
sequencediagrams.pptx software Engineeringsequencediagrams.pptx software Engineering
sequencediagrams.pptx software Engineering
aashrithakondapalli8
 
Troubleshooting JVM Outages – 3 Fortune 500 case studies
Troubleshooting JVM Outages – 3 Fortune 500 case studiesTroubleshooting JVM Outages – 3 Fortune 500 case studies
Troubleshooting JVM Outages – 3 Fortune 500 case studies
Tier1 app
 
NYC ACE 08-May-2025-Combined Presentation.pdf
NYC ACE 08-May-2025-Combined Presentation.pdfNYC ACE 08-May-2025-Combined Presentation.pdf
NYC ACE 08-May-2025-Combined Presentation.pdf
AUGNYC
 
Top Magento Hyvä Theme Features That Make It Ideal for E-commerce.pdf
Top Magento Hyvä Theme Features That Make It Ideal for E-commerce.pdfTop Magento Hyvä Theme Features That Make It Ideal for E-commerce.pdf
Top Magento Hyvä Theme Features That Make It Ideal for E-commerce.pdf
evrigsolution
 
Time Estimation: Expert Tips & Proven Project Techniques
Time Estimation: Expert Tips & Proven Project TechniquesTime Estimation: Expert Tips & Proven Project Techniques
Time Estimation: Expert Tips & Proven Project Techniques
Livetecs LLC
 
Adobe InDesign Crack FREE Download 2025 link
Adobe InDesign Crack FREE Download 2025 linkAdobe InDesign Crack FREE Download 2025 link
Adobe InDesign Crack FREE Download 2025 link
mahmadzubair09
 
Download 4k Video Downloader Crack Pre-Activated
Download 4k Video Downloader Crack Pre-ActivatedDownload 4k Video Downloader Crack Pre-Activated
Download 4k Video Downloader Crack Pre-Activated
Web Designer
 
A Comprehensive Guide to CRM Software Benefits for Every Business Stage
A Comprehensive Guide to CRM Software Benefits for Every Business StageA Comprehensive Guide to CRM Software Benefits for Every Business Stage
A Comprehensive Guide to CRM Software Benefits for Every Business Stage
SynapseIndia
 
[gbgcpp] Let's get comfortable with concepts
[gbgcpp] Let's get comfortable with concepts[gbgcpp] Let's get comfortable with concepts
[gbgcpp] Let's get comfortable with concepts
Dimitrios Platis
 
Deploying & Testing Agentforce - End-to-end with Copado - Ewenb Clark
Deploying & Testing Agentforce - End-to-end with Copado - Ewenb ClarkDeploying & Testing Agentforce - End-to-end with Copado - Ewenb Clark
Deploying & Testing Agentforce - End-to-end with Copado - Ewenb Clark
Peter Caitens
 
The-Future-is-Hybrid-Exploring-Azure’s-Role-in-Multi-Cloud-Strategies.pptx
The-Future-is-Hybrid-Exploring-Azure’s-Role-in-Multi-Cloud-Strategies.pptxThe-Future-is-Hybrid-Exploring-Azure’s-Role-in-Multi-Cloud-Strategies.pptx
The-Future-is-Hybrid-Exploring-Azure’s-Role-in-Multi-Cloud-Strategies.pptx
james brownuae
 
What Do Candidates Really Think About AI-Powered Recruitment Tools?
What Do Candidates Really Think About AI-Powered Recruitment Tools?What Do Candidates Really Think About AI-Powered Recruitment Tools?
What Do Candidates Really Think About AI-Powered Recruitment Tools?
HireME
 
Why Tapitag Ranks Among the Best Digital Business Card Providers
Why Tapitag Ranks Among the Best Digital Business Card ProvidersWhy Tapitag Ranks Among the Best Digital Business Card Providers
Why Tapitag Ranks Among the Best Digital Business Card Providers
Tapitag
 

Java basics

  • 2. Three Java Editions • Java Platform, Standard Edition (Java SE) • Java Platform, Enterprise Edition (Java EE) • Java Platform, Micro Edition (Java ME) Lecture 2: Overview: Java Peculiarities 3
  • 3. The Java Platform, Standard Edition (Java SE) Lecture 2: Overview: Java Peculiarities 4
  • 4. Java Platform, Enterprise Edition (Java EE) • Enterprise Application Technologies – Enterprise JavaBeans (EJB) – J2EE Connector Architecture – Java Message Service (JMS) • Web Application Technologies – Java Servlet – JavaServer Pages (JSP) – JavaServer Faces (JSF) – Java Persistence API (JSR) • Provides a POJO persistence model for object-relational mapping. Developed and use for EJB, but can be used directly – Java Transaction API (JTA) – JavaMail • Management and Security Technologies – J2EE Application Deployment – J2EE Management – Java Authorization Contract for Containers Lecture 2: Overview: Java Peculiarities 5
  • 5. Object.Oriented$Nomenclature$ • Class$means$a$category$of$things$ – A$class$name$can$be$used$in$Java$as$the$type$of$a$field$or$ local$variable$or$as$the$return$type$of$a$func?on$(method)$ • Object$means$a$par?cular$item$that$belongs$to$a$ class$ – Also$called$an$instance$ • For$example,$consider$the$following$line:$ $ $$ $$$$String s1 = Hello;$ – Here,$String$is$the$class,$s1$is$an$instance$variable$of$class$ String,$whose$value$is$the$String$object$Hello$$ Dr. Shahid Raza! 2!
  • 6. Example$1:$Instance$Variables$ (Fields$or$Data$Members)$ class Ship1 { public double x, y, speed, direction; public String name; } public class Test1 { public static void main(String[] args) { Ship1 s1 = new Ship1(); s1.x = 0.0; s1.y = 0.0; s1.speed = 1.0; s1.direction = 0.0; // East s1.name = Ship1; System.out.println(s1.name + is initially at ( + s1.x + , + s1.y + ).); s1.x = s1.x + s1.speed * Math.cos(s1.direction * Math.PI / 180.0); s1.y = s1.y + s1.speed * Math.sin(s1.direction * Math.PI / 180.0); System.out.println(s1.name + has moved to ( + s1.x + , + s1.y + ).); } } Dr. Shahid Raza! 3!
  • 7. Instance$Variables:$Results$ • Compiling$and$Running:$ javac Test1.java java Test1 Output:$ Ship1 is initially at (1,0). Ship2 has moved to (-1.41421,1.41421). Dr. Shahid Raza! 4!
  • 8. Primitive Data Types • Much like in C – byte – short – char Lecture 2: Overview: Java Peculiarities 21 – int – long – float – double • See Examples in Exercise 0.
  • 9. Widening Primitive Conversions • Do not lose information about the overall magnitude of a numeric value. From To byte short, int, long, float, double short int, long, float, double char int, long, float, double int long, float, double long float, double float double Lecture 2: Overview: Java Peculiarities 22
  • 10. Narrowing Primitive Conversions • May lose information about the overall magnitude of a numeric value and may also lose precision. From To byte char short byte, char char byte, short int byte, short, char long byte, short, char, int float byte, short, char, int, long double byte, short, char, int, long, float Lecture 2: Overview: Java Peculiarities 23
  • 11. Example$1:$Major$Points$ • Java$naming$conven?on$ • Format$of$class$defini?ons$ • Crea?ng$classes$with$new$ • Accessing$fields$with$ variableName.fieldName$ Dr. Shahid Raza! 5!
  • 12. Java$Naming$Conven?ons$ • Leading$uppercase$leTer$in$class$name$ public class MyClass { ... } • Leading$lowercase$leTer$in$field,$local$ variable,$and$method$(func?on)$names$ – myField,myVar,myMethod Dr. Shahid Raza! 6!
  • 13. First$Look$at$Java$Classes$ • The$general$form$of$a$simple$class$is$ modifier class Classname { modifier data-type field1; modifier data-type field2; ... modifier data-type fieldN; modifier Return-Type methodName1(parameters) { //statements } ... modifier Return-Type methodName2(parameters) { //statements } } Dr. Shahid Raza! 7!
  • 14. Objects$and$References$ • Once$a$class$is$defined,$you$can$easily$declare$a$ variable$(object$reference)$of$the$class$ Ship s1, s2; Point start; Color blue; • Object$references$are$ini?ally$null$$$ – The$null$value$is$a$dis?nct$type$in$Java$and$should$ not$be$considered$equal$to$zero$$ – A$primi?ve$data$type$cannot$be$cast$to$an$object$(use$ wrapper$classes)$ • The$new$operator$is$required$to$explicitly$create$ the$object$that$is$referenced$ ClassName variableName = new ClassName();$ Dr. Shahid Raza! 8!
  • 15. Accessing$Instance$Variables$ • Use$a$dot$between$the$variable$name$and$the$field$ name,$as$follows:$ variableName.fieldName$$ • For$example,$Java$has$a$built.in$class$called$Point$that$ has$x$and$y$fields$ Point p = new Point(2, 3); // Build a Point object int xSquared = p.x * p.x; // xSquared is 4 p.x = 7; • One$major$excep?on$applies$to$the$access$fields$ through$varName.fieldName$rule$ – Methods$can$access$fields$of$current$object$without$varName$ – This$will$be$explained$when$methods$(func?ons)$are$discussed$ Dr. Shahid Raza! 9!
  • 16. Example$2:$Methods$ class Ship2 { public double x=0.0, y=0.0, speed=1.0, direction=0.0; public String name = UnnamedShip; private double degreesToRadians(double degrees) { return(degrees * Math.PI / 180.0); } public void move() { double angle = degreesToRadians(direction); x = x + speed * Math.cos(angle); y = y + speed * Math.sin(angle); } public void printLocation() { System.out.println(name + is at ( + x + , + y + ).); } } Dr. Shahid Raza! 10!
  • 17. Methods$(Con?nued)$ public class Test2 { public static void main(String[] args) { Ship2 s1 = new Ship2(); s1.name = Ship1; Ship2 s2 = new Ship2(); s2.direction = 135.0; // Northwest s2.speed = 2.0; s2.name = Ship2; s1.move(); s2.move(); s1.printLocation(); s2.printLocation(); } } • Compiling$and$Running:$ javac Test2.java java Test2 • Output:$ Ship1 is at (1,0). Ship2 is at (-1.41421,1.41421). Dr. Shahid Raza! 11!
  • 18. Example$2:$Major$Points$ • Format$of$method$defini?ons$ • Methods$that$access$local$fields$ • Calling$methods$ • Sta?c$methods$ • Default$values$for$fields$ • public/private$dis?nc?on$ Dr. Shahid Raza! 12!
  • 19. Defining$Methods$ (Func?ons$Inside$Classes)$ • Basic$method$declara?on:$ p u b l i c R e t u r n T y p e m e t h o d N a m e ( ttyyppee12 aarrgg12,, ...) { ... return(something of ReturnType); } • Excep?on$to$this$format:$if$you$declare$the$return$ type$as$void – This$special$syntax$that$means$this$method$isnt$ going$to$return$a$value$–$it$is$just$going$to$do$some$ side$effect$like$prin?ng$on$the$screen$$ – In$such$a$case$you$do$not$need$(in$fact,$are$not$ permiTed),$a$return$statement$that$includes$a$ value$to$be$returned$ Dr. Shahid Raza! 13!
  • 20. Examples$of$Defining$Methods$ • Here$are$two$examples:$ – The$first$squares$an$integer$$ – The$second$returns$the$faster$of$two$Ship$objects,$assuming$that$a$ class$called$Ship$has$been$defined$that$has$a$field$named$speed$$ // Example function call: // int val = square(7); public int square(int x) { return(x*x); } // Example function call: // Ship faster = fasterShip(someShip, someOtherShip); public Ship fasterShip(Ship ship1, Ship ship2) { if (ship1.speed ship2.speed) { return(ship1); } else { return(ship2); } }$ Dr. Shahid Raza! 14!
  • 21. Excep?on$to$the$Field$Access$with$ Dots$Rule$ • Normally$access$a$field$via: variableName.fieldName $ $ but$an$excep?on$is$when$a$method$of$a$class$wants$to$access$ fields$of$that$same$class$$ – In$that$case,$omit$the$variable$name$and$the$dot$ – For$example,$a$move$method$within$the$Ship$class$might$do:$ public void move() { x = x + speed * Math.cos(direction); ... } • Here,$x,$speed,$and$direction$are$all$fields$within$the$class$that$ the$move$method$belongs$to,$so$move$can$refer$to$the$fields$directly$ $ – As$well$see$later,$you$s?ll$can$use$the$variableName.fieldName$ approach,$and$Java$invents$a$variable$called$this$that$can$be$used$for$ that$purpose$ Dr. Shahid Raza! 15!
  • 22. Sta?c$Methods$ • Sta?c$func?ons$are$like$global$func?ons$in$other$ languages$ $ • You$can$call$a$sta?c$method$through$the$class$name$ ClassName.functionName(arguments); – For$example,$the$Math$class$has$a$sta?c$method$called$cos$ that$expects$a$double$precision$number$as$an$argument$ • So$you$can$call$Math.cos(3.5)$without$ever$having$any$object$ (instance)$of$the$Math$class$ Dr. Shahid Raza! 16!
  • 23. Method$Visibility$ • public/private$dis?nc?on$ – A$declara?on$of$private$means$that$outside$methods$ cant$call$it$..$only$methods$within$the$same$class$can$ • Thus,$for$example,$the$main$method$of$the$Test2$class$could$ not$have$done$$ double x = s1.degreesToRadians(2.2); – ATemp?ng$to$do$so$would$have$resulted$in$an$error$at$compile$?me$$ – Only$say$public$for$methods$that$you$want%to%guarantee% your%class%will%make%available%to%users$$ – You$are$free$to$change$or$eliminate$private$methods$ without$telling$users$of$your$class$about$ $$$ Dr. Shahid Raza! 17!
  • 24. Example$3:$Constructors$ class Ship3 { public double x, y, speed, direction; public String name; public Ship3(double x, double y, double speed, double direction, String name) { this.x = x; // this differentiates instance vars this.y = y; // from local vars. this.speed = speed; this.direction = direction; this.name = name; } private double degreesToRadians(double degrees) { return(degrees * Math.PI / 180.0); } ... Dr. Shahid Raza! 18!
  • 25. Constructors$(Con?nued)$ public void move() { double angle = degreesToRadians(direction); x = x + speed * Math.cos(angle); y = y + speed * Math.sin(angle); } public void printLocation() { System.out.println(name + is at ( + x + , + y + ).); } } public class Test3 { public static void main(String[] args) { Ship3 s1 = new Ship3(0.0, 0.0, 1.0, 0.0, Ship1); Ship3 s2 = new Ship3(0.0, 0.0, 2.0, 135.0, Ship2); s1.move(); s2.move(); s1.printLocation(); s2.printLocation(); } }$ Dr. Shahid Raza! 19!
  • 26. Constructor$Example:$Results$ • Compiling$and$Running: javac Test3.java java Test3 • Output:$ Ship1 is at (1,0). Ship2 is at (-1.41421,1.41421). Dr. Shahid Raza! 20!
  • 27. Example$3:$Major$Points$ • Format$of$constructor$defini?ons$ • The$this$reference$ • Destructors$(not!)$ Dr. Shahid Raza! 21!
  • 28. Constructors$ • Constructors$are$special$func?ons$called$when$a$class$is$ created$with$new$ – Constructors$are$especially$useful$for$supplying$values$of$fields$ – Constructors$are$declared$through:$ public ClassName(args) { ... } – No?ce$that$the$constructor$name$must$exactly$match$the$class$ name$ – Constructors$have$no$return$type$(not$even$void),$unlike$a$ regular$method$ – Java$automa?cally$provides$a$zero.argument$only$if$the$class$doesnt$define$its$own$constcrouncstotrru$$ctor$if$and$ • Thats$why$you$could$say$ Ship1 s1 = new Ship1(); $$$in$the$first$example,$even$though$a$constructor$was$never$defined$ Dr. Shahid Raza! 22!
  • 29. The$this$Variable$ • The$this$object$reference$can$be$used$inside$any$non.sta?c$ method$to$refer$to$the$current$object$ • The$common$uses$of$the$this$reference$are:$ 1. To$pass$a$reference$to$the$current$object$as$a$parameter$to$other$ methods$ someMethod(this); 2. To$resolve$name$conflicts$ • Using$this$permits$the$use$of$instance$variables$in$methods$that$ have$local$variables$with$the$same$name$ – Note$that$it$is$only$necessary$to$say$this.fieldName$when$you$ have$a$local$variable$and$a$class$field$with$the$same$name;$otherwise$ just$use$fieldName$with$no$this Dr. Shahid Raza! 23!
  • 30. Destructors$ This Page Intentionally Left Blank Dr. Shahid Raza! 24!
  • 31. Summary$ • Class$names$should$start$with$uppercase;$method$names$ with$lowercase$ • Methods$must$define$a$return$type$or$void$if$no$result$ is$returned$ • If$a$method$accepts$no$arguments,$the$arg.list$in$the$ method$declara?on$is$empty$instead$of$void$as$in$C$ • Sta?c$methods$do$not$require$an$instance$of$the$class;$ sta?c$methods$can$be$accessed$through$the$class$name$ • The$this$reference$in$a$class$refers$to$the$current$ object$$ • Class$constructors$do$not$declare$a$return$type$ • Java$performs$its$own$memory$management$and$ requires$no$destructors$ $$$ Dr. Shahid Raza! 25!
  翻译: