имам проблеми с referece ?!?
3 отговора
96 прегледа
имам проблеми с referece ?!?
ами написах една програма и нещо не върви. Тя беше по сложна, но е намалих до този размер за да се чете лесно.
Предавам като параметър класа Integer и понеже това е клас очаквам да получа референс, тоест при промяна на стойността да мога да я прочета вече променена, но не става.
ЗАЩО ?
ето и програмата
/*
* help.java
*
* Created on Петък, 2001, Август 24, 21:00
*/
/**
*
* @author ju
* @version
*/
public class help extends java.lang.Object {
/** Creates new help */
public help() {
}
public static void main(String[] args) {
Data danni = new Data();
Integer value = new Integer(1);
danni.getValue(value);
System.out.println(danni.value.intValue());
value = new Integer(2);
System.out.println(danni.value.intValue());
}
}
class Data {
public Integer value;
public void getValue(Integer val) {
value = val;
}
}
--------------------------
ако извикам пак
danni.getValue(value);
но след като съм променил стойността ще стане, а би трбявало да нямам нужда от това.
Нали класовете се предават по референсе а Interer е клас.
и нали при
value = new Integer(1) и
value = new Integer(2)
value е със един и същи адрес, или не ?
абе които знае да ми помогне

ju
Предавам като параметър класа Integer и понеже това е клас очаквам да получа референс, тоест при промяна на стойността да мога да я прочета вече променена, но не става.
ЗАЩО ?
ето и програмата
/*
* help.java
*
* Created on Петък, 2001, Август 24, 21:00
*/
/**
*
* @author ju
* @version
*/
public class help extends java.lang.Object {
/** Creates new help */
public help() {
}
public static void main(String[] args) {
Data danni = new Data();
Integer value = new Integer(1);
danni.getValue(value);
System.out.println(danni.value.intValue());
value = new Integer(2);
System.out.println(danni.value.intValue());
}
}
class Data {
public Integer value;
public void getValue(Integer val) {
value = val;
}
}
--------------------------
ако извикам пак
danni.getValue(value);
но след като съм променил стойността ще стане, а би трбявало да нямам нужда от това.
Нали класовете се предават по референсе а Interer е клас.
и нали при
value = new Integer(1) и
value = new Integer(2)
value е със един и същи адрес, или не ?
абе които знае да ми помогне
ju
Re: имам проблеми с referece ?!?
Zdravei!
mai adresa na value se promenia kogato polzvash "=", demek "prenasochva" se pointera ot kletka s ednada stoinost kym druga kletka s druga stoinost. ne se promenia direktno sydyrjanieto na kletkata. no ako tova stavashe vseki pyt, togava niamashe da ima nikakyv smisyl ot reference... ne moga da go dokaja, no ot sluchaia mai sledva tochno tova...
mai adresa na value se promenia kogato polzvash "=", demek "prenasochva" se pointera ot kletka s ednada stoinost kym druga kletka s druga stoinost. ne se promenia direktno sydyrjanieto na kletkata. no ako tova stavashe vseki pyt, togava niamashe da ima nikakyv smisyl ot reference... ne moga da go dokaja, no ot sluchaia mai sledva tochno tova...
Re: имам проблеми с referece ?!?
W sluchaia greshish zastoto wypreki che se pradawa po reference, ne se predawa samia adres na reference (ne e sywsem koretno kazano). A i tozi reference se kopira w stack-a i sled prikljuchwane na izwikwaneto na metoda tazi stojnost se zagubwa. W lsuchaia ako dyrjish tolkowa da promenish originalnia reference naj dobre da se pradade masiw s razmer edinica:
class Data
{
private Integer m_iData;
public void getData(Integer[] ia)
{
ia[0] = m_iData;
}
public void setData(Integer i)
{
m_iData = i;
}
public static void main(String[] a)
{
Data d = new Data();
Integer[] ia = new Integer[1];
d.setData( new Integer(6));
d.getData(ia);
System.out.println("Data get: "+ia[0].toString());
//Triabwa da izwede 6
}
}
Dano sym pomognal!

class Data
{
private Integer m_iData;
public void getData(Integer[] ia)
{
ia[0] = m_iData;
}
public void setData(Integer i)
{
m_iData = i;
}
public static void main(String[] a)
{
Data d = new Data();
Integer[] ia = new Integer[1];
d.setData( new Integer(6));
d.getData(ia);
System.out.println("Data get: "+ia[0].toString());
//Triabwa da izwede 6
}
}
Dano sym pomognal!
Re: имам проблеми с referece ?!?
да, точно така е прав си
Аз разбрах и от друго място, че е така
Благодаря все пак за решението

ju
Аз разбрах и от друго място, че е така
Благодаря все пак за решението
ju