请帮忙解答java笔试题的结果为什么是如下那样?

第一题:
Java code
   
   

  1. public class Jtest{ 
  2. int m=1
  3. int i=3
  4. void Jtest(){ 
  5. m=2
  6. i=4
  7. public static void main(String[] args){ 
  8. Jtest app=new Jtest(); 
  9. [color=#FF0000]app.Jtest();[/color]
  10. System.out.println(app.m+","+app.i); 




你没有调用类Jtest中的Jtest方法,自然m和i的值不会变化,想让m=2,i=4就加上红色那句

第二题:
Java code
   
   

public class Jtest{
int m = 1 ;
int i = 3 ;
Jtest(){
// 去掉了第一题中的void,你这个Jtest()现在由普通方法变为构造函数了
m = 2 ;
i
= 4 ;
}
public static void main(String[] args){
Jtest app
= new Jtest(); // 生成一个类的对象会自动调用该类的构造函数,此时改变m和i的值
System.out.println(app.m + " , " + app.i);
}
}




第三题:
Java code
   
   

public class Test {
public static void main(String[] args) {
int a = 99 ;

oper(a);
// 值传递,传递的是a的副本,改变的也是a的副本,a本身不变
System.out.print(a);
}
static void oper( int b){

b
= b + 100 ;
}
}




第四题:
Java code
   
   

public class Test {
public static void main(String[] args) {
String a
= new String( " A " );
String b
= new String( " B " );
oper(a,b);
// 此处虽然是引用传递,但是java规定String的内容不能改变
System.out.print(a + " , " + b);
}
static void oper(String c,String d){
c.concat(
" B " );
d
= c;
}
}




第五题:
Java code
   
   

public class Test {
public static void main(String[] args) {
StringBuffer a
= new StringBuffer ( " A " );
StringBuffer b
= new StringBuffer ( " B " );
oper(a,b);
// 传递引用,StringBuffer为可变字符串
System.out.print(a + " , " + b);
}
static void oper(StringBuffer c,StringBuffer d){
c.append(
" B " );
d
= c; // 引用的指向变化不影响实参的变化
}
}


关于最后一题,为了便于理解,可以再加一句:
Java code
     
     

public class Test {
public static void main(String[] args) {
StringBuffer a
= new StringBuffer ( " A " );
StringBuffer b
= new StringBuffer ( " B " );
oper(a,b);
System.out.print(a
+ " , " + b);
}
static void oper(StringBuffer c,StringBuffer d){
c.append(
" B " );
d
= c; // d指向c指向的值即a
d.append( " C " ); // 这是在改变a的值了
}
}



输出:ABC,B

理解了吧?
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值