Java 类与方法练习题:访问权限、参数传递、静态变量和方法重载
- 下列 A 类的类体中【代码1】~【代码5】哪些是错误的?
class Tom {
private int x=120;
protected int y=20;
int z=11;
private void f() {
x=200;
System.out.println(x);
}
void g() {
x=200;
System.out.println(x);
}
}
public class A {
public static void main(String args[]) {
Tom tom=new Tom();
tom.x=22; //【代码1】
tom.y=33; //【代码2】
tom.z=55; //【代码3】
tom.f(); //【代码4】
tom.g(); //【代码5】
}
}
【代码1】是错误的,因为'x'是私有变量,只能在'Tom'类的内部访问。 【代码4】是错误的,因为'f()'方法是私有方法,只能在'Tom'类的内部访问。
- 请说出 A 类中 System.out.println 的输出结果。
class B {
int x=100,y=200;
public void setX(int x) {
x=x;
}
public void setY(int y) {
this.y=y;
}
public int getXYSum() {
return x+y;
}
}
public class A {
public static void main(String args[]) {
B b=new B();
b.setX(-100);
b.setY(-200);
System.out.println('sum='+b.getXYSum());
}
}
输出结果为:'sum=300'。 在'setX'方法中,'x'是方法的参数,与实例变量'x'同名,所以'x=x'只是将方法参数赋值给自身,并没有改变实例变量'x'的值。因此,'getXYSum'方法返回的是实例变量'x'和'y'的和,即'100+200=300'。
- 请说出 A 类中 System.out.println 的输出结果。
class B {
int n;
static int sum=0;
void setN(int n) {
this.n=n;
}
int getSum() {
for(int i=1;i<=n;i++)
sum=sum+i;
return sum;
}
}
public class A {
public static void main(String args[]) {
B b1=new B(),b2=new B();
b1.setN(3);
b2.setN(5);
int s1=b1.getSum();
int s2=b2.getSum();
System.out.println(s1+s2);
}
}
输出结果为:'36'。 在'getSum'方法中,每次调用都会对静态变量'sum'进行累加,并返回累加后的结果。在'main'方法中,首先调用'b1.getSum()',此时'sum'的初始值为0,进行三次累加(1+2+3),得到'sum=6'。接着调用'b2.getSum()',此时继续在原有基础上进行五次累加(6+4+5+6+7),得到'sum=34'。最后输出的结果是'6+34=40'。
- 请说出 E 类中 System.out.println 的输出结果。
class A {
double f(int x,double y) {
return x+y;
}
int f(int x,int y) {
return x*y;
}
}
public class E {
public static void main(String args[]) {
A a=new A();
System.out.println(a.f(10,10));
System.out.println(a.f(10,10.0));
}
}
输出结果为: 第一行输出:'100',因为调用的是'int f(int x,int y)'方法,参数类型都是整数,返回值是两个数的乘积,即'10*10=100'。 第二行输出:'20.0',因为调用的是'double f(int x,double y)'方法,第二个参数是浮点数,所以进行浮点数运算,即'10+10.0=20.0'。
原文地址: http://www.cveoy.top/t/topic/tRP 著作权归作者所有。请勿转载和采集!