+ 5
Help! why 31 why not 13? How?
public static class A{ public String a1; public A(String a1){ this.a1 = a1; } public static void main(String[]args){ A a = new A("1"); c.a = a; a = new A ("3") ; } System.out.println(a.a1); System.out.println(c.a1); }
12 Réponses
+ 3
The keyword this is a reference to the current object.
In your example you have two Strings a1. One inside your class and one comes from outside.
To avoid conflicts you use this to make clear that you mean a1 from your class. this.a1 -> A.a1
+ 2
what about this.
can any one explain this?
public class A{
public String a1;
public A(String a1){
this.a1 = a1;
}
public static void main(String[]args){
A a = new A("1");
A c = a;
a.a1 = new String ("3") ;
System.out.print(a.a1);
System.out.println(c.a1);
}
}
+ 2
my first question I use this but result is 31.why?Denise Roßberg
+ 2
please answer my 2nd zemiak
+ 1
A a = new A("1");
--> a.a1 = "1"
c.a = a //should it be A c = a?
--> c.a1 = "1"
a = new A("3")
--> a.a1 = "3"
First you print a.a1 --> 3
Then you print c.a1 --> 1
--> output: 31
+ 1
public class A { //
public String a1;
public A(String a1) {
this.a1 = a1;
}
public static void main(String[]args) {
A a = new A ("1"); // a:1
A c = a; // a:1 c:1
a = new A ("3"); // a:3 c:1
System.out.println(a.a1); // a:3
System.out.println(c.a1); // c:1
} //
}
/*
this is like:
a = 1
c = a // = 1
a = 3
print a // 3
print c // 1
output 31
-------
You assign obj a to c and it is same object
then you assign new object to a, but in c is original object not new or changed
*/
+ 1
System.out.print(a.a1); //33 because i think u write syso print with no (ln )in first line :)
System.out.println(c.a1);
System.out.println(a.a1);
System.out.println(c.a1);
if u wirte like that output will
3
3
+ 1
your second ex return 33, because a and c is the same object,
if you change a -> in c you can see new value 3 too
this show a and c as is the same object:
A a = new A("1");
System.out.println(a+": "+a.a1+"\n");
A c = a;
System.out.println(a+": "+a.a1+"\n"+c+": "+c.a1+"\n");
a.a1 = "3";
System.out.println(a+": "+a.a1+"\n"+c+": "+c.a1+"\n");
//output addresses of a c for each steps and it is same address in memory,
//after : you can see value of a.a1, c.a1
A@4c75cab9: 1
A@4c75cab9: 1
A@4c75cab9: 1
A@4c75cab9: 3
A@4c75cab9: 3
+ 1
Thanks a lot zemiak for better understanding.
+ 1
what is the main difference between
a= new A("3") ; and
a.a1=new String("3") ;
A/String?
why and when i use A or String?
+ 1
new keyword is for create object,
new A() create object from class A,
new String() create object from class String
it is same action but with different classes
special for String you can write it simpler
String s = "" ;
+ 1
Thanks again zemiak