Java 01
Java 01
CS331
Introduction
PresentthesyntaxofJava
IntroducetheJavaAPI
Demonstratehowtobuild
standaloneJavaprograms
Javaapplets,whichrunwithinbrowserse.g.
Netscape
Exampleprograms
WhyJava?
Itsthecurrenthotlanguage
Itsalmostentirelyobjectoriented
Ithasavastlibraryofpredefinedobjectsand
operations
Itsmoreplatformindependent
thismakesitgreatforWebprogramming
Itsmoresecure
ItisntC++
Applets,Servletsand
Applications
Anappletisdesignedtobeembeddedina
Webpage,andrunbyabrowser
Appletsruninasandboxwithnumerous
restrictions;forexample,theycantread
filesandthenusethenetwork
Aservletisdesignedtoberunbyaweb
server
Anapplicationisaconventionalprogram
BuildingStandaloneJAVA
Programs(onUNIX)
Preparethefilefoo.javausinganeditor
Invokethecompiler:javac foo.java
Thiscreatesfoo.class
Runthejavainterpreter:java foo
JavaVirtualMachine
The.classfilesgeneratedbythecompilerare
notexecutablebinaries
soJavacombinescompilationandinterpretation
Instead,theycontainbytecodestobe
executedbytheJavaVirtualMachine
otherlanguageshavedonethis,e.g.UCSDPascal
Thisapproachprovidesplatform
independence,andgreatersecurity
HelloWorld(standalone)
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
NotethatStringisbuiltin
printlnisamemberfunctionforthe
System.outclass
CommentsarealmostlikeC++
/*Thiskindofcommentcanspanmultiplelines
*/
//Thiskindistotheendoftheline
/**
*Thiskindofcommentisaspecial
*javadocstylecomment
*/
PrimitivedatatypesarelikeC
Maindatatypesareint,double,
boolean,char
Alsohavebyte,short,long,float
boolean hasvalues trueand false
DeclarationslooklikeC,forexample,
doublex,y;
intcount=0;
ExpressionsarelikeC
AssignmentstatementsmostlylooklikethoseinC;you
canuse=,+=,*=etc.
Arithmeticusesthefamiliar+ - * / %
Javaalsohas++ and
Javahasbooleanoperators&& || !
Javahascomparisons< <= == != >= >
Javadoesnothavepointersorpointerarithmetic
ControlstatementsarelikeC
if(x<y)smaller=x;
if(x<y){smaller=x;sum+=x;}
else{smaller=y;sum+=y;}
while(x<y){y=yx;}
do{y=yx;}while(x<y)
for(inti=0;i<max;i++)
sum+=i;
BUT:conditionsmustbe boolean!
ControlstatementsII
switch(n+1){
case0:m=n1;break;
case1:m=n+1;
case3:m=m*n;break;
default:m=n;break;
}
Javaalsointroducesthetrystatement,
aboutwhichmorelater
Javaisn'tC!
InC,almosteverythingisinfunctions
InJava,almosteverythingisinclasses
Thereisoftenonlyoneclassperfile
Theremustbeonlyonepublicclassperfile
Thefilenamemustbethesameasthename
ofthatpublicclass,butwitha.java
extension
Javaprogramlayout
AtypicalJavafilelookslike:
importjava.awt.*;
importjava.util.*;
publicclassSomethingOrOther{
//objectdefinitionsgohere
...
}
This must be in a file named SomethingOrOther.java !
Whatisaclass?
Earlylanguageshadonlyarrays
allelementshadtobeofthesametype
Thenlanguagesintroducedstructures(called
records,orstructs)
alloweddifferentdatatypestobegrouped
ThenAbstractDataTypes(ADTs)became
popular
groupedoperationsalongwiththedata
So,whatisaclass?
Aclassconsistsof
acollectionoffields,orvariables,verymuch
likethenamedfieldsofastruct
alltheoperations(calledmethods)thatcanbe
performedonthosefields
canbeinstantiated
Aclassdescribesobjectsandoperations
definedonthoseobjects
Nameconventions
Javaiscasesensitive;maxval,maxVal,and
MaxValarethreedifferentnames
Classnamesbeginwithacapitalletter
Allothernamesbeginwithalowercaseletter
Subsequentwordsarecapitalized:theBigOne
Underscoresarenotusedinnames
Theseareverystrongconventions!
Theclasshierarchy
Classesarearrangedinahierarchy
Theroot,ortopmost,classisObject
EveryclassbutObjecthasatleastone
superclass
Aclassmayhavesubclasses
Eachclassinheritsallthefieldsandmethods
ofits(possiblynumerous)superclasses
Anexampleofaclass
classPerson{
Stringname;
intage;
voidbirthday(){
age++;
System.out.println(name+'is
now'+age);
}
}
Anotherexampleofaclass
classDriverextendsPerson{
longdriversLicenseNumber;
DateexpirationDate;
}
Creatingandusinganobject
Personjohn;
john=newPerson();
john.name="JohnSmith";
john.age=37;
Personmary=newPerson();
mary.name="MaryBrown";
mary.age=33;
mary.birthday();
Anarrayisanobject
Personmary=newPerson();
intmyArray[]=newint[5];
or:
intmyArray[]={1,4,9,16,
25};
Stringlanguages[]=
{"Prolog","Java"};