Úvod do programování v jazyce Java

machinebrainyΛογισμικό & κατασκευή λογ/κού

8 Ιουν 2012 (πριν από 5 χρόνια και 5 μήνες)

469 εμφανίσεις


Uvod do programovan v jazyce Java
Petr Krajca
Katedra informatiky
Univerzita Palackeho v Olomouci
5.rjen,2011
Petr Krajca (UP)
KMI/UP3J:Seminar I.
5.10.2011 1/17
Organizacn informace
email:petr.krajca@upol.cz
konzultacn hodiny
utery 15:00 { 16:00
streda 15:00 { 16:00
www:http://phoenix.inf.upol.cz/~krajca/
slidy budou k dispozici online,ale...
pro udelen zapoctu je potreba
vyresit vsechny ukoly zadane na cvicen nejpozdeji do jednoho tydne od
zadan
implementovat netrivialn projekt v jazyce Java (lze pouzt i rocnkovy
projekt)
plagiatorstv,vydavan cizch vysledku za vlastn je zakazano a bude
reseno dle vnitrnch smernic UP
Petr Krajca (UP)
KMI/UP3J:Seminar I.
5.10.2011 2/17
Literatura
Eckel B.Myslme v jazyce Java - prrucka programatora.Grada
Publishing,2000.
Bloch J.Java efektivne 57 zasad softwaroveho experta.Grada
Publishing.
Lewis J.,Loftus W.Java Software Solutions,Foundations of Program
Design.Addison Wesley Longman Ltd.,2000.
Gosling J.,Joy B.,Steele G.,and Bracha G.The Java Language
Specication,Third Edition.
SUN.Java Tutorial.2010.
Herout P.Ucebnice jazyka Java.Kopp,2000.
Kiszka B.1001 tipu a triku pro programovan v jazyce Java.Computer
Press,2003.
Petr Krajca (UP)
KMI/UP3J:Seminar I.
5.10.2011 3/17
Java jako programovac jazyk
objektove orientovany jazyk (dedicnost s jednm rodicem)
syntax podobny C/C++ (nen to C/C++!)
portabilita (Write-Once-Run-Anywhere)
snaha o omezen chyb
automaticka sprava pameti
silne a staticky typovy jazyk (nen to CommonLisp!)
omezen dostupnych prvku jazyka na ty bezpecne
system vyjmek
kontrola mez pol
Dals vlastnosti
nekolik nezavislych implementac (Oracle/SUN,IBM,IcedTea,GCJ,
Harmony)
rozsahla standardn knihovna,rada API
mnozstv dostupnych knihoven a nastroju tretch stran (Apache
Foundation)
Petr Krajca (UP)
KMI/UP3J:Seminar I.
5.10.2011 4/17
Java jako platforma
Infrastruktura
Java Development Kit (JDK):prekladac,knihovny + souvisejc
nastroje
Java Virtual Machine (JVM):vykonava kod vygenerovany
prekladacem (Java Byte Code)
Java Runtime Environment (JRE):behove prostred (JVM,knihovny,
atd.)
Java Applety { propojen JRE s prohlzecem
JavaScript { vubec nesouvis s Javou
s JDK/JRE:lze provozovat dals jazyky,napr.Scala,Groovy,Clojure,
Jython,JRuby
Edice
Java ME { mobiln zarzen (denuje radu omezen)
Java SE { nejcasteji pouzvana
Java EE { jako SE + knihovny a rozhran
Petr Krajca (UP)
KMI/UP3J:Seminar I.
5.10.2011 5/17
Historicky prehled
1990 { puvodne vyvjeno SUN Microsystems jako projekt OAK
1996 { JDK 1.0 (prvn verze)
1997 { JDK 1.1
1998 { J2SE 1.2 (JIT preklad,kolekce) =)Java2 (J2SE)
2000 { J2SE 1.3 (HotSpot JIT prekladac)
2002 { J2SE 1.4 (rada novych API)
2005 { J2SE 5.0 (rada rozsren { genericke typy,metadata,for-each,
atd.)
2006 { Java SE 6 (nove API,vylepsen JVM)
2010 { SUN je koupen Oraclem
2011 { Java SE 7 (mrne upravy jazyka,rozsrene API)
Petr Krajca (UP)
KMI/UP3J:Seminar I.
5.10.2011 6/17
Konvence,IDE
Konvence
duraz na citelnost kodu (konvence vynucene standardem,zabehla
praxe,navrhove vzory)
kazda verejna trda v samostatnem souboru,rozdelen balcku do
adresaru (pozadavek jazyka)
projekt ma typicky tri podadresare (src/,bin/lib/)
zauzvany coding style:
class NazevTridy { }
int lokalniPromenna = 1;
int a = b + (x/2);
void metodaFoo(Object object) {
IDE
Eclipse
Netbeans
IntelliJ IDEA
proprietarn:JBuilder,JDeveloper,XCode,...
Petr Krajca (UP)
KMI/UP3J:Seminar I.
5.10.2011 7/17
Zakladn datove typy (1/2)
Primitivn datove typy (hodnotove)
csla:byte,short,int,long (velikost 1,2,4,8 bytu);neexistuj
unsigned varianty
csla s plovouc radovou carkou: oat,double (4,8 bytu;
jednoducha/dvojita presnost)
pravdivostn hodnoty:boolean (muze mt hodnoty true,false)
znaky:char (pole znaku!=retezec!,char!= byte)
implicitn inicializace (prekladac muze neinicializaci oznacit za chybu)
operatory jako v C:
+,-,*,/,+=,-,...,++,--,&,|
==,!=,>,<,<=,&&,||
Ostatn datove typy (referencn)
neexistuj ukazatele
pole (indexovany od 0,kontrola hranic)
retezce (nemenitelne),spojen retezcu operatorem + =)nove
alokovany retezec
objekty
Petr Krajca (UP)
KMI/UP3J:Seminar I.
5.10.2011 8/17
Zakladn datove typy (2/2)
byte a = 1;
int b = 42 + 2;
char c ='a';
boolean d = true;
float f = 12;
int[] e = new int[3];
e[0] = 1;
String s ="Foo";
StringBuilder stringBuilder = new StringBuilder("Foo");
Petr Krajca (UP)
KMI/UP3J:Seminar I.
5.10.2011 9/17
Obligatn Hello World
package cz.upol.lecture01;
public class Lecture01 {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
Petr Krajca (UP)
KMI/UP3J:Seminar I.
5.10.2011 10/17
Vetven programu (1/X)
temer identicke jako v C
blok
{
prikaz_1;
prikaz_2;
...
}
if
if podminka1 prikaz_1;
if podminka2 prikaz_2;
else prikaz_3;
Petr Krajca (UP)
KMI/UP3J:Seminar I.
5.10.2011 11/17
Vetven programu (2/X)
int a = 2;
int b;
if (a == 42) {
System.out.println("Promenna'a'obsahuje tajemstvi vesmiru!");
}
if (a == 42) b = 10;
else b = a + 1;
b = (a == 42)?10:a + 1;
if (a) b = 10;//NEJDE!!!
Petr Krajca (UP)
KMI/UP3J:Seminar I.
5.10.2011 12/17
Vetven programu (3/X)
switch
switch (celocselny_vyraz){
case konstanta_1:prkazy_1
break;
...
case konstanta_N:prkazy_N
break;
default:prkazy_default_vetve
}
od Java 7 lze pouzt i retezce
Petr Krajca (UP)
KMI/UP3J:Seminar I.
5.10.2011 13/17
Vetven programu (3/X)
int month = 8;
String monthString;
switch (month) {
case 1:monthString ="January";break;
case 2:monthString ="February";break;
case 3:monthString ="March";break;
case 4:monthString ="April";break;
case 5:monthString ="May";break;
case 6:monthString ="June";break;
case 7:monthString ="July";break;
case 8:monthString ="August";break;
case 9:monthString ="September";break;
//...
case 12:monthString ="December";break;
default:monthString ="Invalid month";break;
}
System.out.println(monthString);
Petr Krajca (UP)
KMI/UP3J:Seminar I.
5.10.2011 14/17
Cykly (1/X)
for
for (inicializace;podmnka;inkrementace) {
prkazy
}
while (podmnka) {
prkazy
}
do {
prkazy
} while (podmnka);
cyklus jde prerusit prkazem break,popr.preskocit na zacatek
smycky prkazem continue
Petr Krajca (UP)
KMI/UP3J:Seminar I.
5.10.2011 15/17
Cykly (3/X)
for
for(int i = 0;i < 10;i++){
System.out.println("Hodnota'i':"+ i);
}
int i = 0;
while (i < 10) {
System.out.println("Hodnota'i':"+ i);
i++;
}
int i = 0;
do {
System.out.println("Hodnota'i':"+ i);
i++;
} while (i < 10);
Petr Krajca (UP)
KMI/UP3J:Seminar I.
5.10.2011 16/17
Podrobneji rozebrana problematika
http://download.oracle.com/javase/tutorial/java/nutsandbolts/index.html
Petr Krajca (UP)
KMI/UP3J:Seminar I.
5.10.2011 17/17