牛客刷题day1

选择题1

What is the result of compiling and executing the following fragment of code:

true

Boolean flag = false;
if (flag = true)
{
    System.out.println("true");
}
else
{
    System.out.println("false");
}

Boolean修饰的变量为包装类型,初始化值为false,进行赋值时会调用Boolean.valueOf(boolean b)方法自动拆箱为基本数据类型,因此赋值后flag值为true,输出文本true。 如果使用==比较,则输出文本false。if的语句比较,除boolean外的其他类型都不能使用赋值语句,否则会提示无法转成布尔值。

选择题2

关于下面的程序Test.java说法正确的是( )。

public class Test {
    static String x="1";
    static int y=1;
    public static void main(String args[]) {
        static int z=2;
        System.out.println(x+y+z);
    }
}


被static修饰的变量称为静态变量,静态变量属于整个类,而局部变量属于方法,只在该方法内有效,所以static不能修饰局部变量

选择题3


下面哪些描述是正确的:( )

public class Test {
    public static class A {
        private B ref;
        public void setB(B b) {
            ref = b;
        }
    }
    public static Class B {
        private A ref;
        public void setA(A a) {
            ref = a;
        }
    }
    public static void main(String args[]) {
    …
        start();
    ….
    }
    public static void start() { 
        A a = new A();
        B b = new B();
        a.setB(b);
        b = null; //
        a = null;
    …
    }
}

    


选择题4


定义:

String s1 = “uml”; 
String s2 = “uml”; 
String s3= new String(“uml”); 
String s4= new String(“uml”);

那么,
s1==s2;
s3 == s4;
s1.equals(s3); 

判断正确与否

该题考察的是String类创建的对象在JVM中的内存分配和**“equals”与“==”的区别**。

“==”比较的是地址和值。
“equals”比较的是值。


选择题5


其实value++是一个表达式,它在执行完毕后会返回value加1之前的值。

从下面的反编译我们很容易就能看出来,var10001这个变量是用来保存value之前的值,然后让value+1了,再把i之前的值也就是我们保存的var10001返回给打印语句。从这个流程其实我们看得出是value先加1再打印,但是打印的是var10001,并不是value。所以应该是value先+1在打印。

value++会先输出结果再自增;++value会先自增后输出

选择题6


抽象类
特点:
1.抽象类中可以构造方法
2.抽象类中可以存在普通属性,方法,静态属性和方法。
3.抽象类中可以存在抽象方法。
4.如果一个类中有一个抽象方法,那么当前类一定是抽象类;抽象类中不一定有抽象方法。
5.抽象类中的抽象方法,需要有子类实现,如果子类不实现,则子类也需要定义为抽象的。
6,抽象类不能被实例化,抽象类和抽象方法必须被abstract修饰

关键字使用注意:
抽象类中的抽象方法(其前有abstract修饰)不能用private、static、synchronized、native访问修饰符修饰。

接口
1.在接口中只有方法的声明,没有方法体。
2.在接口中只有常量,因为定义的变量,在编译的时候都会默认加上public static final
3.在接口中的方法,永远都被public来修饰。
4.接口中没有构造方法,也不能实例化接口的对象。(所以接口不能继承类)
5.接口可以实现多继承
6.接口中定义的方法都需要有实现类来实现,如果实现类不能实现接口中的所有方法则实现类定义为抽象类。
7,接口可以继承接口,用extends

选择题7

public class Print{
	static boolean out(char c){
		System.out.print(c);
		return true;
	}
	public static void main(String[] argv){
		int i = 0;
		for(out('A');out('B') && (i<2);out('C')){
			i++;
			out('D');
		}
	}
}

ABDCBDCB


for循环的执行顺序用如下表达式:

for(expression1;expression2;expression3){

expression4;

}

执行的顺序应该是:

1)第一次循环,即初始化循环。

首先执行表达式expression1(一般为初始化语句);再执行expression2(一般为条件判断语句),判断expression1是否符合expression2的条件;如果符合,则执行expression4,否则,停止执行;最后执行expression3。

2)第N(N>=2)次循环

首先执行expression2,判断在expression3是否符合在expression2要求;如果符合,则继续执行在expression4,否则,停止执行。最后执行在expression3。如此往复,直至expression3不满足在expression2条件是为止。

总结:

总的来说,执行的顺序是一致的。先条件判断(expression2),再函数体执行(expression4),最后for执行(expression3)。往复…区别在于,条件判断的对象。第一次判断时,对象为初始化语句(expression1),后续的判断对象为执行后的结果(expression3)。

选择题8


只有C对。

A、while(int i<7){i++;System.out.println("i is "+i);},int i要放在外面声明;

B、int j=3;while(j){ System.out.println("j is "+j);},java判断处为boolean类型,应该如j==3,j>1之类才行 ;不像C中,0可以表示假,非0可以表示真。java的真假就是true和false以及判别式。

C、int j=0;for(int k=0;j+k!=10;j++,k++){System.out.println("j is "+j+“k is” +k);},当j=5,k=5时循环结束;

D、int j=0; do{System.out.println("j is "+j++);if(j==3){continue loop;}}while(j<10);,continue loop前面没有标注出循环名loop,相当于未定义。

选择题9

static void Main(string[] args)  
{  
    try  
    {  
        throw new AccessViolationException();  
        Console.WriteLine("error1");  
    }  
    catch (Exception e)  
    {  
        Console.WriteLine("error2");  
    }  
    Console.WriteLine("error3");  
} 

正确答案:
error2
error3

本题知识点
1.若catch(){}、finally{}块中,如果有throw 语句,则,try{}catch(){} finally{}块之外的代码不执行。
2.try{}中throw,则下面代码正常执行。

选择题10


接口中的属性在不提供修饰符修饰的情况下,会自动加上public static final

注意(在1.8的编译器下可试):

(1)属性不能用private,protected,default 修饰,因为默认是public

(2)如果属性是基本数据类型,需要赋初始值,若是引用类型,也需要初始化,因为默认有final修饰,必须赋初始值;

(3)接口中常规的来说不能够定义方法体,所以无法通过get和set方法获取属性值,所以属性不属于对象,属于类(接口),因为默认使用static修饰。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值