public class Foo { int num = 1; public void change(){ num = 2; } public void change(int num){ num = 3; } public void change(Foo pt){ pt.num = 4; } public static void main(String[] args) { Foo pt = new Foo(); int num = 5; pt.change(); System.out.println("1->:"+ pt.num); pt.change(num); System.out.println("2->:"+ pt.num); pt.change(pt); System.out.println("3->:"+ pt.num); }结果为什么是1->:2 2->:2 3->:4
时间: 2024-02-14 17:31:14 浏览: 109
这是因为在Java中,方法参数传递是按值传递的。让我们逐行分析代码来解释结果:
1. 创建一个名为pt的Foo对象,并将其num属性初始化为1。
2. 创建一个名为num的整数变量,并将其初始化为5。
3. 调用pt的change()方法,该方法将pt的num属性值更改为2。
4. 打印输出pt的num属性值,即1(因为change()方法中的num是一个局部变量,对外部的num没有影响)。
5. 调用pt的change(int num)方法,并传入外部的num变量作为参数。在方法内部,num参数被重新赋值为3,但这并不会影响外部的num变量。
6. 打印输出pt的num属性值,仍然是1(因为change(int num)方法中的num是一个局部变量,对外部的num没有影响)。
7. 调用pt的change(Foo pt)方法,并传入pt对象本身作为参数。在方法内部,通过pt对象修改了其num属性值为4。
8. 打印输出pt的num属性值,现在是4(因为change(Foo pt)方法中修改了pt对象的num属性)。
因此,最终的输出结果是:
1->:2
2->:2
3->:4
相关问题
下列程序执行后的输出结果应为( )。 public class Foo{ public static void main(String[] args){ String s = "29.13"; try{ double num1 = Double.parseDouble(s); System.out.print(num1); int num2 = Integer.parseInt(s); System.out.print(" "+num2); }catch(NumberFormatException e1){ System.out.print(" error!"); } } }
该程序执行后的输出结果应为:"29.13 error!"。
程序中首先将字符串"29.13"赋值给变量s,然后尝试将它转换为double类型的数值,由于字符串"29.13"可以被正确解析为一个double类型的数值,因此第一行的输出为"29.13"。接着,程序尝试将同一个字符串转换为int类型的数值,由于"29.13"不是一个合法的整数字符串,因此会抛出NumberFormatException异常。由于程序使用了try-catch语句来捕获该异常,因此程序会执行catch块中的代码,输出"error!"。因此程序的最终输出结果为:"29.13 error!"。
public class Test< public static String output = "'; public static void foo(int i)‹ try { iffi = 1){ throw new Exception; output += "1", •catch(Exception e){ output += "2". return; }finally output += "3"; output += "4"; public static void main(String args) { foo (0); foo(1); System.out. printIn("output = "+output); ~ 3,找出下列程宇类中错误的
语法:
public class Test< {
public static String output = "';
public static void foo(int i)‹
try {
if(i == 1){
throw new Exception;
}
output = "1";
} catch(Exception e){
output = "2";
return;
} finally {
output = "3";
}
output = "4";
}
public static void main(String args) {
foo (0);
foo(1);
System.out. printIn("output = " + output);
}
}
错误的语法包括:
1. public class Test< 中的 "<" 应该是 "<T>",表示泛型类。
2. 第一行的 output 变量应该是 "String" 类型,而不是 "';"。
3. foo 方法中的 try 块中,throw new Exception 后面应该加上括号,即 throw new Exception()。
4. if(i == 1) 中的 "==" 应该是 "=".
5. System.out. printIn 应该是 System.out.println,println 后面应该加上括号。
阅读全文