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!

More Related Content

What's hot

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
 

What's hot (20)

Clojure Deep Dive
Clojure Deep DiveClojure Deep Dive
Clojure Deep Dive
 
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!
 
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)
 
Best Guide for Javascript Objects
Best Guide for Javascript ObjectsBest Guide for Javascript Objects
Best Guide for Javascript Objects
 
Scala 2013 review
Scala 2013 reviewScala 2013 review
Scala 2013 review
 
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
 
V8 hidden class and inline cache
V8 hidden class and inline cacheV8 hidden class and inline cache
V8 hidden class and inline cache
 
Scaladroids: Developing Android Apps with Scala
Scaladroids: Developing Android Apps with ScalaScaladroids: Developing Android Apps with Scala
Scaladroids: Developing Android Apps with Scala
 
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
 
Solr & Lucene @ Etsy by Gregg Donovan
Solr & Lucene @ Etsy by Gregg DonovanSolr & Lucene @ Etsy by Gregg Donovan
Solr & Lucene @ Etsy by Gregg Donovan
 
Dart
DartDart
Dart
 
SOLID Ruby SOLID Rails
SOLID Ruby SOLID RailsSOLID Ruby SOLID Rails
SOLID Ruby SOLID Rails
 
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
 
Scala for scripting
Scala for scriptingScala for scripting
Scala for scripting
 
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...
 
Postobjektové programovanie v Ruby
Postobjektové programovanie v RubyPostobjektové programovanie v Ruby
Postobjektové programovanie v Ruby
 
Erlang for data ops
Erlang for data opsErlang for data ops
Erlang for data ops
 
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...
 
Solr @ Etsy - Apache Lucene Eurocon
Solr @ Etsy - Apache Lucene EuroconSolr @ Etsy - Apache Lucene Eurocon
Solr @ Etsy - Apache Lucene Eurocon
 
循環参照のはなし
循環参照のはなし循環参照のはなし
循環参照のはなし
 

Viewers also liked

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
 

Viewers also liked (20)

Noise Models
Noise ModelsNoise Models
Noise Models
 
filters for noise in image processing
filters for noise in image processingfilters for noise in image processing
filters for noise in image processing
 
Noise Models
Noise ModelsNoise Models
Noise Models
 
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
 
Java
Java Java
Java
 
Lecture 10
Lecture 10Lecture 10
Lecture 10
 
Programming with Java: the Basics
Programming with Java: the BasicsProgramming with Java: the Basics
Programming with Java: the Basics
 
Basics of java 2
Basics of java 2Basics of java 2
Basics of java 2
 
Java basics notes
Java basics notesJava basics notes
Java basics notes
 
Java Basics
Java BasicsJava Basics
Java Basics
 
Java Basics
Java BasicsJava Basics
Java Basics
 
Introduction to basics of java
Introduction to basics of javaIntroduction to basics of java
Introduction to basics of java
 
Java Course 2: Basics
Java Course 2: BasicsJava Course 2: Basics
Java Course 2: Basics
 
Java Course 3: OOP
Java Course 3: OOPJava Course 3: OOP
Java Course 3: OOP
 
PALASH SL GUPTA
PALASH SL GUPTAPALASH SL GUPTA
PALASH SL GUPTA
 
Java Programming for Designers
Java Programming for DesignersJava Programming for Designers
Java Programming for Designers
 
Java basics
Java basicsJava basics
Java basics
 
Basics of file handling
Basics of file handlingBasics of file handling
Basics of file handling
 
2. Basics of Java
2. Basics of Java2. Basics of Java
2. Basics of Java
 
Core java Basics
Core java BasicsCore java Basics
Core java Basics
 

Similar to Java basics

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
佑介 九岡
 
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
 
<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
 
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
 
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
 
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
 
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
 

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?
 
Scala @ TechMeetup Edinburgh
Scala @ TechMeetup EdinburghScala @ TechMeetup Edinburgh
Scala @ TechMeetup Edinburgh
 
Java oop
Java oopJava oop
Java oop
 
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
 
[Start] Scala
[Start] Scala[Start] Scala
[Start] Scala
 
jQuery-1-Ajax
jQuery-1-AjaxjQuery-1-Ajax
jQuery-1-Ajax
 
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
 
<img src="../i/r_14.png" />
<img src="../i/r_14.png" /><img src="../i/r_14.png" />
<img src="../i/r_14.png" />
 
jQuery-1-Ajax
jQuery-1-AjaxjQuery-1-Ajax
jQuery-1-Ajax
 
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
 
Practical PHP 5.3
Practical PHP 5.3Practical PHP 5.3
Practical PHP 5.3
 
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
 
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
 
Perl basics for pentesters part 2
Perl basics for pentesters part 2Perl basics for pentesters part 2
Perl basics for pentesters part 2
 
Java script core
Java script coreJava script core
Java script core
 
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?
 
Perl basics for Pentesters
Perl basics for PentestersPerl basics for Pentesters
Perl basics for Pentesters
 
Jersey
JerseyJersey
Jersey
 
55 New Features in Java 7
55 New Features in Java 755 New Features in Java 7
55 New Features in Java 7
 
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
 

More from 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
 
Gui
GuiGui
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
 

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
 
introduction to python
introduction to pythonintroduction to python
introduction to python
 
Operator Overloading
Operator Overloading  Operator Overloading
Operator Overloading
 
skin disease classification
skin disease classificationskin disease classification
skin disease classification
 
Introduction to machine learningunsupervised learning
Introduction to machine learningunsupervised learningIntroduction to machine learningunsupervised learning
Introduction to machine learningunsupervised learning
 
Opengl texturing
Opengl texturingOpengl texturing
Opengl texturing
 
Mathematics fundamentals
Mathematics fundamentalsMathematics fundamentals
Mathematics fundamentals
 
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
 
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
 
3 d graphics basics
3 d graphics basics3 d graphics basics
3 d graphics basics
 
2 d transformations
2 d transformations2 d transformations
2 d transformations
 
Gui
GuiGui
Gui
 
Inheritance
InheritanceInheritance
Inheritance
 
Arrays string handling java packages
Arrays string handling java packagesArrays string handling java packages
Arrays string handling java packages
 

Recently uploaded

Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
Octavian Nadolu
 
Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
Rakesh Kumar R
 
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s EcosystemUI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
Peter Muessig
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
Hornet Dynamics
 
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
gapen1
 
一比一原版(USF毕业证)旧金山大学毕业证如何办理
一比一原版(USF毕业证)旧金山大学毕业证如何办理一比一原版(USF毕业证)旧金山大学毕业证如何办理
一比一原版(USF毕业证)旧金山大学毕业证如何办理
dakas1
 
Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !
Marcin Chrost
 
fiscal year variant fiscal year variant.
fiscal year variant fiscal year variant.fiscal year variant fiscal year variant.
fiscal year variant fiscal year variant.
AnkitaPandya11
 
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
rodomar2
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
Drona Infotech
 
Unveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdfUnveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdf
brainerhub1
 
Malibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed RoundMalibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed Round
sjcobrien
 
Modelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - AmsterdamModelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - Amsterdam
Alberto Brandolini
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
mz5nrf0n
 
What next after learning python programming basics
What next after learning python programming basicsWhat next after learning python programming basics
What next after learning python programming basics
Rakesh Kumar R
 
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian CompaniesE-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
Quickdice ERP
 
All you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVMAll you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVM
Alina Yurenko
 
SQL Accounting Software Brochure Malaysia
SQL Accounting Software Brochure MalaysiaSQL Accounting Software Brochure Malaysia
SQL Accounting Software Brochure Malaysia
GohKiangHock
 
The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...
The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...
The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...
kalichargn70th171
 
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
safelyiotech
 

Recently uploaded (20)

Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
 
Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
 
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s EcosystemUI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
 
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
 
一比一原版(USF毕业证)旧金山大学毕业证如何办理
一比一原版(USF毕业证)旧金山大学毕业证如何办理一比一原版(USF毕业证)旧金山大学毕业证如何办理
一比一原版(USF毕业证)旧金山大学毕业证如何办理
 
Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !
 
fiscal year variant fiscal year variant.
fiscal year variant fiscal year variant.fiscal year variant fiscal year variant.
fiscal year variant fiscal year variant.
 
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
 
Unveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdfUnveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdf
 
Malibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed RoundMalibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed Round
 
Modelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - AmsterdamModelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - Amsterdam
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
 
What next after learning python programming basics
What next after learning python programming basicsWhat next after learning python programming basics
What next after learning python programming basics
 
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian CompaniesE-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
 
All you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVMAll you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVM
 
SQL Accounting Software Brochure Malaysia
SQL Accounting Software Brochure MalaysiaSQL Accounting Software Brochure Malaysia
SQL Accounting Software Brochure Malaysia
 
The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...
The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...
The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...
 
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
 

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!