/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
Et spørgsmål om this
Fra : Jesper


Dato : 05-01-02 02:28

Nogen der kan hjælpe mig med et par forklarende ord til nedenstående
eksempel fra min javabog?

Spørgsmålet vedrører metoden buildString: Når jeg kalder denne metode fra
min main, får jeg tre enslydende klokkeslæt skabt ud fra de argumenter som
blev givet til konstrukrøren under initialiseringen.

Jeg er med hvordan kaldet af toString() med og uden this i de to første
linier af buildString() returnerer en streng med klokkeslæt. Men hvordan
skal jeg forstå at metodens linie 3-4 giver samme resultat? Jeg går ud fra
at _this_ her bare kalder constructor - men denne har jo allerede fået sine
argumenter i initialiseringen. Og hvis jeg er på rette spor: Hvordan bliver
variablerne så lagt til tekststrengen?

Mvh. Jesper


class SimpleTime {
private int hour, minute, second;

public SimpleTime( int hour, int minute, int second )
{
this.hour = hour;
this.minute = minute;
this.second = second;
}

public String buildString() {
return "this.toString(): " + this.toString() +
"\ntoString(): " + toString() +
"\nthis (with implicit toString() call): " + // ???
this;
}

public String toString()
{
DecimalFormat twoDigits = new DecimalFormat( "00" );

return twoDigits.format( this.hour ) + ":" +
twoDigits.format( this.minute ) + ":" +
twoDigits.format( this.second );
}
}



 
 
Jonas Kongslund (05-01-2002)
Kommentar
Fra : Jonas Kongslund


Dato : 05-01-02 02:39

Jesper wrote:

> Jeg er med hvordan kaldet af toString() med og uden this i de to første
> linier af buildString() returnerer en streng med klokkeslæt. Men hvordan
> skal jeg forstå at metodens linie 3-4 giver samme resultat?

Hvis du har et objekt "o" og skriver følgende

System.out.println("flaf "+o);

så sørger Java-compileren for at oversætte det som

System.out.println("flaf "+o.toString() );

I det nævnte eksempel spiller "this" samme rolle som "o".

--
Jonas Kongslund <jonas(at)kongslund.dk> XNS: =Jonas Kongslund

When you want to change the world, you don't see the dawn by
getting up early - you see it by not sleeping through the night.

Daniel Muhlig (06-01-2002)
Kommentar
Fra : Daniel Muhlig


Dato : 06-01-02 19:12


"Jonas Kongslund" <gamma@post.tele.dk> skrev i en meddelelse
news:3c365950$0$62869$edfadb0f@dspool01.news.tele.dk...
> Jesper wrote:
>
> > Jeg er med hvordan kaldet af toString() med og uden this i de to første
> > linier af buildString() returnerer en streng med klokkeslæt. Men hvordan
> > skal jeg forstå at metodens linie 3-4 giver samme resultat?
>
> Hvis du har et objekt "o" og skriver følgende
>
> System.out.println("flaf "+o);
>
> så sørger Java-compileren for at oversætte det som
>
> System.out.println("flaf "+o.toString() );
>
> I det nævnte eksempel spiller "this" samme rolle som "o".

Eller sagt på en anden måde:

"Hvis et objekt benyttes i et udtryk, evalueres objektet til det, der
returneres fra objektets toString() metode."

</Daniel>



Ulrik Magnusson (07-01-2002)
Kommentar
Fra : Ulrik Magnusson


Dato : 07-01-02 07:26



Daniel Muhlig wrote:

> Eller sagt på en anden måde:
>
> "Hvis et objekt benyttes i et udtryk, evalueres objektet til det, der
> returneres fra objektets toString() metode."

Det er vist ikke helt præcist - fx er dette ok:

String s = new Object() + "";//ok
String s = "" + new Object();//ok
String s = "" + new Object() + new Object();//ok

men ikke

String s = new Object();//duer ikke
String s = new Object() + new Object();//duer ikke
String s = new Object() + new Object() + "";//duer ikke

Java Language Specification,
15.17.1 String Concatenation Operator +:
http://java.sun.com/docs/books/jls/first_edition/html/15.doc.html#39990

Ulrik Magnusson



Daniel Muhlig (07-01-2002)
Kommentar
Fra : Daniel Muhlig


Dato : 07-01-02 12:30

Ulrik Magnusson skrev
>
> Daniel Muhlig wrote:
>
> > "Hvis et objekt benyttes i et udtryk, evalueres objektet til det, der
> > returneres fra objektets toString() metode."
>
> Det er vist ikke helt præcist - fx er dette ok:
>
> String s = new Object() + "";//ok
> String s = "" + new Object();//ok
> String s = "" + new Object() + new Object();//ok
>
> men ikke
>
> String s = new Object();//duer ikke
> String s = new Object() + new Object();//duer ikke
> String s = new Object() + new Object() + "";//duer ikke

I stand corrected

</Daniel>




Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408926
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste