Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 86 odgovora
  • 26.826 pregleda

Najnovija ↓

Pointeri i JAVA ili u JAVI :) 04.06.2008. u 21:43 · pre 224 meseca #1
Pozdrav !

Ovako, pricao sam sa profom jezika C i rekao mu da je profa algoritama rekao da u javi nema pointera, a on kaze da naprotiv u javi imaju samo pointeri, on konstruktore naziva pointerima npr Interger = new integer 5; ovo nam je naveo kao primjer pointera u javi ?

Sta kazu uceni :) ?
Potpis
Jedno je sigurno, sve je nesigurno :)
Re: Pointeri i JAVA ili u JAVI :) 04.06.2008. u 21:59 · pre 224 meseca #2
I jos nesto, da ne govorim da je rekao za javu da nece za 5 godina ni postojati ccc....
Potpis
Jedno je sigurno, sve je nesigurno :)
Re: Pointeri i JAVA ili u JAVI :) 04.06.2008. u 22:58 · pre 224 meseca #4
Ha ha ha jok eto ne znam :)
Tip ima oko 60-65 god. izgleda prohlupo ali stvarno kazem da sam pricao sa njim i tako biser kaze... :) ustvari rekao je ako promjenimo ime BUS u TRAMVAJ to nista neznaci nego samo IME se promjenilo :) i da nemozemo napraviti pointer *nesto = nesto; ali sve se prevodi pointerima u JVM, eh tu sam stao i rekao nije problem raspitacu se...

Ma nije francuski tezak nego maras puno rukama mahat' :) ha ha ha
Potpis
Jedno je sigurno, sve je nesigurno :)
Re: Pointeri i JAVA ili u JAVI :) 04.06.2008. u 23:30 · pre 224 meseca #5
Why dont you use pointers in Java?
In: JAVA

Answer
You do not use pointers in Java because the language designers decided to abstract memory management to a higher level in Java than in C. The reason for this is that it is easy to make mistakes using pointers and other lower level memory management techniques. These mistakes can lead to bugs. hard to read code, memory leaks that waste system resources, and security issues. Instead for the most part Java takes care of memory management for the user who can instead specify behavior though the object oriented techniques that are safer and easier to understand. The downside is that the programmers lose some control and flexibility in using memory. Also, programs using Java take a small performance hit in some cases because of the extra work Java has to do to manage memory itself.





Answer

They are, however in Java they are called references.


Eh sad se i tema moze izbrisati lagano :)
Potpis
Jedno je sigurno, sve je nesigurno :)
Re: Pointeri i JAVA ili u JAVI :) 04.06.2008. u 23:57 · pre 224 meseca
izmenjeno 1 put, poslednji put franticnick 05.06.2008. u 00:14
  1. franticnick05.06.2008. u 00:14zapis iz teksta poruke
#6
Profa te nije lagao. Interno JVM stvarno barata pointerima. NekaKlasa obj = new NekaKlasa() jeste primer pointera u Javi.

Koristan link (izguglano na brzinu): http://www.saxoft.com/get.php?page=midptut0

Citat:

Java is based on the C and C++ syntax, so those of you familiar with these languages will have no problems learning it. The major difference is in Java there are no pointers. They designed it such ways, so it would be easier for coders to use it. The truth is, instead almost everything is a pointer, you just cannot see it. I said almost everything, the exceptions are the basic types
Re: Pointeri i JAVA ili u JAVI :) 05.06.2008. u 13:37 · pre 224 meseca #7
Vidi sa programerske tacke , Java nema pointere,to kako JVM interno barata pod Windows okruzenjem to je drugo,jer svaka VM ima odgovarajuci native kod kojim korespondira sa resursima,bilo na Win,Linux,Unix,Solaris ili Mac OS,ali kao programer treba da znas da nema pointera u Javi,kao u C++ ili kao delegate u C#

Programer
Re: Pointeri i JAVA ili u JAVI :) 05.06.2008. u 14:37 · pre 224 meseca #8
Pa i jeste i nije. Isto tako se može reći da sa programerske tačke gledišta, u Javi su sve promenljive - pointeri. (Osim primitiva).

Bilo kako bilo, pogrešno je terminologiju programskog jezika C koristiti u programskom jezuku Java. Otud i nedefinisanosti, nedorečivosti i višeznačnosti.
Potpis
OTPOR blokadi ulica, OTPOR blokiranom Beogradu, OTPOR blokiranoj Srbiji
Re: Pointeri i JAVA ili u JAVI :) 05.06.2008. u 14:52 · pre 224 meseca #9
Citat:
Java Beograd:
Bilo kako bilo, pogrešno je terminologiju programskog jezika C koristiti u programskom jezuku Java. Otud i nedefinisanosti, nedorečivosti i višeznačnosti.


Slazem se. Medjutim ako se ipak zeli upotrebiti terminologija C/C++ (u nedostatku bolje), onda ipak vise lezi naziv "pointer" nego "referenca".
Re: Pointeri i JAVA ili u JAVI :) 05.06.2008. u 15:16 · pre 224 meseca #10
Nikako. Termin "pointer" je mnogo, mnogo lošiji od termina "referenca".
Potpis
OTPOR blokadi ulica, OTPOR blokiranom Beogradu, OTPOR blokiranoj Srbiji
Re: Pointeri i JAVA ili u JAVI :) 05.06.2008. u 16:19 · pre 224 meseca
izmenjeno 1 put, poslednji put franticnick 05.06.2008. u 17:35
  1. franticnick05.06.2008. u 17:35zapis iz teksta poruke
#12
Ok, malo sam proguglao. Izgleda da se odomacio izraz "reference value" za ono sto imamo u Javi. Mada kao sto rekoh taj naziv "referance" nema nikakve veze sa referencama u C/C++.

Evo sta kaze JLS (The Java Language Specification)

Citat:

4.3.1 Objects
An object is a class instance or an array.

The reference values (often just references) are pointers to these objects, and a special null reference, which refers to no object.


link: http://java.sun.com/docs/books...on/html/typesValues.html#4.3.1

BTW jos nisam dobio "null reference exception" i dalje je "null pointer exception" :)
Re: Pointeri i JAVA ili u JAVI :) 06.06.2008. u 02:26 · pre 224 meseca #14
Preuzeto sa: http://en.wikipedia.org/wiki/Java_(programming_language) .

Citat:

Java does not support pointer arithmetic as is supported in, for example, C++. This is because the garbage collector may relocate referenced objects, invalidating such pointers. Another reason that Java forbids this is that type safety and security can no longer be guaranteed if arbitrary manipulation of pointers is allowed.


I ono što smo mi učili na fakultetu: zbog bezbednosti Java ne podržava pointere. Znači u pozadini JVM naravno mora raditi sa pointerima, ali niti programer niti korisnik ne mogu to videti niti mogu u programima koristiti pointere. Zamislite sajt koji učitava aplet (tipa onog chat-a na krstarici), i slobodno vršlja po celom disku jer je Java dopustila da autor tog apleta može da radi šta hoće. Nedostatak pokazivača je i mana i prednost, zavisi sa koje se strane posmatra.

Kao što kaže gore, promenljiva može da bude referenca na neki objekat, ali ne i pokazivač. Taj objekat u radu može da bude pomeren na neku drugu lokaciju usled manjka prostora u memoriji ili sličnih problema. Takođe reference se koriste pri "sakupljanju smeća".

Mislim nisam ja pametan više nego drugi, i ne znam više od vas, ali na samom početku bilo koje knjige o Javi se govori o razlici između C-a i Jave, i uvek se kao glavna razlika navodi nedostatak pointera.

Dakle kako JVM radi u pozadini nije bitno za korisnika, bitno je da kada programer piše program u Javi on ne koristi direktno pokazivače već radi sa referencama na objekte.
Potpis
http://www.devserbia.com/blog
Re: Pointeri i JAVA ili u JAVI :) 06.06.2008. u 08:27 · pre 224 meseca #15
Citat:
franticnick: Ne bih se slozio. Ako pogledas sta su reference u C/C++ one nemaju nikakve veze sa Javom, dok pointeri jos nekako i lice.

Pa upravo sam to i napisao. Pogrešno je koristiti terminologiju C/C++ u Javi.

Ako napišem

MyClass myClass = new MyClass();
foo.doSomething(myClass);

Ja nisam predao POINTER na myClass već sam predao REFERENCU na myClass.
Potpis
OTPOR blokadi ulica, OTPOR blokiranom Beogradu, OTPOR blokiranoj Srbiji
Re: Pointeri i JAVA ili u JAVI :) 06.06.2008. u 12:15 · pre 224 meseca #16
Code:

MyClass myClass = new MyClass();
foo.doSomething(myClass);

Ja nisam predao POINTER na myClass već sam predao REFERENCU na myClass.


Mozes da je nazivas REFERENCA ili kako god volis, ali cinjenica je da si predao najobicniji pointer na objekat.

I samo da napomenem da pointer kao termin nije vezan ni za jedan programski jezik (pa ni za C++). Dakle, citiram ponovo Java Language Specification:

Citat:

4.3.1 Objects
An object is a class instance or an array.

The reference values (often just references) ARE POINTERS to these objects, and a special null reference, which refers to no object.


Re: Pointeri i JAVA ili u JAVI :) 06.06.2008. u 12:34 · pre 224 meseca #17
Ajde da vidimo o čemu se priča. Engleska reč, glagol, to point prevedno na srpski znači pokazati. Izvedena imenica, pointer znači pokazivač. Engleska reč reference, u kontekstu o kome pričamo znači veza.

Dakle, poenta je u tome da se ne barata vrednostima, nego vrednosti stoje u memoriji, a funkcijama se predaju samo "veze do mesta u memoriji" odnosno "pokazivači do mesta u memoriji". To je potpuno isto.

Činjenica je da u C programskom jeziku može funkciji da se preda i vrednost, i pokazivač na memorijsku lokaciju vrednosti. pa postoji problematika o kojoj se uči i diskutuje: kad i kako predati vrednost a kad i kako predati pointer. Pointeri se na poseban način imenuju, na poseban način se njima barata i td. Dakle to su POINTERI.

U Javi je drugačije. Nema prenošenja vrednosti, nema posebnog načina označavanja posebnih promenljivih koje u sebi nose oznaku memorijske lokacije. Dakle, nema te problematike, nema tih i takvih POINTERA. Ima REFERENCI na objekte, smeštene negde u memoriji. Jeste isto, ali i nije. Drugačija je problematika pa je drugačija i terminologija.

Zamajac u motoru jeste zupčanik, ali ga niko ne zove zupčanikom, zato što je zamajac.
Potpis
OTPOR blokadi ulica, OTPOR blokiranom Beogradu, OTPOR blokiranoj Srbiji
Re: Pointeri i JAVA ili u JAVI :) 06.06.2008. u 12:43 · pre 224 meseca #18
Mozda reci da u javi nema aritmetike sa pokazivacima. Citaj vrednosti sa
lokacija na koje pokazuju i to je sve.
Potpis
"Čovek je biće koje se na sve navikava, i ja mislim da je ovo njegova najbolja definicija."
Fjodor M. Dostojevski
Re: Pointeri i JAVA ili u JAVI :) 06.06.2008. u 13:07 · pre 224 meseca #19
Citat:
Java Beograd: 

Činjenica je da u C programskom jeziku može funkciji da se preda i vrednost, i pokazivač na memorijsku lokaciju vrednosti. pa postoji problematika o kojoj se uči i diskutuje: kad i kako predati vrednost a kad i kako predati pointer. Pointeri se na poseban način imenuju, na poseban način se njima barata i td. Dakle to su POINTERI.

U Javi je drugačije. Nema prenošenja vrednosti, nema posebnog načina označavanja posebnih promenljivih koje u sebi nose oznaku memorijske lokacije...


Hej, polako. U javi se upravo SVE PRENOSI PO VREDNOSTI. Tako recimo sledeci kod predaje funkciji pointer (ili ako bas hoces referencu) PO VREDNOSTI:

Code:

public class Main
{
    static public void main(String ... args)
    {
        Integer a = new Integer(5);
        System.out.println("before: " + a);
        change(a);
        System.out.println("after: " + a);
    }
    
    static void change(Integer b)
    {
        b = new Integer(10);
    }
}


pa je rezultat 5, a ne 10.


Odgovori
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme