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

PDF
Zend Framework 1 + Doctrine 2
KEY
PHP Development with MongoDB (Fitz Agard)
KEY
PHP Development With MongoDB
ODP
Parsing with Perl6 Grammars
PPT
Advanced php
PDF
tutorial5
PDF
Backbone.js: Run your Application Inside The Browser
PPTX
Scala on Android
Zend Framework 1 + Doctrine 2
PHP Development with MongoDB (Fitz Agard)
PHP Development With MongoDB
Parsing with Perl6 Grammars
Advanced php
tutorial5
Backbone.js: Run your Application Inside The Browser
Scala on Android

What's hot (20)

PDF
Clojure Deep Dive
KEY
NOSQL101, Or: How I Learned To Stop Worrying And Love The Mongo!
PDF
What I learned from Seven Languages in Seven Weeks (IPRUG)
PPT
Best Guide for Javascript Objects
PDF
Scala 2013 review
PDF
The Ring programming language version 1.10 book - Part 103 of 212
PDF
V8 hidden class and inline cache
PDF
Scaladroids: Developing Android Apps with Scala
PDF
Hello Swift Final 5/5 - Structures and Classes
PDF
Solr & Lucene @ Etsy by Gregg Donovan
PDF
Dart
PDF
SOLID Ruby SOLID Rails
PDF
OSDC.fr 2012 :: Cascalog : progammation logique pour Hadoop
KEY
Scala for scripting
PDF
Functional Object-Oriented Imperative Scala / 関数型オブジェクト指向命令型 Scala by Sébasti...
PDF
Postobjektové programovanie v Ruby
PDF
Erlang for data ops
ODP
Scala traits training by Sanjeev Kumar @Kick Start Scala traits & Play, organ...
PDF
Solr @ Etsy - Apache Lucene Eurocon
KEY
循環参照のはなし
Clojure Deep Dive
NOSQL101, Or: How I Learned To Stop Worrying And Love The Mongo!
What I learned from Seven Languages in Seven Weeks (IPRUG)
Best Guide for Javascript Objects
Scala 2013 review
The Ring programming language version 1.10 book - Part 103 of 212
V8 hidden class and inline cache
Scaladroids: Developing Android Apps with Scala
Hello Swift Final 5/5 - Structures and Classes
Solr & Lucene @ Etsy by Gregg Donovan
Dart
SOLID Ruby SOLID Rails
OSDC.fr 2012 :: Cascalog : progammation logique pour Hadoop
Scala for scripting
Functional Object-Oriented Imperative Scala / 関数型オブジェクト指向命令型 Scala by Sébasti...
Postobjektové programovanie v Ruby
Erlang for data ops
Scala traits training by Sanjeev Kumar @Kick Start Scala traits & Play, organ...
Solr @ Etsy - Apache Lucene Eurocon
循環参照のはなし
Ad

Viewers also liked (20)

PDF
Noise Models
PDF
filters for noise in image processing
PDF
Noise Models
PPT
Dct,gibbs phen,oversampled adc,polyphase decomposition
PDF
Java
PDF
Lecture 10
PPT
Programming with Java: the Basics
PPTX
Basics of java 2
PDF
Java basics notes
PPT
Java Basics
PPT
Java Basics
PDF
Introduction to basics of java
PDF
Java Course 2: Basics
PDF
Java Course 3: OOP
PPT
PALASH SL GUPTA
PPT
Java Programming for Designers
PPT
Java basics
PPTX
Basics of file handling
PPT
2. Basics of Java
PPT
Core java Basics
Noise Models
filters for noise in image processing
Noise Models
Dct,gibbs phen,oversampled adc,polyphase decomposition
Java
Lecture 10
Programming with Java: the Basics
Basics of java 2
Java basics notes
Java Basics
Java Basics
Introduction to basics of java
Java Course 2: Basics
Java Course 3: OOP
PALASH SL GUPTA
Java Programming for Designers
Java basics
Basics of file handling
2. Basics of Java
Core java Basics
Ad

Similar to Java basics (20)

PPT
02 java basics
PDF
2java Oop
PDF
Java OOP Programming language (Part 3) - Class and Object
PPT
Java basic understand OOP
PDF
Java oop
PPTX
Classes,object and methods java
PPT
Class & Object - Intro
PPTX
Classes, objects in JAVA
PDF
Chapter 02: Classes Objects and Methods Java by Tushar B Kute
PPT
Oops Concept Java
PPTX
Pi j2.2 classes
PDF
ádfasdfasdfasdfasdfasdfsadfsadfasdfasfasdfasdfasdfa
PPT
Md03 - part3
PDF
Java Programming - 04 object oriented in java
PPTX
Classes objects in java
PDF
Lec 8 03_sept [compatibility mode]
PPT
Object and class
PPTX
UNIT I OOP AND JAVA FUNDAMENTALS CONSTRUCTOR
PDF
Java for beginners
PDF
JAVA Class Presentation.pdf Vsjsjsnheheh
02 java basics
2java Oop
Java OOP Programming language (Part 3) - Class and Object
Java basic understand OOP
Java oop
Classes,object and methods java
Class & Object - Intro
Classes, objects in JAVA
Chapter 02: Classes Objects and Methods Java by Tushar B Kute
Oops Concept Java
Pi j2.2 classes
ádfasdfasdfasdfasdfasdfsadfsadfasdfasfasdfasdfasdfa
Md03 - part3
Java Programming - 04 object oriented in java
Classes objects in java
Lec 8 03_sept [compatibility mode]
Object and class
UNIT I OOP AND JAVA FUNDAMENTALS CONSTRUCTOR
Java for beginners
JAVA Class Presentation.pdf Vsjsjsnheheh

More from Sardar Alam (14)

PPTX
Undoing of mental illness -- seek help
PDF
introduction to python
PPT
Operator Overloading
PPT
skin disease classification
PPT
Introduction to machine learningunsupervised learning
PPTX
Opengl texturing
PPTX
Mathematics fundamentals
PPTX
3 d graphics with opengl part 2
PPTX
3 d graphics with opengl part 1
PPTX
3 d graphics basics
PPTX
2 d transformations
PDF
PDF
Inheritance
PDF
Arrays string handling java packages
Undoing of mental illness -- seek help
introduction to python
Operator Overloading
skin disease classification
Introduction to machine learningunsupervised learning
Opengl texturing
Mathematics fundamentals
3 d graphics with opengl part 2
3 d graphics with opengl part 1
3 d graphics basics
2 d transformations
Inheritance
Arrays string handling java packages

Recently uploaded (20)

PPTX
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PDF
Design an Analysis of Algorithms I-SECS-1021-03
PPTX
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
PDF
PTS Company Brochure 2025 (1).pdf.......
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
PDF
How to Migrate SBCGlobal Email to Yahoo Easily
PDF
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
PPTX
Essential Infomation Tech presentation.pptx
PPTX
VVF-Customer-Presentation2025-Ver1.9.pptx
PDF
Adobe Illustrator 28.6 Crack My Vision of Vector Design
PPTX
history of c programming in notes for students .pptx
PDF
Softaken Excel to vCard Converter Software.pdf
PDF
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
PDF
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
PDF
wealthsignaloriginal-com-DS-text-... (1).pdf
PDF
System and Network Administration Chapter 2
PDF
top salesforce developer skills in 2025.pdf
PDF
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
PPTX
Reimagine Home Health with the Power of Agentic AI​
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
Internet Downloader Manager (IDM) Crack 6.42 Build 41
Design an Analysis of Algorithms I-SECS-1021-03
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
PTS Company Brochure 2025 (1).pdf.......
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
How to Migrate SBCGlobal Email to Yahoo Easily
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
Essential Infomation Tech presentation.pptx
VVF-Customer-Presentation2025-Ver1.9.pptx
Adobe Illustrator 28.6 Crack My Vision of Vector Design
history of c programming in notes for students .pptx
Softaken Excel to vCard Converter Software.pdf
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
wealthsignaloriginal-com-DS-text-... (1).pdf
System and Network Administration Chapter 2
top salesforce developer skills in 2025.pdf
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
Reimagine Home Health with the Power of Agentic AI​

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!