牛客网第19天

1关于Java语言中的final关键字的使用,下列说法正确的是()
A.在使用final关键字定义的方法里面使用final关键字定义变量。
B.使用final关键字定义变量,必须在变量定义的同时给定变量的具体数值,完成变量初始化。
C.final关键字可以用来修饰方法,表明此方法不可以被子类重写。
D.使用final关键字定义变量,必须同时使用static关键字。
正确答案: C 你的答案: C (正确)
解析:A 选项在 final 定义的方法里,不是必须要用 final 定义变量。
B final 定义的变量,可以在不是必须要在定义的同时完成初始化,也可以在构造方法中完成初始化。
C 正确,final修饰方法,不能被子类重写,但是可以被重载。
D final 定义变量,可以用 static 也可以不用。
2.静态内部类不可以直接访问外围类的非静态数据,而非静态内部类可以直接访问外围类的数据,包括私有数据。( )
A.正确
B.错误
正确答案: A 你的答案: B (错误)
解析: 静态内部类可以访问外围类的静态数据,包括私有数据,但不能访问非静态数据;
非静态内部类可以直接访问外围类的数据,包括私有数据
3.下面代码的运行结果是()
public static void main(String[] args){
String s;
System.out.println(“s=”+s);
}
A.代码编程成功,并输出”s=”
B代码编译成功,并输出”s=null”
C.由于String s没有初始化,代码不能编译通过。
D.代码编译成功,但捕获到NullPointException异常
正确答案: C 你的答案: D (错误)
解析:成员变量有初始值,而局部变量没有初始值得。本体中的s定义在方法中所以为局部变量-没有初始值。变量没有初始值就使用了,编译通不过
4.假设有以下代码
String s = “hello”;
String t = “hello”;
char c[] = {‘h’, ‘e’, ‘l’, ‘l’, ‘o’};
A.s.equals(t);
B.t.equals©;
C.s==t;
D.t.equals(new String (“hello”));
正确答案: B 你的答案: C (错误)
解析:==是比较两个内存地址是否相同,相同为true,不相同为false;
在字符串缓冲池中,若已有字符串,则直接赋值时不再新创建一个字符串,如果是new 关键字,则新创建一个不同的字符串。
String类的equals被重新复写,只要字符串相等,则返回true。
5.语句:char foo=‘中’,是否正确?(假设源文件以GB2312编码存储,并且以javac – encoding GB2312命令编译)
A.正确
B.错误
正确答案: A 你的答案: A (正确)
解析:Java语言中,中文字符所占的字节数取决于字符的编码方式,一般情况下,采用ISO8859-1编码方式时,一个中文字符与一个英文字符一样只占1个字节;采用GB2312或GBK编码方式时,一个中文字符占2个字节;而采用UTF-8编码方式时,一个中文字符会占3个字节。
在C++中

在C++中,char是基础数据类型,8位,1个字节。byte不是基础数据类型,一般是typedef unsigned char byte;这样子的,也就是说,byte其实是unsigned char类型,那么也是8位,1个字节。不同的是,char可以表示的范围是-128-127,而byte可以表示的范围是0-255。
在Java中

在java中,char和byte都是基础数据类型,其中的byte和C++中的char类型是一样的,8位,1个字节,-128-127。但是,char类型,是16位,2个字节, ‘\u0000’-’\uFFFF’。

为什么java里的char是2个字节?

因为java内部都是用unicode的,所以java其实是支持中文变量名的,比如string 世界 = “我的世界”;这样的语句是可以通过的。
综上,java中采用GB2312或GBK编码方式时,一个中文字符占2个字节,而char是2个字节,所以是对的
6.给定以下JAVA代码,这段代码运行后输出的结果是()
public class Test
{
public static int aMethod(int i)throws Exception
{
try{
return i/10;
}
catch (Exception ex)
{
throw new Exception(“exception in a aMethod”);
}finally{
System.out.printf(“finally”);
}
}
public static void main(String[] args){
try
{
aMethod(0);
}
catch (Exception ex)
{
System.out.printf(“exception in main”);
}
System.out.printf(“finished”);
}
}
A.exception in main finished
B.finally finished
C.exception in main finally
D.finally exception in main finally
正确答案: B 你的答案: D (错误)
解析:进入main方法->try->aMethod(0)->return 0/10;这里注意并没有出现异常所以执行finally打印finally,返回的时候也并没有异常,所以不会打印exception in main然后按照顺序执行然后打印finished,
7. Java 提供的事件处理模型是一种人机交互模型。它有三个基本要素
A.事件源
B.事件对象
C.事件过程
D.事件监听器
正确答案: A B D 你的答案: A B D (正确)
解析:
Java 提供的事件处理模型是一种人机交互模型。它有三个基本要素:

  1. 事件源(Event Source):即事件发生的场所,就是指各个组件,如按钮等,点击按钮其实就是组件上发生的一个事件;

  2. 事件(Event):事件封装了组件上发生的事情,比如按钮单击、按钮松开等等;

  3. 事件监听器(Event Listener):负责监听事件源上发生的特定类型的事件,当事件到来时还必须负责处理相应的事件;
    8.jdk1.8中,下面有关java 抽象类和接口的区别,说法错误的是?
    A.抽象类可以有构造方法,接口中不能有构造方法
    B.抽象类中可以包含非抽象的普通方法,接口中的方法必须是抽象的,不能有非抽象的普通方法
    C.一个类可以实现多个接口,但只能继承一个抽象类
    D.接口中可以有普通成员变量,抽象类中没有普通成员变量
    正确答案: B D 你的答案: B D (正确)
    解析:
    抽象类
    特点:
    1.抽象类中可以构造方法
    2.抽象类中可以存在普通属性,方法,静态属性和方法。
    3.抽象类中可以存在抽象方法。
    4.如果一个类中有一个抽象方法,那么当前类一定是抽象类;抽象类中不一定有抽象方法。
    5.抽象类中的抽象方法,需要有子类实现,如果子类不实现,则子类也需要定义为抽象的。
    接口
    1.在接口中只有方法的声明,没有方法体。
    2.在接口中只有常量,因为定义的变量,在编译的时候都会默认加上
    public static final
    3.在接口中的方法,永远都被public来修饰。
    4.接口中没有构造方法,也不能实例化接口的对象。
    5.接口可以实现多继承
    6.接口中定义的方法都需要有实现类来实现,如果实现类不能实现接口中的所有方法
    7.则实现类定义为抽象类。
    9.以下哪些类是线程安全的()
    A.Vector
    B.HashMap
    C.ArrayList
    D.StringBuffer
    E.Properties
    正确答案: A D E 你的答案: A C D (错误)
    解析: A,Vector相当于一个线程安全的List
    B,HashMap是非线程安全的,其对应的线程安全类是HashTable
    C,Arraylist是非线程安全的,其对应的线程安全类是Vector
    D,StringBuffer是线程安全的,相当于一个线程安全的StringBuilder
    E,Properties实现了Map接口,是线程安全的
    10.JDK提供的用于并发编程的同步器有哪些?
    A.Semaphore
    B.CyclicBarrier
    C.CountDownLatch
    D.Counter
    正确答案: A B C 你的答案: A B (错误)
    解析:
    A. semaphore:信号量。用于表示共享资源数量。用acquire()获取资源,用release()释放资源。
    B. CyclicBarrier 线程到达屏障后等待,当一组线程都到达屏障后才一起恢复执行
    C. CountDownLatch 初始时给定一个值,每次调用countDown值减1,当值为0时阻塞的线程恢复执行
    D. 不知道是啥。。。。反正不是同步器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值