View
254
Download
0
Category
Preview:
Citation preview
RemedialJava-Basics 20/08/18
AnastasiaBezerianos 1
(remedial)Java
anastasia.bezerianos@lri.fr
RemedialJavaclass! Objective:
! CoverthefundamentalsoftheJavaprogramminglanguage.! Designedforstudentswithsomeprogrammingexperience,but…
! Practicalinfo: contactAnastasiabyemail,using[RJ]inthetitle www.lri.fr/~anab/teaching/remedial-java/
! 6sessionsof3h(theory+practice):! Languagebasics(Mon4/9,am)! Objectorientedprogramming(Mon4/9pm)! Inheritance(Tue5/9am)! PackagesandExceptions(Tue5/9am)! Independentwork(Wed6/9–noclass)! I/O(Thu7/9am)! 7/9pm:undecidedfornow,eitherexercisesorThreads(parallel)
RemedialJava-Basics 20/08/18
AnastasiaBezerianos 2
Java! Multi-platform“Pure”object-orientedlanguageandapplicationruntimeenvironment
! LanguagesyntaxbasedonC/C++tobefamiliar! withsimplifications:nounsignedvalues,pointers,…! developersnotresponsibleformemorymanagement
! Pureobject-orientedlanguage:! buildfromthegroundupwithOOPdesigninmind! programsarecompletelyconstructedwithobjects(asopposedtoBolt-onlanguages,likeC++,whereOOstructuresareanenhancementtothelanguage,andthereisamixofproceduralandOO)
Javabasics
RemedialJava-Basics 20/08/18
AnastasiaBezerianos 3
Java! Multi-platform“Pure”object-orientedlanguageandapplicationruntimeenvironment
! LanguagesyntaxbasedonC/C++tobefamiliar! withsimplifications:nounsignedvalues,pointers,…! developersnotresponsibleformemorymanagement
! Pureobject-orientedlanguage:! buildfromthegroundupwithOOPdesigninmind! programsarecompletelyconstructedwithobjects(asopposedtoBolt-onlanguages,likeC++,whereOOstructuresareanenhancementtothelanguage,andthereisamixofproceduralandOO)
JavaandJVM! CodeinJavadoesnotcompiletomachinecodedirectly,buttoaspecifictypeofBytecode! Bytecodeexecutableonanyarchitecture! Writeonce,runanywhere(WORA)
! JavabytecoderunsthroughaJavaVirtualMachine(JVM),achievingcross-platformsupport
! DifferentplatformshavetheirimplementationoftheJVM(includedintheJavaRuntimeEnvironmentsJRE).TheJavaDevelopmentKit(JDK)alsoincludestheJavaJRE.
RemedialJava-Basics 20/08/18
AnastasiaBezerianos 4
ThecostofWORA! ExecutiontimeslowerthatC/C++
! costofrunningbytecodeonJVM
! newerimplementationstrytoimprovethis
! Programs(particularlyapplets)runverybuggyandtendtocrash! again,improvementsovertime
! Completecross-platformnotaseasyasimplied…
JavaandJavaScript! Notrelated!!!
! Differentdevelopers(Java:SunnowOracle,JavaScript:Netscape)
! Namemaybeamarketingploy(JSoriginallynamedLiveScript)
RemedialJava-Basics 20/08/18
AnastasiaBezerianos 5
CompilingJava
Sourcecode(.java)
javacBytecode(.class)
java
JavaArchieve(.jar)
FirstJavaprogramInasimpletexteditor(Notepad,TextEdit,Emacs)writethefollowingandsaveinHelloWorld.java
class HelloWorld {
public static void main (String[] arguments){
System.out.println("Hello World !");
}}
Thisisaclassdeclaration,moreonthatlater.Mainmethod:entrypointtotheprogram(public+static)andneedstobeinsideaclass
RemedialJava-Basics 20/08/18
AnastasiaBezerianos 6
FirstJavaprogramInasimpletexteditor(Notepad,TextEdit,Emacs)writethefollowingandsaveinHelloWorld.java
class HelloWorld {
public static void main (String[] arguments){
System.out.println("Hello World !");
}}
Systemisaclass,thatcallsoutthatrepresentsthestdout(hereoutputtoconsole).Methodprintlnprintsthetextargument,andaddsanewlinecharacter.
FirstJavaprogramInasimpletexteditor(Notepad,TextEdit,Emacs)writethefollowingandsaveinHelloWorld.java
class HelloWorld {
public static void main (String[] arguments){
System.out.println("Hello World !");
}}
Letscompileandrunit!
>javacHelloWorld.java>javaHelloWorld
RemedialJava-Basics 20/08/18
AnastasiaBezerianos 7
Programstructure
class CLASSNAME {
public static void main (String[] arguments){
STATEMENTS// comments
}}
MainfunctionisneededtorunaprogramItisalwaysinsideaclassItisalwayspublicstatic
Let’smovetoourIDE! RunEclipse,andFile→New→JavaProject
! Nameyourproject:RemedialJavaandclickfinish
! SelectinthePackageExploreryourprojectRemedialJava,andFile→New→Package! Nameyourpackage: session1.introduction
! Finally,selectyourpackageinthePackageExplorer, File→New→JavaClass
! NameyourclassHelloWorld
! CopypastethecodefromHelloWoldexample
! Project→BuildandRun→Runyourcode(orselecttheHelloWorldclassandRun→RunAs→JavaApplication)
RemedialJava-Basics 20/08/18
AnastasiaBezerianos 8
Types! Asinallprogramminglanguages,Javahassomebasictypes,thekindsofvaluesthatcanbestoredandmanipulated:
boolean:Truthvalue(trueorfalse).
int:Integer(0,1,-30).
double:Realnumber(3.14,2.0,-4.1).
String:Text(“hello”,“cat”).
Variables! Variable:locationthatstoresavalueofatype.
Theformis:TYPENAME;
e.g., String cat;
! Weuse=tomakevariableassignments.e.g., String cat;
cat = “Garfield”;
! Cancombinedeclarationandassignmente.g., String cat = “Garfield”;
RemedialJava-Basics 20/08/18
AnastasiaBezerianos 9
VariablesofdifferentTypes! example
class HelloWorld {
public static void main (String[] arguments){
System.out.println("Hello World !");
String cat = "Garfield";int age = 3;
System.out.println("My cat is " + cat + ” and he is " + age);
}}
Operators! Symbols:
Assignment:=
Operators:+,-,*,/,% Combined:+=,-=,*=,/=
! Ordering: 1.lefttoright,()increase precedence
2.multiplication/division
3.addition/substraction class SomeMath {
public static void main (String[] arguments){double calculate = 1.0 + 2.0 * 3.0;// different from (1.0 + 2.0) * 3.0 System.out.println(calculate); calculate = calculate * 2.0;// calculate *= 2.0; would work too
System.out.println(calculate); }
}
RemedialJava-Basics 20/08/18
AnastasiaBezerianos 10
Division! Division(“/”)operatesdifferentlyonintegersanddoubles
Example
double a = 5.0/2.0; // a = 2.5
int b = 4/2; // b = 2 int c = 5/2; // c = 2double d = 5/2; // d = 2.0
types! Javaverifiesthattypesmatch:
Stringfive=5;//ERROR!
! Canconverttypesbycastingint a = 2; // a = 2 double a = 2; // a = 2.0 (Implicit)
int a = 18.7; // ERROR int a = (int)18.7; // a = 18
double a = 2/3; // a = 0.0
double a = (double)2/3; // a = 0.6666...
RemedialJava-Basics 20/08/18
AnastasiaBezerianos 11
Stringconcatenation! BasicconcatenationString text = "hello" + " world,";
text = text + " times " + 6; // text = "hello world, times 6"
! Canalsocreateformattedstrings
String text = String.format(”Printing a string variable %s, and an integer one %d”,
stringVar, intVar);
! Tocheckequality:string1.equals(string2)! Manymethodsavailable!!!
Exercise1www.lri.fr/~anab/teaching/remedialJava/ex-session1.pdf
Reminder:! Types(boolean,int,double,String)! Operators+,-,*,/,%! Assignment=,+=,*=,-=,/=! StandardoutputSystem.out.println(“some text”);
RemedialJava-Basics 20/08/18
AnastasiaBezerianos 12
! Amethodissimilartoafunction! Asectionofaprogramthatisgivenaname,andthatthatperformsaspecifictask
! Itmaytakesomeinputparametersandmayreturnavalue
! Itcanbecalledfromelsewhereintheprogramtobeexecuted
Methods
Methods
public static void main(String[] arguments){System.out.println(“hi”);
}
public static void NAME (TYPENAME) {STATEMENTS;
}
Tocallamethod: NAME (EXPRESSION);
RemedialJava-Basics 20/08/18
AnastasiaBezerianos 13
Methodsexample(1)
class Square {
public static void printSquare (int x) {System.out.println (x * x);
}
public static void main(String[] arguments){int value = 2;printSquare (value);printSquare(value*2); printSquare(3);
}}
Methodsexample(2)
class Square {
public static void printSquare (int x) {System.out.println (x * x);
}
public static void main(String[] arguments){printSquare ("HelloWorld");printSquare(5.5);
}}
Whatiswronghere?
RemedialJava-Basics 20/08/18
AnastasiaBezerianos 14
Methodsexample(3)
class Square {
public static void printSquare (double x) {System.out.println (x * x);
}
public static void main(String[] arguments){printSquare(5);
}}
Whatiswronghere?
Methodsexample(4)
class Square {
public static void printSquare (double x) {System.out.println (x * x);
}public static void printSquare (String x) {
System.out.println (x + x);}
public static void main(String[] arguments){printSquare(5.0);printSquare("Hello");
}}
RemedialJava-Basics 20/08/18
AnastasiaBezerianos 15
Methodsexample(4)
class Square {
public static void printSquare (double x) {System.out.println (x * x);
}public static void printSquare (String x) {
System.out.println (x + x);}
public static void main(String[] arguments){printSquare(5.0);printSquare("Hello");
}}
Methodoverloading:aclasscanhavetwoormoremethodshavingsamename,iftheirargumentlistsaredifferent.
Methodreturnvalues
public static TYPE NAME (TYPENAME,TYPENAME,…) {STATEMENTS;return EXPRESSION;
}
! voidmeans“notype”,ienothingreturned
RemedialJava-Basics 20/08/18
AnastasiaBezerianos 16
Methodsexample(5)
class Square {
public static double square (double x) {return x * x;
}
public static void main(String[] arguments){System.out.println( square(5) );
}}
VariableScope
! Variablesliveintheblock{}wheretheyaredefined(scope)
! Methodinputparametersarelikedefininganewvariableinthemethod
RemedialJava-Basics 20/08/18
AnastasiaBezerianos 17
Variablescopeexample(1)
class SquareChange {
public static void printSquare(int x) {System.out.println("printSquare x = " + x); x = x * x; System.out.println("printSquare x = " + x);
}
public static void main(String[] arguments) { int x = 5; System.out.println("main x = " + x); printSquare(x); System.out.println("main x = " + x);
} }
Note:thisisforbasictypes…
Methods
Youshouldknowthis,butrepetitionisgood☺
! Bigprogramsarebuiltoutofsmallmethods
! Methodscanbeindividuallydeveloped,testedandreused
! Theuserofmethoddoesnotneedtoknowhowitworks(thisiscalled“abstraction”)
RemedialJava-Basics 20/08/18
AnastasiaBezerianos 18
Conditionals
if(CONDITION){ STATEMENTS
}
if(CONDITION){ STATEMENTS1
}else{ STATEMENTS2
}
if(CONDITION){ STATEMENTS1
}elseif(CONDITION){ STATEMENTS2
}elseif(CONDITION){
STATEMENTS3}else{
STATEMENTS4}
Conditions…
Areacombinationof:
! Comparisonoperators: x>y,x>=y :xisgreaterthany,xisgreaterorequaltoyx<y,x<=y :xislessthany,xislessthanorequaltoy
x==y :xequalsy(equality:==,assignment:=) (NOTforStrings,nonbasictypesordoubles)
! Booleanoperators:&& :logicalAND
|| :logicalOR! :logicalNOT
RemedialJava-Basics 20/08/18
AnastasiaBezerianos 19
Conditions…
! Comparisonoperators:! Donotcall==forString
Stringisanobject,soJavawilllookatitsmemory(morelater)
Insteaduseequals(e.g.,s1.equals(s2))
! Donotcall==fordoubles double a = Math.cos (Math.PI / 2);
double b = 0.0; a=6.123233995736766E-17
a == b willreturnFALSE
useMath.abs(a-b)<somethingSmall
ConditionalSwitch…switch(variable){
casevalue1: STATEMENTS
break; casevalue2:
STATEMENTS
break; …
default: STATEMENTS
break;}
RemedialJava-Basics 20/08/18
AnastasiaBezerianos 20
Exercise2www.lri.fr/~anab/teaching/remedialJava/ex-session1.pdf
Reminder:! if(cond){ }elseif(cond){ }else{ }
! Conditionoperators:x>y,x>=y,x<y,x<=y,x==y! Booleanoperators:&&(AND),||(OR),!(NOT)
Loops(1)
while(CONDITION){ do{ STATEMENTS STATEMENTS
} }while(CONDITION)
int i = 0; while (i < 3) {
System.out.println(“Counting #“ + i);i += 1;
}
! Makesurethatyourloophasachancetofinish (especiallyifyoucannotcounta-priori)
RemedialJava-Basics 20/08/18
AnastasiaBezerianos 21
Loops(2)
for(intialization;CONDITION;update){ STATEMENTS
}
for(int i = 0; i < 5; i=i+1) {System.out.println(“Counting #“ + i);
}
! Note:i=i+1maybereplacedbyi++(or++i)
Loops(3)
Embededloopsfor(int i = 0; i < 5; i=i+1) {
for (int j = 0; j < 7; j=j+1) {System.out.println(i + “ “ + j);
} }
! Scopeofvariablesdefinedinsideloopexistintherespectiveforblock
! Scopeoftheiteratingvariable(e.g.,i,j)definedintheinitialization(alsoexistintherespectiveforblock)
!
RemedialJava-Basics 20/08/18
AnastasiaBezerianos 22
Loops(4)Jumpingloops(brunchingstatements):! Youcanterminatealoopbyusingbreak,thiswillmovetothefirstinstructionaftertheloop
! Youcanskipthecurrentiterationofaloopusingcontinue,whichmovesyoutothenextiterationfor(int i = 0; i < 5; i=i+1) {
for (int j = 0; j < 7; j=j+1) {if (j == 3) continue; // go to j 4if (j == 5) break; // stop the inner loop System.out.println(i + “ “ + j);
} }
Exercise3www.lri.fr/~anab/teaching/remedialJava/ex-session1.pdf
Reminder:! for(i=1;i<=10;++i){…}! doublea=(double)1/2;
RemedialJava-Basics 20/08/18
AnastasiaBezerianos 23
Javabasics,Arrays
Arrays
! Anarrayisanindexedlistofvalues.! Youcanmakeanarrayofanytype
! int,double,String,etc.
! Allelementsofanarraymusthavethesametype.
RemedialJava-Basics 20/08/18
AnastasiaBezerianos 24
Arrays
Arrays
Example:double[]
5.0 1.5 2.33 0.0 -3.1
RemedialJava-Basics 20/08/18
AnastasiaBezerianos 25
Arrays
! Theindexstartsatzeroandendsatlength-1.Example:int[] values = new int[5]; values[0] = 1; // CORRECT values[3] = 1; // CORRECT values[5] = 1; // WRONG!! compiles but
// throws an Exception // at run-time
Arrays
! AnarrayisdefinedasTYPE[].! Theyarethemselvesjustanothertype(moreadvanced)
int[] values; // array of int
int[][] values; // array of int[] // (array of arrays)
RemedialJava-Basics 20/08/18
AnastasiaBezerianos 26
Arrays
! Arraysofaspecificsizecreatedusingnew:
! Orusingavariable:
! Orusing{}toinitializethearrayvalues.Thiscanonlybeusedinthearraydeclaration:
int arraySize = 5;int[] values = new int[arraySize];
int[] values = new int[5];
int[] values = {2, 5, 3, 6, 6};
ArrayAccess
! Youcanaccesselementsinthearraywith
Example:int[] values = {2, 5, 3, 6, 6};values[2] = 12; // assign value at position 2
// {2,5,12,6,6}int x = values[3]/2; // read value at pos 3
// {2,5,3,6,6}
arrayName[index]
RemedialJava-Basics 20/08/18
AnastasiaBezerianos 27
ArrayAccess
! Arrayshavealengthvariablebuild-inExample:int[] values = new int[5]; int arraySize = values.length; // 5
int[] values2 = {2, 5, 3, 6, 6};int arraySize2 = values2.length; // 5
public static void main (String[] arguments){if(arguments.lengh > 0)
System.out.println(“Passed ” + arguments.length + “ arguments”);
}
LoopingoverArrays
int[] values = {2, 5, 3, 6, 6};for (int i=0; i<values.length; ++i)
values[i]= values[i]*values[i];
int[] values2 = new int[5];int i = 0;while (i < values2.length){
values[i] = i;++i;
}
Examples:
RemedialJava-Basics 20/08/18
AnastasiaBezerianos 28
Exercise5www.lri.fr/~anab/teaching/remedial-java/ex-session1.pdfReminders/aid:int[] values = {2, 5, 3, 6, 6};int[] values = new int[SIZE];
array[index]accessesvalueatindexposition,withindexstartingat0
array.lengthgivesthearraysize
for(intialization;CONDITION;update){ STATEMENTS}YoucangetthemaxpossibleinwithInteger.MAX_VALUE;
Commonproblems
RemedialJava-Basics 20/08/18
AnastasiaBezerianos 29
Commonproblems(1)
! ArrayIndexvsArrayValue
! Curlybraces{…}afterif/else,while/for
Output?
int[] values = {2, 5, 3, 6, 6};System.out.println(values[0]); // 2
for (int i = 0; i < 5; i++) System.out.println(“Hi”); System.out.println(“Bye”);
Commonproblems(2)
! Variableinitialization
Whatifvals={1,2,3}?
Setmin = Integer.MAX_VALUE orvals[0]
int getMinValue(int[] vals) { int min = 0; for (int i = 0; i < vals.length; i++) {
if (vals[i] < min) { min = vals[i];
}}
}
RemedialJava-Basics 20/08/18
AnastasiaBezerianos 30
Commonproblems(2)
! Definingmethodwithinmethod
! Generalcomment:! UseSystem.out.printlnthroughoutyourcode
public static void main (String[] args) { public static void foo (){
…}
}
(aside,inourIDE)! Ctrl-Shift-L:showlistofkeyboardshortcuts! Ctrl-S:save! Ctrl-Shift-F:alignscode! Ctrl-O:opensanautocompletewindowtojumptoamember
definitionforallmembersoftheopentype
! Ctrl-Shift-O:organizeimportsautomatically
! Ctrl-Shift-T:opensawindowtoopenatypeviaautocompletion! Ctrl-Shift-R:opensanautocompletewindowforresources(files)
! F3:jumptodefinition
(OnaMac,replaceCtrlabovewithCmd.)
RemedialJava-Basics 20/08/18
AnastasiaBezerianos 31
JavaresourcesManyresourcesonline…
https://docs.oracle.com/javase/tutorial/tutorialLearningPaths.html
«ThinkinginJava»byBruceEckel(olderversionsofthebookavailableonline)
Exercises4,6,7
Homework(togetherwithanythingelseyoudidnotfinishinclass)
www.lri.fr/~anab/teaching/remedial-java/ex-session1.pdf
Recommended