class Demo{ int i = 100; public void m(){ int j = i++; System.out.println("i="+j); System.out.println("j="+j); } } class Test{ public static void mian(String[] args){ Demo d1 = new Demo(); Demo d2 = d1; d2.m(); System.out.println(d1.i); System.out.println(d2.i); } }
时间: 2024-04-08 16:34:22 浏览: 187
这段代码存在一些问题。首先是在主类Test中的main方法的拼写错误,应该是"public static void main(String[] args)"。其次,Demo类中的m方法中的第二个打印语句应该是"System.out.println("j="+j);"而不是"System.out.println("j="+i);"
修正后的代码如下所示:
```java
class Demo {
int i = 100;
public void m() {
int j = i++;
System.out.println("i=" + j);
System.out.println("j=" + j);
}
}
class Test {
public static void main(String[] args) {
Demo d1 = new Demo();
Demo d2 = d1;
d2.m();
System.out.println(d1.i);
System.out.println(d2.i);
}
}
```
这段代码的功能是创建一个Demo对象d1,然后将d1赋值给d2。接下来调用d2的m方法,该方法会将d1的i值赋给局部变量j,并将d1的i值加1。最后打印出j的值、d1的i的值和d2的i的值。
相关问题
package Demo2; public class Sum { public static void main(String[]args){ int j=10; System.out.println("j is:"+j); calculate(j); System.out.println("At last,j is:"+j); } static void calculate(int j){ for (int i=0;i<10;i++) j++; System.out.println("j in calculate()is:"+j); } }
这段代码是一个简单的Java程序,它演示了方法参数的传递方式。
在程序的main方法中,首先定义了一个整数变量j,并将其初始化为10。然后打印出j的值。接下来调用calculate方法,并将j作为参数传递给该方法。calculate方法中使用for循环对参数j进行了累加操作,使得j的值增加了10。最后在calculate方法内部打印出j的值。再次回到main方法中,打印出经过calculate方法处理后的j的值。
这段代码没有什么明显的问题,只是需要注意方法参数的传递方式是按值传递,即方法内部对参数的修改不会影响到原始变量。所以在calculate方法内部对j的修改不会影响到main方法中的j变量。如果想要改变main方法中的j值,可以将calculate方法的返回值设为int,并将计算后的结果返回给调用方。
public class ClassDemo { public static int sum=1; public ClassDemo(){ sum=sum+5; } } class ClassDemoTest extends ClassDemo{ public static void main(String[] args){ ClassDemo demo1=new ClassDemo(); ClassDemo demo2=new ClassDemo(); System.out.println(sum); } }
这段代码定义了两个类:ClassDemo和ClassDemoTest。其中ClassDemo类有一个静态变量sum和一个无参构造方法,在构造方法中对sum进行加5操作。ClassDemoTest类继承自ClassDemo类,包含了一个main方法。
在main方法中,首先创建了两个ClassDemo的实例对象demo1和demo2,由于ClassDemo的构造方法中对静态变量sum进行了加5操作,因此实例对象创建时sum的值分别为6和11。最后输出sum的值,结果是11。因为sum是静态变量,所以在ClassDemo和ClassDemoTest两个类中共享。
阅读全文