ObjekntnoProgramiranje Fizika2010 2011

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 30

Kragujevac

UVOD
Just Another Vague Acronim - JAVA
1991. tvorac Jave James Gosling, Sun Microsystems
Stvorio jednostavan, platformski nezavistan jezik
Namenjen pokretanju elektronskih ureaja (Interaktivna TV,
inteligentne rerne, telefoni,..)
1994. Java se ugrauje u web browser WebRunner
1995. obavljuje se kod i dokumentacija Jave na Internetu
OSNOVNE KARAKTERISTIKE
Objektna orijentacija
podrava sve koncepte objektno orijentisanog programiranja
sintaksa slina C++ ali su izbaeni sloeni koncepti (pointeri)
Prenosivost
Java programi se prevode u byte kod koji nije mainski jezik
nijednog konkretnog raunara, ve se izvrava na JVM
Java Virtuelna Maina - je virtuelni raunar koji moe biti
simuliran na bilo kom raunaru
Prirodna prilagoenost Internetu
Java programi mogu da se izvravaju u Web browserima
Poseduju sigurnosne mehanizme
Mogu da se distribuiraju i izvravaju na razliitim mainama
Podrava konkurentno programiranje
Omoguene klase za korisniki interfejs (API) koji omoguuje
jedinstven izgled i korienje aplikacija
JAVA KAO PLATFORMA
Dizajniran da to manje zavisi od specifinih karakteristika
konkretnog raunarskog sistema
Jednom napisan i preveden program se izvrava na bilo kojoj
platformi koja podrava Javu
Interpretirani jezik, bajt-kod
Java virtuelna maina (JVM)
Dve vrste Java programa
Apleti
izvravaju se u okviru WWW itaa
automatska distribucija i instalacija
ograniene mogunosti apleta iz razloga bezbednosti
Aplikacije
JAVA 2 PLATFORMA
2

Java API (Application Programming Interface) je skup ve


gotovih softverskih komponenti napisanih u Java programskom
jeziku koji su podeljeni u pakete (eng. package), a svaki se sastoji od
klasa (eng. class) koje enkapsuliraju (eng. encapsulate) odreenu
funkcionalnost.
java.applet - Javini programi se mogu izvravati unutar Web
preglednika (npr. Internet Explorer, Mozilla, Netscape); ovaj paket
enkapsulira tu funkcionalnost.
java.awt, javax.swing - enkapsulira kreiranje korisnikog
interfejsa, grafike i slike.
java.io-input/output funkcionalnost za Java 2 platformu
java.lang podrazumevani paket, osnovni za prevoenje i
interpretiranje Javinih programa
java.net - namenjena Internet aplikacijama.
java.security - sigurnost na Internetu.
java.sql - rad sa bazama podataka.
KOMPAJLERI I INTERPRETERI
Program pisan u nekom od viih programskih jezika potrebno je
prevesti na mainski jezik, ne bi li bio izvren. To prevoenje vri
kompajler (compiler) odgovarjueg programskog jezika. Nakon to
je program jednom preveden, program u mainskom jeziku se moe
izvriti neogranien broj puta, ali, naravno, samo na odreenoj vrsti
raunara.
Postoji alternativa. Umesto kompajlera, koji odjednom prevodi itav
program, mogue je koristiti interpreter, koji prevodi naredbu po
naredbu prema potrebi. Interpreter je program koji se ponaa kao
CPU s nekom vrstom dobavi-i-izvri ciklusa. Da bi izvrio program,
interpreter radi u petlji u kojoj uzastopno ita naredbe iz programa,
odluuje ta je potrebno za izvravanje te naredbe, i onda je
izvrava (oni se mogu koristiti za izvravanje mainskog programa
pisanog za jednu vrstu raunara na sasvim razliitom raunaru).
JAVA KOMPAJLER I INTERPRETER
Projektanti Jave su se odluili za upotrebu kombinacije kompajliranja
i interpretiranja. Programi pisani u Javi se prevode u mainski jezik
virtuelnog raunara, tzv. Java Virtual Machine.
Mainski jezika za Java Virtual Machine se zove Java bytecode.
(Sun Mycrosystems, zaetnik Jave, razvio je CPU koji izvrava Java
bajt kod u originalu, bez interpretiranja).

Sve to je raunaru potrebno da bi izvrio Java bajt kod jeste


interpreter. Takav interpreter oponaa Java virtual machine i
izvrava program.

samo jednom svaki put


Prog.java
Java
editor Java program
kompajler

Prog.class
Java bajt kod

JVM za
Macintosh
JVM za
Windows
JVM za
Linux

ECLIPSE

http://www.eclipse.org/downloads/

Koristiemo Eclipse, kao razvojno okruenje

PRIMER: HELLO WORLD


public class HelloWorld {
public static void main(String[ ] args)
{System.out.println("Hello, World");
}// kraj main metode
}// kraj klase HelloWorld
Svaka Java aplikacija mora sadrati barem jednu klasu s metodom
main(String[] args)
Poinje svoje izvravanje pozivom metode main

case sensitive
vodite rauna o
velikim i malim
slovima

System.out.println("Hello, World");
Klasa System nalazi se u paketu java.lang. Njeno puno ime je
java.lang.System. Meutim, java.lang je jedini paket za koji se ne
mora navesti puno ime klase. Out je statika varijabla lanica klase
System tipa PrintStream; println je jedna od metoda klase
5

PrintStream. Efekat cele naredbe je ispis stringa "Hello, World" na


konzoli.
Za API pogledati dokumentaciju Jave koja ide uz JDK (Java
Development Kit)
dirjave\docs\api\index.html
JAVA OD POETKA
Potrebni i skoro dovoljni uslovi
1. prihvatiti OO nain razmiljanja
(misliti na javi)
2. na poetku i na kraju itati dokumentaciju
(ne beati od engleskog)
U Javi je sve ime se manipulie objekat neke klase, odnosno
referenca na objekat

REZERVISANE REI
The words goto and const are reserved to the extent that programmers
cannot use them, but they have no specific meaning in the Java language.

abstract assert
boolean
break byte
case
catch char
class const
continue default
do double
else
enum
extends
false final finally
float for
goto
if implements
import
instanceof
int
interface
long
native
new
null
package
private
protected public
return
short static
true
strictfp super switch
synchronized
this
throw throws
transient
try
void
volatile
while

PRIMITIVNI TIPOVI PODATAKA


Tip
Podataka

Opis

Bitova

Oznaen

Opseg

boolean

Logicki tip

NA

true ili false

char

Karakter
(Unicode)

16

Unsigned

\u0000 \uFFFF
0 215-1

byte

Ceo broj

Signed

-128 127
-27 27 -1

short

Ceo broj

16

Signed

-32768 - 32767
-215 215 -1

int

Ceo broj

32

Signed

-2147483648 2147483647
-231 231 -1

long

Ceo broj

64

Signed

-263 263 -1

float

Pokretni zarez

32

Signed

-3.4E38 +3.4E38

double

Eksponencijalni
zapis

64

Signed

-1.7E308 +1.7E308

Tip
Podataka

Default
vrednost

boolean

False

char

\u0000

byte

short

int

long

0L

float

0.0f

double

0.0d

boolean finished = 0;
if (finished == 0) if (finished)
true and false are the only two valid values
for a boolean type.
INICIJALIZACIJA

Default inicijalizacija vai samo za podatke lanove objekta,

ali ne i za lokalne varijable metoda (kompajler javlja greku).

LITERALS
Karakteri
char question = '\u4567';
\n: Used to denote new line
\r: Used to denote a return
\t: Used to denote a tab
\b: Used to denote a backspace
\f: Used to denote a form feed
\': Used to denote a single quote
\": Used to denote a double quote
\\: Used to denote a backslash
Celi brojevi 43, O53, Ox2b, Ox2B, OX2b, 0X2B
(43 u dekadnom, oktalnom i heksadekadnom zapisu)
Realni brojevi: 12.33, 1.25E+8, 1.2534f, 156d
(The suffix f or F indicating a floating-point number; The suffix d or D
indicating double number)
If the suffix f or d is not used, the literal is interpreted as of type double.
PRIMER 1:
public class IntegerDemo {
public static void main(String [] args)
{
int x = 250;
System.out.println("x is "+ x);
short a, b, c;
c = 21;
b = 9;
a = (short) (b + c); //why cast to a byte?
System.out.println("a is " + a);
long y = 12345678987654321L; //notice the "L"
System.out.println("y is " + y);
y = x;
byte s;
s = (byte) c;
System.out.println("y is now " + y + \n and s is "+ s);
}
}
8

OPERATORI
Tip
operatora

Operator

Opis

Aritmetiki
operatori

++, -+, -, *, /, %

Inkrementiranje , dekrementiranje ( unarni


operatori )
Sabiranje, Oduzimanje, Mnoenje, Deljenje,
Deljenje po modulu

Operatori
poreenje

==, !=, <, >,


<= , >= , %

Jednakost, Nejednakost, Manje od, Vee od,


Manje ili jednako, vee ili jednako, deljenje
po modulu

Logiki
operatori

&&, II, ^, !

Logiko AND, Logiko ukljuujue OR,


Logiko iskljuujue XOR, Negacija

Operatori za
rad sa
bitovima

&, ^, ^<<, >>

Bitsko AND, Bitsko OR, Bitsko XOR,


Pomeranje bitova u levu stranu, pomeranje
bitova u desnu stranu

Operatori
dodele
vrednosti

=
+=, -=, *=, /=,
%=

Dodela vrednosti
Dodela vrednosti sa primenom aritmetike
operacije

Spec.
operatori

+
Instanceof
?:

Konkatenacija stringova
Operator za proveru pripadnosti nekog
objekta klasi

PRIMER 2:
public class tipovi {
public static void main(String[] args) {
String first="Objektno", last="programiranje";
String name= first + " " + last;
System.out.println(" name je " + name);
String p= "Java " + first;
System.out.println(" p je " + p);
System.out.println(first + a + p);
int m=20;
System.out.println(" m << 2 = " + (m>>2));
int q = 5, y = 6, z = -3;
boolean k = ((q + 3 > y) ^ (z >= y)) && !(q == 5 | ++q == y);
System.out.println("b je " + k)
System.out.println("Ternary: " + (m==5 ? "yes" : "no"));
}
}

if (uslov)
{ uslovne_naredbe_1
}
else
{ uslovne_naredbe_2
}
if,else - kljune rei
uslov - moe biti taan ili netaan
uslovne_naredbe_1 - izvravaju se ako je izraz taan
uslovne_naredbe_2 - izvravaju se ako je izraz netaan

PRIMER 3:
public class StudentGrade {
public static void main(String [] args)
{
int score = 67;
char grade;
if(score >= 90)
{
grade = 'A';
System.out.println("Way to go!");
}
else if(score >= 80)
10

{
grade = 'B';
System.out.println("Good job");
}
else if(score >= 70 && score < 80)
{
grade = 'C';
}
else if(score >= 60)
{
grade = 'D';
}
else
{
grade = 'F';
System.out.println("Try again");
}
System.out.println("Your grade is a " + grade);
}
}

11

switch (promenljiva)
{ case(vrednost1):
uslovne_naredbe_1
break;
case(vrednost2):
uslovne_naredbe_2
break;
...
default: uslovne_naredbe
}
switch - identifikuje promenljivu na osnovu koje program odluuje
gde dalje da ide
case - poetak svake grane
break - obeleava kraj svake grane
default - ako nijedna promenljiva (char, int, short, byte) naredbe
switch ne odgovara ni jednoj vrednosti case

PRIMER 4:
public class ConStud {
public static void main(String [] args)
{
char grade ='A';
switch(grade)
{
case 'A' :
System.out.println("Excellent!");
break;
case 'B' :
System.out.println("Very good!");
break;
case 'C' :
System.out.println("Well done");
break;
case 'D' :
System.out.println("You passed");
break;
case 'F' :
12

System.out.println("Better try again");


break;
default :
System.out.println("Invalid grade");
break;
}
System.out.println("Your grade is a " + grade);
}
}

13

for ( inicijalizacija ; izraz ; inkrement )


{
naredbe_petlje;
}
Inicijalizacija - postavlja poetnu vrednost izraza
izraz - testira se na poetku svakog prolaza kroz petlju
Inkrement - izvrava se na kraju svakog prolaza kroz petlju.
PRIMER 5:
public class Ulaz{
public static void main(String[ ] args) {
int i=10;
for(int j=0;j<i;j++) System.out.println(j);
}
}

PRIMER 6:
public class Factorijal {
public static void main(String[] args) {
long limit = 20L; // Calculate factorials of integers up to this value
long factorial = 1L; // A factorial will be stored in this variable
// Loop from 1 to the value of limit
for (long i = 1L; i <= limit; i++) {
factorial = 1L; // Initialize factorial
for (long factor = 2; factor <= i; factor++) {
factorial *= factor;
}
System.out.println(i + "! is " + factorial);
}
}
}

14

while( uslov )
{
naredbe_petlje;
}
izraz - testira se na poetku svakog prolaza u petlju
naredbe_petlje izvravaju se ako je uslov taan.
PRIMER 7:
public class WhileP {
public static void main(String[] args) {
int x = 1;
while(x <= 10)
{
System.out.println(x);
x++;
}
}
15

}
PRIMER 8:
public class BreakDemo
{
public static void main(String [] args)
{
int k = 1;
while(k <= 10)
{
System.out.println(k);
if(k == 6)
{
break;
}
k++;
}
System.out.println("The final value of k is " + k);
}
}

16

do
{
naredbe_petlje;
} while (uslov)
naredbe_petlje izvravaju se sigurno jedanput i svaki
sledei put za koji je uslov zadovoljen.
izraz - testira se posle prvog a pre svakog novog ulaska u petlju
PRIMER 9:
public class DoWhileP {
public static void main(String[] args) {
int y = 10;
do
{
if (y%3==0)System.out.println(y);
y += 10;
}while(y <= 100);
}
}

17

try/catch/finaly
try {
// izvrne_naredbe_1;
} catch (Neki_izuzetak e)
{
// naredbe_za_obradu;
}
finally {
// izvrne_naredbe_2;
}
try grupa naredbi u kojima se moe pojaviti izuzetak ili
abnormalni prekid (break, continue)
catch - Oznaava poetak obrade izuzetaka koji je tipa
Neki_izuzetak ili podklase tog tipa
finally Naredbe koje se izvravaju bez obzira na to da li je
dolo do pojave izuzetaka ili je normalno izvrena grupa naredbi u try

PRIMER 10:
package vezbe;
public class LeterCheck {
public static void main(String[] args) {
char symbol = 'A';
symbol = (char)(128.0*Math.random()); // Generate a random
character
if(symbol >= 'A') { // Is it A or greater?
if(symbol <= 'Z') {
// yes, and is it Z or less?
// Then it is a capital letter
System.out.println("You have the capital letter " + symbol);
} else {
// It is not Z or less
if(symbol >= 'a') {
// So is it a or greater?
if(symbol <= 'z') { // Yes, so is it z or less?
// Then it is a small letter
System.out.println("You have the small letter " + symbol);
} else {
// It is not less than z
System.out.println(
"The code is greater than a but it's not a letter");
}
} else {
System.out.println(
18

"The code is less than a and it's not a letter");


}
}
} else {
System.out.println("The code is less than A so it's not a letter");
}
}
}

Character Testing Using Standard Library Methods:


PRIMER 11:
package vezbe;
import static java.lang.Character.isLowerCase;
import static java.lang.Character.isUpperCase;
public class testchar {
public static void main(String[] args) {
char symbol = 'A';
symbol = (char)(128.0*Math.random()); // Generate a
random character
if(isUpperCase(symbol)) {
System.out.println("You have the capital letter " + symbol);
} else {
if(isLowerCase(symbol)) {
System.out.println("You have the small letter
"
+ symbol);
} else {
System.out.println("The code is not a letter");
}
}
}
}

OBJEKTI I KLASE
Standardno, proceduralno programiranje (npr. C):

19

Program zapoinje izvravanjem funkcije main koja izvrava postavljeni


zadatak pozivanjem drugih funkcija. Program zavrava kad se izvre sve
instrukcije funkcije main. Osnovni graevni blok programa je, dakle,
funkcija. Postavljeni zadatak se reava tako da to se razbije na niz
manjih zadataka od kojih se svaka moe implementirati u jednoj funkciji,
tako da je program niz funkcijskih poziva.
U objektno-orijentisanom programiranju
osnovnu ulogu imaju objekti koji sadre i podatke i funkcije
(metode). Program se konstruie kao skup objekata koji meusobno
komuniciraju. Podaci koje objekat sadri predstavljaju njegovo stanje, dok
pomou metoda on to stanje da moe menja i komunicira sa drugim
objektima.
Java je potpuno objektno-orjentisan jezik i zato je
sav izvorni kod u Javi podeljen u klase
(koje se nalaze u istoj ili razliitim izvornim datotekama).
// Podsecanje
public class HelloWorld{
public static void main(String[] args){
System.out.println("Hello, World");
}
} // kraj definicije klase HelloWorld
Dakle, u osnovi svega je objekat koji:
ima podatke
ima metode
ima jedinstvenu adresu u memoriji
predstavlja instancu neke konkretne klase
KLASA
Definisanje klase
<modifikator> class <className> {
<modifikator> <tip> <imepromenljive1>;
<modifikator> <tip> <imepromenljive2>;
...

<modifikator> <povratni tip> <imemetoda1> (<tip> <arg1>,...) {


... //implementacija metoda 1
}
<modifikator> <povratni tip> <imemetoda2> (<tip> <arg1>,...) {
... //implementacija metoda 2
}
...
// kraj definicije klase
Funkcije
lanice metodi

20

OBJEKTI
Klasom se opisuju objekti sa istim
karakteristikama (podaci lanovi)
ponaanjem (funkcionalnostima metode)
Podaci lanovi (atributi)
svaki objekat ima sopstvene vrednosti podataka lanova
trenutne vrednosti podataka objekta ine trenutno stanje
objekta
Funkcije lanice (metodi)
njima su definisana ponaanja objekta
poziv metoda jednog objekta slanje poruke
obrada zahteva tj. odgovaranje na poruku
PRIMER.
lt objekat klase Light
lt.on(); - slanje poruke, tj.
poziv metoda on objekta lt

METODI, OVERLOADING
skup metoda - interface
Povratni tip i ime metoda su obavezni, kao i ()
<modifikator> <povratni tip> <ime metoda> (<argumenti>) {
// Telo metoda. Ovde su date naredbe koda.
}
Metodi se definiu samo kao deo klase. Pozivi pogrenih metoda
za neki objekat se registruju pri kompajliranju.
int x = a.f(); // a je objekat odgovarajuce klase
Poseban tretman imaju static metodi, kao i static podaci (o tome
malo kasnije).
float naturalLogBase() { return 2.718f; }
void nothing() { return; }
Vraanje sa bilo koje take, ali sa odgovarajuim tipom.
OVERLOADING
U jednoj klasi (ili pri nasleivanju) se moe definisati vie metoda sa
istim imenom ali se oni moraju razlikovati po broju ili bar po
tipu argumenata. Dozvoljeno je i da
vraaju razliite tipove
(ali pod uslovom da se razlikuju po argumentima).
21

KREIRANJE OBJEKTA
Sve ime se manipulie je objekat neke klase (ak i sama
aplikacija/applet, naravno ne raunajui primitivne tipove), odnosno
referenca na objekat.
Objekat TV
Referenca daljinski
Sa sobom nosite daljinski, a ne televizor. Moete kupiti daljinski i bez
televizora.
Light lt; // kreirana je samo referenca
Light lt = new Light(); // kreiran je i objekat
PRIMER 12 - IZRAUNAVANJE ZAPREMINE
public class zapremina {
public static void main(String[ ] args)
{
int r=3;
float z=zapremina(r);
System.out.println("Zapremina lopte poluprecnika " + r+ " je "
+ z);
}
public static float zapremina(int r)
{
return (4.0f/3)*r*r*r*3.14f;
}
}
PRIMER 13:
Definisati klasu Robot (bez modifikatora) na sledei nain
Robot bez modifikatora
rbr

tipa integer, bez modifikatora

setrbr(int br) metod koji postavlja vrednost promenljive rbr


sayHello()
metod koji ispisuje poruku
Hello, I am robot no. ___
Definisati aplikaciju UseRobot (preciznije public klasu UseRobot) koja u
svom main metodu:
kreira objekat klase Robot,
postavlja vrednost rbr na 1,
22

alje poruku kreiranom objektu da se javi (sayHello).


Primer 13a:
Prepraviti aplikaciju UseRobot tako da kreira u petlji 3 objekta tipa
Robot, pri emu svakom dodeljuje redni broj po redosledu kreiranja i,
naravno svaki od njim mora da se javi.
public class UseRobot{
public static void main(String[ ] args) {
Robot r=new Robot();
r.setrbr(1);
r.sayHello();
}
}
// kraj definicije klase UseRobot
class Robot{
int rbr;
void setrbr(int br){
rbr=br;
}
void sayHello(){
System.out.println(" I am robot no."+rbr);
}
}
PRIMER 13a:
public class Test {
public static void main(String[] args) {
Robot robot = new Robot();
int i;
for (i=1;i<4;i++){
robot.setrbr(i);
robot.sayHello();
}
}
}
class Robot {
int rbr;
public void setrbr(int i) {
rbr = i;
}
public void sayHello() {
System.out.println("Hello, Im robo " + rbr);
23

}
}
KONSTRUKTORI
class Tacka{
private double x;
private double y;
public Tacka() { x=0.0; y=0.0; }
public Tacka(double a, double b) { x=a; y=b; }
public double getX() { return x; }
public double getY() { return y; }
}
Konstruktor je metod ima isto ime kao i klasa, pozivase iskljuivo pri
instanciranju objekata (dakle, operatorom new),
nema povratne vrednosti
Klasa moe imati vie konstruktora (overloading na delu)
Konstruktor bez parametara je default konstruktor i on postoji
kada klasa nema posebno implementiran (naveden) ni jedan
konstuktor videti Primer 14., u suprotnom nee postojati
PRIMER 14:
public class Testovi {
public static void main(String[ ] args){
Tacka a = new Tacka();
Tacka b = new Tacka(1,1);
System.out.println("A(" + a.getX() + "," + a.getY() + ")\n");
System.out.println("B(" + b.getX() + "," + b.getY() + ")\n");
}
}
class Tacka {
private double x;
private double y;
public Tacka() { x=0.0; y=0.0; }
public Tacka(double a, double b) { x=a; y=b; }
public double getX() { return x; }
public double getY() { return y; }
}

Object variables Reference


int x;
// x je varijabla primitivnog tipa
Tacka A; // A je objektna varijabla (neinicijalizovana)
Tacka B=new Tacka(0,0); // B je objektna varijabla (inicializovana)
24

Tacka(0,0)
double z = A.getX(); // greska, objekat ne postoji
double w = B.getX(); // OK
A = new Tacka(12,3);

Tacka(12,3)

A = B; - ne kreira se novi objekat vec A postaje referenca na vec


postojeci objekat

Tacka(12,3)

Oblast vaenja
Oblast vaenja (scope) podrazumeva vidljivost i ivotni vek imena
i Java je definie slino C-u i C++-u
{ int x = 12;
/* samo je x dostupno*/
{ int q = 96;
/* x i q su dostupni */
}
/* samo x je dostupno a q ne postoji */
}
Za razliku od C-a u Javi nije dozvoljeno sledee
{ int x = 12;
{
25

int x = 96; /* nepravilno */


}
}
ivotni vek objekata nije isti ivotnom veku primitivnih
tipova. Nakon kreiranja objekat postoji i posle }, jer je iz oblasti
vaenja izala samo referenca
{
Tacka s = new Tacka();
}
Kada objekat vie nije potreban, tj. nije referenciran ni jednom
referencom onda biva automatski osloboen garbage collector-om

Jo malo o objektima i referencama


Poto se svim 'podacima' (osim onih koji su primitivnog tipa) pristupa
preko reference oigledno je da:
operator dodele vrednosti (=) i poreenja (==) 'rade' samo sa
referencama na objekte (naravno, kada se primenjuju na objekte)
za kopiranje stanja objekta korisiti se metoda clone(), a za poreenje
metoda equals()
promenjliva koja pripada sloenom tipu (reference type) ne moe
nikada biti dodeljena promenljivoj primitivnog tipa i obrnuto
MyClass copy = (MyClass) obj.clone();
String a = "Christian Cantrell";
String b = "Christian Cantrell";
if (a.equals(b)) { // Ovaj kod e biti izvren. }
Originalno equals metod radi isto to i == ako nije posebno
definisan (overriden) za klasu, za veinu klasa iz javinih paketa jeste.
NIZOVI
U Javi, niz je sam po sebi objekat (ili referenca) bez obzira na to
kakvi su mu elementi, a elementi mogu pripadati nekom
primitivnom tipu podatka ili biti objekti neke klase.
Tri koraka u kreiranju niza
Deklaracija promenljive niza (array variable)
int primes[]; int[] primes;
Sijalica luster[]; Sijalica[] luster;
Kreiranje objekta niza i njegova dodela promenljivoj niza
Korienjem operatora new

26

primes = new int[5]; luster = new


Sijalica[3];
Direktnim inicijalizovanjem niza
primes = {2, 3, 5, 7, 11};
Smetanje podataka u niz primes[1]=2;
Viedimenzioni nizovi se deklariu na sledei nain
int brojevi = new int[10][10];
Kao i u C-u prvi element ima indeks 0.
Nizovi su uvek inicijalizovani
na nulu, ako su numeriki (ak ako se radi o lokalnom nizu)
null, ako su elementi reference.
Elementima se ne moe pristupiti van definisanog opsega (pri
izvravanju se proverava indeks i die IndexOfBoundsException u
sluaju da je van opsega)
Svaki niz ima public polje, length, koji sadri broj elemenata u nizu
Prosleivanje niza metodu (poznat primer)
public static void main(String[] args){
System.out.println(args[0]);
}
Niz kao povratni tip metoda
public int[] makeArray(int howMany)
{ int[] ar = new int[howMany];...
return ar;
}

27

INIZIJALIZACIJA NIZOVA
int[] primes = {2, 3, 5, 7, 11, 13, 17}; // An array of 7 elements
int[] primes = new int[100];
primes[0] = 2;
primes[1] = 3;
double[] data = new double[50];
for(int i = 0 ; i<data.length ; i++){
data[i] = 1.0;
}

PRIMER 15:
package vezbe;
import static java.lang.Math.sqrt;
public class Primes {
public static void main(String[] args) {
28

long[] primes = new long[10]; // Array to store primes


primes[0] = 2L; // Seed the first prime
primes[1] = 3L; // and the second
int count = 2; // Count of primes found up to now,
// which is also the array index
long number = 5L; // Next integer to be tested
for(;count < primes.length;number=(long)(sqrt((double)number)){
primes[count++] = number; // We got one!
}
for(long n : primes) {
System.out.println(n); // Output all the primes
}
}
}

Arrays of Arrays
float[][] temperature = new float[10][365];

PRIMER 16:
public class weather {
public static void main(String[] args) {
float[][] temperature = new float[10][365]; //
Temperature array
// Generate random temperatures
for(int i = 0; i<temperature.length; i++) {
29

for(int j = 0; j < temperature[i].length; j++) {


temperature[i][j] = (float)(45.0*Math.random()-10.0);
}
}
// Calculate the average per location
for(int i = 0; i<temperature.length; i++) {
float average = 0.0f; // Place to store the average
for(int j = 0; j < temperature[i].length; j++) {
average += temperature[i][j];
}
// Output the average temperature for the current location
System.out.println("Average temperature at location "
+ (i+1) + " = " + average/(float)temperature[i].length);
}
}
}
PRIMER 17:
public class RobotManager {
public static void main(String[] args) {
Robot robot;
int nargs=args.length;
if(nargs <= 1){
System.out.println("There must be at least two arguments in
the command!");
System.out.println("Example: java RobotManager Mary Kaan");
System.exit(0);}
else {
for(int i=1; i<nargs; i++){
robot = new Robot();
robot.setName(args[i]);
robot.sayHelloTo(args[0]);
}
}
}
}
class Robot {
private String myName = "nobody";
public void setName(String name) {
myName = name;
}
public void sayHelloTo(String name) {
System.out.println("Hello " + name + "!");
System.out.println("I'm Robo" + myName + ".");
}
}

30

You might also like