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 11:31:13 浏览: 73
这是因为在代码中存在重载的方法 `change()`,它有三个不同的参数形式:无参、`int`类型的参数和`Foo`类型的参数。
在 `main()` 方法中,首先创建了一个名为 `pt` 的 `Foo` 对象,并将其 `num` 的初始值设置为 1。
接下来调用了 `pt.change()` 方法,由于该方法没有参数,因此会执行无参的 `change()` 方法,将 `num` 的值改为 2。
然后调用了 `pt.change(num)` 方法,该方法有一个 `int` 类型的参数,但是在方法中只是将传入的参数 `num` 的值改为 3,并没有改变对象 `pt` 的 `num` 值,所以 `pt.num` 的值仍然是 2。
最后调用了 `pt.change(pt)` 方法,该方法有一个 `Foo` 类型的参数,它将传入的 `pt` 对象的 `num` 值改为 4,所以 `pt.num` 的值变为了 4。
因此,最终的输出结果是: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 后面应该加上括号。
阅读全文