1、输出什么?
public
class
SendValue{
public
String str=
"6"
;
public
static
void
main(String[] args) {
SendValue sv=
new
SendValue();
sv.change(sv.str);
System.out.println(sv.str);
}
public
void
change(String str) {
str=
"10"
;
}
}
public
class
SendValue{
public
String str=
"6"
;
public
static
void
main(String[] args) {
SendValue sv=
new
SendValue();
sv.change(sv.str);
System.out.println(sv.str);
}
public
void
change(String str) {
this.
str=
"10"
;
}
}
public static void main(String[] args) {
String str1 = "abc";
String str2 = "123";
change(str1,str2);
System.out.println(str1);
}
public static void change(String s1,String s2) {
String temp = null;
temp = s1;
s1 = s2;
s2 = temp;
}
}
4、输出什么?
Byte x;
}
class Test{
public static void main(String[] args){
Test p = new Test();
p.start();
}
void start(){
Two t= new Two();
System.out.print(t.x+" ");
Two t2=fix(t);
System.out.print(t.x+" "+t2.x);
}
Two fix(Two tt){
tt.x=42;
return tt;
}
}
f传入的是对象,而不是int、String这种类型时,操作的不再是变量的副本。
这里传入t 后,修改了t 的成员变量并返回。
输出:null 42 42
注:Byte类型的默认值是null,不是0。
5、输出什么?
public
class
Test2
{
public
void
add(Byte b)
{
b = b++;
}
public
void
test()
{
Byte a =
127
;
Byte b =
127
;
add(++a);
System.out.print(a +
" "
);
add(b);
System.out.print(b +
""
);
}
}
dd()不会改变a、b的值,但是++a会。
Byte的范围是 -128 ~ 127,++a后,a越界,变为 -128。
输出: -128 127
6、疑问
class Demo{
int a;
public Demo(int a){
this.a=a;
}
}
public class Test{
public static void main(String args[]){
Demo d1=new Demo(1);
Demo d2=new Demo(2);
System.out.println(d1.a);
System.out.println(d2.a);
function(d1,d2);
System.out.println(d1.a);
System.out.println(d2.a);
}
private static void function(Demo d1,Demo d2){
d1.a=d2.a;
}
}
输出:
1
2
2
2
class Demo{
int a;
public Demo(int a){
this.a=a;
}
}
public class Test{
public static void main(String args[]){
Demo d1=new Demo(1);
Demo d2=new Demo(2);
System.out.println(d1.a);
System.out.println(d2.a);
function(d1,d2);
System.out.println(d1.a);
System.out.println(d2.a);
}
private static void function(Demo d1,Demo d2){
d1=d2;
}
}
输出:
1
2
1
2