1. 下列 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'类的内部访问。

  1. 请说出 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'。

  1. 请说出 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'。

  1. 请说出 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'。

Java 类与方法练习题:访问权限、参数传递、静态变量和方法重载

原文地址: http://www.cveoy.top/t/topic/tRP 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录