Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Cu ce va aparati de cainii agresi...

Nu imi platiti coletul cu cardul ...

Mi-au disparut amigdalitele ?

Exista vreun plan de terorizare p...
 Schimbare adresa DNS IPv4 pe rout...

Recomandare Barebone

Monede JO 2024

Suprasolicitare sistem electric
 CIV auto import

Mutare in MOZAMBIC - pareri, expe...

Scoatere antifurt airtag de pe ha...

Magnet in loc de clește pent...
 Cumparat/Locuit in apartament si ...

Pot folosi sistemul PC pe post de...

Sokol cu distorsiuni de cross-over

Filtru apa potabila cu osmoza inv...
 

String pool

- - - - -
  • Please log in to reply
11 replies to this topic

#1
mihaid89

mihaid89

    Junior Member

  • Grup: Members
  • Posts: 28
  • Înscris: 01.11.2012
Salut,

Revin si eu cu o intrebare despre String-uri.

Care e diferenta intre:

String s1 = "sir de caractere";
String s2 = "sir de caractere";

si

String s1 = new String("sir de caractere");
String s2 = new String("sir de caractere");

In care dintre situatii se creeaza doar o referinta la s1? Unii zic intr-un fel, altii in alt fel si nu mai inteleg care e varianta corecta...

Edited by mihaid89, 25 October 2014 - 20:11.


#2
alexcrist

alexcrist

    Watchdog

  • Grup: Moderators
  • Posts: 9,302
  • Înscris: 02.02.2006
Știi diferența între operatorul == și metoda equals? Folosindu-le afli exact răspunsul întrebărilor tale.

String s1 = "sir de caractere";
Aici ”sir de caractere” este un literal constant. Poți să declari 100 de variabile tip String care să pointeze la același literal constant. Cele 100 de variabile vor fi identice (vor pointa către exact aceeași zonă de memorie).

String s1 = new String("sir de caractere");
String s2 = new String("sir de caractere");
Aici creezi noi obiecte, de fiecare dată. s1 și s2, deși vor avea aceeași valoare ca text, vor fi obiecte diferite în memorie.

Folosește ce ți-am spus la început și te vei convinge. ;)

#3
sorin147

sorin147

    Senior Member

  • Grup: Senior Members
  • Posts: 6,364
  • Înscris: 11.08.2003
http://stackoverflow...-string-literal

#4
mihaid89

mihaid89

    Junior Member

  • Grup: Members
  • Posts: 28
  • Înscris: 01.11.2012
pai asa mi s-a parut si mie logic (ca doar il are pe "new" langa el). Dar eu fac un curs cu Laurentiu Spilca la Telecom Academy si el spune ca atunci cand este cu new se creeaza o referinta..

Este o diferenta intre atribuire directa si folosirea operatorului new. In cazul folosirii operatorului new, daca sirul de caracterea a mai fost anterior adaugat
se creaza doar o referinta. Astfel, in exemplul de mai sus sunt doar trei zone de memorie alocate pentru cele patru siruri.

Attached Files


Edited by mihaid89, 25 October 2014 - 20:27.


#5
alexcrist

alexcrist

    Watchdog

  • Grup: Moderators
  • Posts: 9,302
  • Înscris: 02.02.2006
Când ai
String s1 = new String("sir de caractere");
s1 nu este obiectul în sine, ci este o referință la un obiect de tip String. Poți avea mai multe referințe la același obiect.

#6
mihaid89

mihaid89

    Junior Member

  • Grup: Members
  • Posts: 28
  • Înscris: 01.11.2012
Deci ce spune instructorul mai sus este gresit? Adica este tocmai invers..

#7
alexcrist

alexcrist

    Watchdog

  • Grup: Moderators
  • Posts: 9,302
  • Înscris: 02.02.2006
Lasă ce zice instructorul. Vezi ce zice limbajul.

Ți-am spus la început: vezi diferența dintre operatorul == și metoda equals: http://stackoverflow...quals-confusion
Cu astea te lămurești dacă instructorul zice bine sau nu. Sau poate ai înțeles tu greșit ce a zis instructorul. Sau poate a înțeles el greșit (se mai întâmplă).

#8
The@ngel

The@ngel

    Active Member

  • Grup: Members
  • Posts: 1,225
  • Înscris: 07.08.2003
String s1 = "123"
se creeaza 1 pointer si un literal constant:
1) "123" - un literal constant
2) s1 - un pointer catre acel literal
------------------------------------------------

String s1 = new String("123")
se creeaza un pointer, un literal constant si un obiect
1) "123" - literal constant
2) new String - obiectul
3) s1 - pointerul care obiect
------------------------------------------------
String s1 = "123";
String s2 = new String("123");
se creeaza un literal, un obiect si doi pointeri
1) "123" - literal
2) s1 - pointer catre literal
3) new String - obiect string
4) s2 - pointer catre obiectul string

#9
mihaid89

mihaid89

    Junior Member

  • Grup: Members
  • Posts: 28
  • Înscris: 01.11.2012
Mai revin cu o intrebare. Am facut o paleta de culori care imi returneaza 131072 de culori. Cum fac sa imi returneze toate cele 256^3 culori ca nu ii gasesc logica. Nu cred ca ar avea loc pe monitor oricum ca am 1366X768 = 1049088 pixeli pe monitor. Dar ma intereseaza cam cum arata codul ca sa le returneze.

Eu am scris asa:

import java.applet.*;
import java.awt.*;
public class PaletaCulori extends Applet{
   
	int x,y;
	static int nr_pixeli;
   
	Label l1 = new Label("culori");
   
	public void paint(Graphics g){
		for(int ii=0;ii<255;ii++){
			for(int i=255;i>=0;i--){
				g.setColor(new Color(i,y,0));
				g.drawLine(x,y,x,y);
				x++;
				nr_pixeli++;
			}
			for(int i=0;i<255;i++){
				g.setColor(new Color(0,y,i));
				g.drawLine(x,y,x,y);
				x++;
				nr_pixeli++;
			}
			x=0;
			y++;
			nr_pixeli++;
		}
	}
   
	public void init(){
		add(l1);
		new Thread(){
			public void run(){
				while(true){
					try{
						Thread.sleep(5000);
						l1.setText(""+nr_pixeli);
					}catch(InterruptedException e){}
				}
			}
		}.start();
	}
   
}



#10
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,236
  • Înscris: 24.02.2007
culoare = 0
for i = 0 .. 4096
for j = 0 .. 4096

pixel[i, j] = culoare++

#11
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,440
  • Înscris: 10.08.2005

Quote

256^3=16777216

@mihaid89, ce ai vrut tu sa faci  sunt 3 bucle una il alta,
nu doua bulce in a-III-a, asa cum ai facut tu
= 256 * (256+256)

#12
mihaid89

mihaid89

    Junior Member

  • Grup: Members
  • Posts: 28
  • Înscris: 01.11.2012

View Postdani.user, on 03 noiembrie 2014 - 19:15, said:

culoare = 0
for i = 0 .. 4096
for j = 0 .. 4096

pixel[i, j] = culoare++

Da sunt 4096 de pixeli pe orizontala si 4096 pe verticala, dar nu stiu cum sa fac sa generez patratul de culori Posted Image

View PostMarianG, on 03 noiembrie 2014 - 19:43, said:

@mihaid89, ce ai vrut tu sa faci  sunt 3 bucle una il alta,
nu doua bulce in a-III-a, asa cum ai facut tu
= 256 * (256+256)
Da sunt 3 bucle, dar nu stiu din 3 bucle cum sa fac un patrat. sa fac o linie este simplu..

Nu m-am exprimat eu bine.. Vreau a fie ca un spectru de lumini, sa fie intrepatrunse culorile.

Edited by mihaid89, 04 November 2014 - 00:45.


Anunturi

Chirurgia cranio-cerebrală minim invazivă Chirurgia cranio-cerebrală minim invazivă

Tehnicile minim invazive impun utilizarea unei tehnologii ultramoderne.

Endoscoapele operatorii de diverse tipuri, microscopul operator dedicat, neuronavigația, neuroelectrofiziologia, tehnicile avansate de anestezie, chirurgia cu pacientul treaz reprezintă armamentarium fără de care neurochirurgia prin "gaura cheii" nu ar fi posibilă. Folosind tehnicile de mai sus, tratăm un spectru larg de patologii cranio-cerebrale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate