Java每日一题 Day_9

Java每日一题 Day_9

1.下面程序的输出是:()

String x="fmn";

x.toUpperCase();

String y=x.replace('f','F');

y=y+"wxy"; 

System.out.println(y);

A FmNwxy

B fmnwxy

C wxyfmn

D Fmnwxy

正确答案: D

解析为:

         String x = "fmm";“fmn”是在常量的不可变对象。

         x.toUpperCase();在堆中new一个“FMN”对象。但无任何引用指向它。

        String y = x.replace('f','F');在堆中new一个“Fmn”对象,y指向它。

         y = y +“wxy”;在堆中重新new一个“Fmnwxy”对象,修改y指向,现在y指向它。

         所以结果为:Fmnwxy

2.以下多线程对int型变量x的操作,哪个不需要进行同步()

A ++x

B x=y

C x++

D x=1

正确答案: D

解析为:

     A.由于y的值不确定,所以要加锁;

    B,C 两个在多线程情况下是必须要加锁的,因为他们是先被读入寄存器,然后再进行+1操作,如果没有加锁,那么可能会出现数据异常;

    D 原子操作,所以不需要加锁

       原子性:指该操作不能再继续划分为更小的操作。

Java中的原子操作包括:     

        1、除long和double之外的基本类型的赋值操作

        2、所有引用reference的赋值操作

        3、java.concurrent.Atomic.* 包中所有类的一切操作

3. 关于 JAVA 堆,下面说法错误的是()

A 所有类的实例和数组都是在堆上分配内存的

B 对象所占的堆内存是由自动内存管理系统回收

C 堆内存由存活和死亡的对象,空闲碎片区组成

D 数组是分配在栈中的

正确答案: D 

解析为:

     一句话解决:数组是对象,所有对象存储在堆内存中,而基本数据类型存储在栈内存中。

     Java 把内存划分成两种:一种是栈内存,另一种是堆内存。

4.一个以“.java”为后缀的源文件

A 只能包含一个public类,类名必须与文件名相同

B 只能包含与文件名相同的public类以及其中的内部类

C 只能有一个与文件名相同的public类,可以包含其他非public类(不考虑内部类)

D 可以包含任意public类

正确答案: C

5.JAVA语言的下面几种数组复制方法中,哪个效率最高?

A for循环逐一复制

B System.arraycopy

C Arrays.copyOf

D 使用clone方法

正确答案: B

解析为:

   效率:System.arraycopy > clone > Arrays.copyOf > for循环

6.下面那些情况可以终止当前线程的运行?

A 当一个优先级高的线程进入就绪状态时

B 抛出一个异常时

C 当该线程调用sleep()方法时

D 当创建一个新线程时

正确答案: B

解析为:

       pthread_clean_pop抛出一个例外,线程终止!也可以通过其他线程调用pthread_cancel()函数来终止另一个线程,当前选择选A。

7.对文件名为Test.java的java代码描述正确的是() 

class Person {
    String name = "No name"; 
    public Person(String nm) {
        name = nm;
    }
} 
class Employee extends Person {
    String empID = "0000";
    public Employee(String id) {
        empID = id;
    }
}
public class Test {
    public static void main(String args[]) {
        Employee e = new Employee("123"); 
        System.out.println(e.empID);
    }
}  

A 输出:0000

B 输出:123

C 编译报错

D 输出:No name

正确答案: C

选C

解析为:

     父类没有无参的构造函数,所以子类需要在自己的构造函数中显式调用父类的构造函数, 添加super("nm"); 否则报错: Implicit super constructor

       Person() is undefined. Must explicitly invoke another constructor

8.有关下述Java代码描述正确的选项是____。

public class TestClass {
    private static void testMethod(){
        System.out.println("testMethod");
    }
    public static void main(String[] args) { 
        ((TestClass)null).testMethod();
    } 
} 

A 编译不通过

B 编译通过,运行异常,报NullPointerException

C 编译通过,运行异常,报IllegalArgumentException

D 编译通过,运行异常,报NoSuchMethodException

E 编译通过,运行异常,报Exception

F 运行正常,输出testMethod

正确答案: F

 

9.下列java程序的输出结果为____。

public class Example{
    String str=new String("hello");
    char[]ch={'a','b'};
    public static void main(String args[]){
        Example ex=new Example();
        ex.change(ex.str,ex.ch);
        System.out.print(ex.str+" and ");
        System.out.print(ex.ch);
    }
    public void change(String str,char ch[]){
        str="test ok";
        ch[0]='c';
    }
}

A hello and ab

B hello and cb

C hello and a

D test ok and ab

E test ok and cb

F test ok and c

正确答案: B

解析为:

   在change方法中,str是临时变量,在堆中new一个str对象,但调用之后无任何引用指向它。而char[] ch是引用,直接修改了ch[0]的值。

10.在jdk1.5之后,下列 java 程序输出结果为______。

int i=0;
Integer j = new Integer(0);
System.out.println(i==j);
System.out.println(j.equals(i));

A true,false

B true,true

C false,true

D false,false

E 对于不同的环境结果不同

F 程序无法执行

正确答案: B

解析为: 

  JDK1.5以上支持自动拆装箱
 装包/装箱:将简单类型包装成包装类型

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值