面试题Three

//第一题
int a =2,b=3;
int c=(a+b>5?a++:b++)
答案: a=2 b=4 c =4
//第二题
      Boolean b=true;
        if(b=false){
            System.out.println("a");
        }
        else if(b){
            System.out.println("b");
        }
        else if(!b){
            System.out.println("c");
        }
        else {
            System.out.println("d");
        }
    }    
答案: c  考点: if(b=false)将b的值改成了false
    
//第三题
       int x =2,y=2;
       if(x++==3&++y==3){
          x=7;
        }

        System.out.println("x="+x+",y="+y);
    }    
答案: x=3 y=3 考点  &&当第一个条件不成之后,后面的条件都不执行了,而&则还是继续执行,直到整个条件语句执行完为止
    
//第四题
 for (int i = 1; i <=15 ; i++) {
            if(i%3==0){
                continue;
            }
            System.out.println("hello");

        }    
答案:==0的时候都跳出了循环,3 6 9 12 15 所以会输出10次hello 考点: continue 跳出当前循环执行下次循环

//第五题
        int i =105;
        while (true){
            if(i++>105){
               break;
            }
            System.out.println(i);
        }
答案: i=106  执行了i++>105=false所以没有执行break; 但是执行了i++之后 i=106 所以输出106

//第六题

  int a =3,b=3;

        if(a++==b){
            System.out.println("a="+a);
        }
答案: a=4 同上原理一致
    
//第七题
    int x=2,y=5;
        switch (x){
            default: y++;
            case 3:
                y++;
                break:
            case 4:
                y++;
                System.out.println("y="+y);
        }
    }
答案: y=8 因为case后面没有break所以会一直向下执行

//第八题    
   int x=0;
        if(x>0){
            System.out.println("hello");
        }
        else if(x>-3){
            System.out.println(" iam tom");
        }
        else {
            System.out.println("how are you");
        }
    }    
答案: 这题比较弱智 就是输出  i am tom

//第九题
       int a =10;
       if(a++>10){
                a=20;

       }
        System.out.println(a);
    }    
答案: 其实原理也是和前几题一样,执行了a++ 所以 输出a=11
    
//第十题
    
class Out {
    private int age = 12;

    class In {
        private int age = 13;

        public void print() {
            int age = 14;
            System.out.println("age:" + age);
            System.out.println("this.age:" + this.age);
            System.out.println("Out.this.age" + Out.this.age);
        }
    }
}

public class ClassDemo {
public static void main(String[] args) {
    Out.In  in  = new Out().new In();
    in.print();
}
}
答案: age:14  this.age:13 Out.this.age:12

//第11题
    Math.round(-11.2)
答案: -11  +0.5 后向下取整  -11.2+0.5 = -10.7 向下取整 -11   

1.下列哪一种叙述是正确的()
A. abstract修饰符可修饰字段、方法和类
B. 抽象方法的body部分必须用一对大括号{}包住
C. 声明抽象方法,大括号可有可无
D. 声明抽象方法不可写出大括号
答案:D
分析: abstract不能修饰字段。既然是抽象方法,当然是没有实现的方法,根本就没有body部分。

2.下列语句正确的是()
A. 形式参数可被视为local variable
B. 形式参数可被字段修饰符修饰
C. 形式参数为方法被调用时,真正被传递的参数
D. 形式参数不可以是对象
答案A:
分析:
A:形式参数可被视为local variable。形参和局部变量一样都不能离开方法。都只有在方法内才会发生作用,也只有在方法中使用,不会在方法外可见。
B:对于形式参数只能用final修饰符,其它任何修饰符都会引起编译器错误。但是用这个修饰符也有一定的限制,就是在方法中不能对参数做任何修改。 不过一般情况下,一个方法的形参不用final修饰。只有在特殊情况下,那就是:方法内部类。 一个方法内的内部类如果使用了这个方法的参数或者局部变量的话,这个参数或局部变量应该是final。
C:形参的值在调用时根据调用者更改,实参则用自身的值更改形参的值(指针、引用皆在此列),也就是说真正被传递的是实参。
D:方法的参数列表指定要传递给方法什么样的信息,采用的都是对象的形式。因此,在参数列表中必须指定每个所传递对象的类型及名字。想JAVA中任何传递对象的场合一样,这里传递的实际上也是引用,并且引用的类型必须正确。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值