首页 > 编程语言 > Java日常练习题,每天进步一点点(44)
2021
11-19

Java日常练习题,每天进步一点点(44)

承蒙各位厚爱,我们一起每天进步一点点!(鼠标选中空白处查看答案)

1、AWT 中用来表示文本框的类是 ( )

正确答案: A

TextField

Menu

Label

List

题解:
A、TextField表示文本框
B、Menu表示下拉菜单
C、Label表示标签
D、List表示列表框

2、以下表达式的类型和值是什么?(注意整数除法)()

-5 + 1/4 + 2*-3 + 5.0

正确答案: D

int -3

int -4

double -5.5

double -6.0

题解:
在Java中5.0是double类型,所以结果的数据类型为double。因为1/4结果为0,所以结果为-6.0

3、以下代码段执行后的输出结果为

public class Test {

public static void main(String args[]) {

int x = -5;

int y = -12;

System.out.println(y % x);

}

}

正确答案: D

-1

2

1

-2

题解:
无论是正数还是负数,在取余运算时都有:被除数=商×除数+余数,所以-12=2×(-5)+(-2),-12是被除数,-5是除数,2是商,余数是-2。

4、Java的跨平台特性是指它的源代码可以在多个平台运行。()

正确答案: B

正确

错误

题解:
Java的跨平台特性是因为JVM的存在, 它可以执行.class字节码文件,而不是.java源代码

5、方法通常存储在进程中的哪一区()

正确答案: D

堆区

栈区

全局区

方法区

题解:
Java运行时的数据区包括:(其中前两个是线程共享的)
1.方法区(Method Area) 存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据
2.堆(Heap) 存放对象实例,几乎所有对象实例都在这里分配内存
3.虚拟机栈(VM Stack) 描述的是Java方法执行的内存模型:每个方法在执行的同时会创建一个Stack Frame(方法运行时的基础数据结构)用于存储局部变量表、操作数栈、动态连接、方法出口等信息
4.本地方法栈(Native Method Stack) 与虚拟机栈了类似,不过则为虚拟机使用的到的Native方法服务。(有的虚拟机譬如Sun HotSpot虚拟机直接把本地方法栈和虚拟机栈合二为一)
5.程序计数器(Program Counter Register) 可看作当前线程所执行的字节码的行号的标识器

6、默认RMI采用的是什么通信协议?

正确答案: C

HTTP

UDP/IP

TCP/IP

Multicast

题解:
RMI采用的是TCP/IP协议
RMI(Remote Method Invocation)远程方法调用是一种计算机之间利用远程对象互相调用实现双方通讯的一种通讯机制。
TCP/IP是远程通讯的主要手段

7、J2EE中,当把来自客户机的HTTP请求委托给servlet时,会调用HttpServlet的( )方法

正确答案: A

service

doget

dopost

init

题解:
首先Servlet通过HttpRequest对象封装http请求信息,然后Servlet容器调用HttpServlet的service方法,它会根据用户请求的方式调用具体的方法。如果请求方式是Get则调用doGet方法,如果请求方式是POST则调用doPost方法,执行完后,通过HttpRespones对象生成相应数据相应客户的请求,一般要重写doGet方法和doPost方法

8、String str = new String(“abc”),“abc”在内存中是怎么分配的?

正确答案: A C



字符串常量区

寄存器

题解:
当你new String(“abc”)时,其实会先在字符串常量区生成一个abc的对象,然后new String()时会在堆中分配空间,然后此时会把字符串常量区中abc复制一个给堆中的String,故abc应该在堆中和字符串常量区

9、在Java语言中,下列关于字符集编码(Character set encoding)和国际化(i18n)的问题,哪些是正确的?

正确答案: C D

每个中文字符占用2个字节,每个英文字符占用1个字节

假设数据库中的字符是以GBK编码的,那么显示数据库数据的网页也必须是GBK编码的。

Java的char类型,通常以UTF-16 Big Endian的方式保存一个字符。

实现国际化应用常用的手段是利用ResourceBundle类

题解:
A 显然是错误的,Java一律采用Unicode编码方式,每个字符无论中文还是英文字符都占用2个字节。
B 也是不正确的,不同的编码之间是可以转换的,通常流程如下:
将字符串S以其自身编码方式分解为字节数组,再将字节数组以你想要输出的编码方式重新编码为字符串。
例:String newUTF8Str = new String(oldGBKStr.getBytes(“GBK”), “UTF8”);
C 是正确的。Java虚拟机中通常使用UTF-16的方式保存一个字符
D 也是正确的。ResourceBundle能够依据Local的不同,选择性的读取与Local对应后缀的properties文件,以达到国际化的目的。

10、关于volatile关键字,下列描述不正确的是?

正确答案: B D

用volatile修饰的变量,每次更新对其他线程都是立即可见的。

对volatile变量的操作是原子性的。

对volatile变量的操作不会造成阻塞。

不依赖其他锁机制,多线程环境下的计数器可用volatile实现。

题解:
所谓 volatile的措施,就是
1.每次从内存中取值,不从缓存中什么的拿值。这就保证了用 volatile修饰的共享变量,每次的更新对于其他线程都是可见的。
2.volatile保证了其他线程的立即可见性,就没有保证原子性。
3.由于有些时候对 volatile的操作,不会被保存,说明不会造成阻塞。不可用与多线程环境下的计数器。
此外,volatile 变量不会像锁那样造成线程阻塞,因此也很少造成可伸缩性问题。

答案汇总:

1、正确答案: A

2、正确答案: D

3、正确答案: D

4、正确答案: B

5、正确答案: D

6、正确答案: C

7、正确答案: A

8、正确答案: A C

9、正确答案: C D

10、正确答案: B D

总结

本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注自学编程网的更多内容!

编程技巧