Java小题精炼训练营(篇八)(2)

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!
在代码中,不一定是第一句,只要是类定义前,加入package语句即可

实际上在Java语言规范中,不允许package name以“java”开头,不然会报一个java.lang.SecurityException 的错误。因为假如我们允许包名以java开头,那么我们完全可以编写和jdk标准包下一模一样的类,如Java.lang.Integer。因此在虚拟机进行类或接口解析时可能会发生冲突。一句话总结就是:假如允许包名以java开头,可能会导致命名空间污染的问题。

A

4、对于非运行时异常,程序中一般可不做处理,由java虚拟机自动进行处理。

正确

错误

运行异常,可以通过java虚拟机来自行处理。非运行异常,我们应该捕获或者抛出

B

5、以下代码执行后输出结果为( )

public class ClassTest{

String str = new String(“hello”);

char[] ch = {‘a’,‘b’,‘c’};

public void fun(String str, char ch[]){

str=“world”;

ch[0]=‘d’;

}

public static void main(String[] args) {

ClassTest test1 = new ClassTest();

test1.fun(test1.str,test1.ch);

System.out.print(test1.str + " and ");

System.out.print(test1.ch);

}

}

hello and dbc

world and abc

hello and abc

world and dbc

java中都是按栈中的值传递,基本数据类型栈中的值就是实际存储的值,引用类型栈中的值就是指向堆中的地址

1)String和char[ ]都是引用类型,所以在方法中传递的都是指向真实数据的地址

2)假设String str指向的hello的地址为d1,str传递到fun函数中的也是地址d1,成员变量str和fun的形参str不是同一个变量,把fun型中的str赋值为world只是修改了该str指向的地址,该地址由d1更改成了world的地址,并没有改变成员变量str指向的地址及堆中的数据,所以str还是hello。

3)假设char[ ] ch指向的abc的地址是d2,传递到fun函数中的地址也是d2,同上成员变量ch和fun的形参ch不是同一个变量,(1)如果把fun中的ch[0]='d’更改为ch = new ch[3];ch[0]=‘d’,那么成员变量ch的值是没有变化的,还是abc,原理同上String,只是改变了引用ch指向的堆数据的地址,并没有改变成员变量ch指向的地址以及堆中的数据。(2)改变了堆中的数据,所以最终结果编程dbc,此ch只是形参而不是成成员变量ch,如果对ch变化对成员变量ch没有影响,但是ch[i]指向了堆数据的地址,直接修改堆数据,所以成员变量变了。

A

6、下列代码执行结果为()

public static void main(String args[])throws InterruptedException{

Thread t=new Thread(new Runnable() {

public void run() {

try {

Thread.sleep(2000);

} catch (InterruptedException e) {

throw new RuntimeException(e);

}

System.out.print(“2”);

}

});

t.start();

t.join();

System.out.print(“1”);

}

21

12

可能为12,也可能为21

以上答案都不对

因为子线程的休眠时间太长,因此主线程很有可能在子线程之前结束也就是输出结果是12,但是子线程用了join函数,因此主线程必须等待子线程执行完毕才结束因此输出结果只能是21

thread.Join把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程。比如在线程B中调用了线程A的Join()方法,直到线程A执行完毕后,才会继续执行线程B。

t.join();      //使调用线程 t 在此之前执行完毕。

t.join(1000);  //等待 t 线程,等待时间是1000毫秒

A

7、下列哪个选项是Java调试器?如果编译器返回程序代码的错误,可以用它对程序进行调试。

java

javadoc

jdb

javaprof

ava,exe是java虚拟机

javadoc.exe用来制作java文档

jdb.exe是java的调试器

javaprof,exe是剖析工具

C

8、下面为true的是

Integer i = 42;

Long l = 42l;

Double d = 42.0;

(i == l)

(i == d)

(l == d)

i.equals(d)

d.equals(l)

i.equals(l)

l.equals(42L)

包装类的“==”运算在不遇到算术运算的情况下不会自动拆箱

包装类的equals()方法不处理数据转型

1、基本型和基本型封装型进行“==”运算符的比较,基本型封装型将会自动拆箱变为基本型后再进行比较,因此Integer(0)会自动拆箱为int类型再进行比较,显然返回true;

int a = 220;

Integer b = 220;

System.out.println(a==b);//true

2、两个Integer类型进行“==”比较, 如果其值在-128至127  ,那么返回true,否则返回false, 这跟Integer.valueOf()的缓冲对象有关,这里不进行赘述。

Integer c=3;

Integer h=3;

Integer e=321;

Integer f=321;

System.out.println(c==h);//true

System.out.println(e==f);//false

3、两个基本型的封装型进行equals()比较,首先equals()会比较类型,如果类型相同,则继续比较值,如果值也相同,返回true。

Integer a=1;

Integer b=2;

Integer c=3;

System.out.println(c.equals(a+b));//true

4、基本型封装类型调用equals(),但是参数是基本类型,这时候,先会进行自动装箱,基本型转换为其封装类型,再进行3中的比较。

int i=1;

int j = 2;

Integer c=3;

System.out.println(c.equals(i+j));//true

G

9、要使某个类能被同一个包中的其他类访问,但不能被这个包以外的类访问,可以( )

让该类不使用任何关键字

使用private关键字

使用protected关键字

使用void关键字

包以外的类包括子类

外部包 > 子类 > 本包 > 该类内部

public> protected > default > private b.private只能同类中,c.子类不一定和父类同包

A

10、以下JAVA程序的运行结果是什么(  )

public static void main(String[] args) {

Object o1 = true ? new Integer(1) : new Double(2.0);

Object o2;

if (true) {

o2 = new Integer(1);

} else {

o2 = new Double(2.0);

}

System.out.print(o1);

System.out.print(" ");

System.out.print(o2);

}

1 1

1.0 1.0

1 1.0

1.0 1

byte b = 1;

char c = 1;

short s = 1;

int i = 1;

// 三目,一边为byte另一边为char,结果为int

// 其它情况结果为两边中范围大的。适用包装类型

i = true ? b : c; // int

b = true ? b : b; // byte

s = true ? b : s; // short

// 表达式,两边为byte,short,char,结果为int型

// 其它情况结果为两边中范围大的。适用包装类型

i = b + c; // int

i = b + b; // int

i = b + s; // int

三元运算符可以自动提升包装类型,而正常的Integer是不可以自动向上转型成Double的

D

11、下列关于系列化和反序列化描述正确的是:

序列化是将数据转为n个 byte序列的过程

反序列化是将n个 byte转换为数据的过程

将类型int转换为4 byte是反序列化过程

将8个字节转换为long类型的数据为序列化过程

把你看得懂的转换为看不懂的,就是序列化。

把你看不懂的转换为看得懂的,就是反序列化。

序列化:将数据结构转换称为二进制数据流或者文本流的过程。序列化后的数据方便在网络上传输和在硬盘上存储。

**反序列化:**与序列化相反,是将二进制数据流或者文本流转换称为易于处理和阅读的数据结构的过程。

本质其实还是一种协议,一种数据格式,方便数据的存储和传输。

AB

12、实现或继承了Collection接口的是()

Map

List

Vector

Iterator

最后

Java架构进阶面试及知识点文档笔记

这份文档共498页,其中包括Java集合,并发编程,JVM,Dubbo,Redis,Spring全家桶,MySQL,Kafka等面试解析及知识点整理

image

Java分布式高级面试问题解析文档

其中都是包括分布式的面试问题解析,内容有分布式消息队列,Redis缓存,分库分表,微服务架构,分布式高可用,读写分离等等!

image

互联网Java程序员面试必备问题解析及文档学习笔记

image

Java架构进阶视频解析合集
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!

本质其实还是一种协议,一种数据格式,方便数据的存储和传输。

AB

12、实现或继承了Collection接口的是()

Map

List

Vector

Iterator

最后

Java架构进阶面试及知识点文档笔记

这份文档共498页,其中包括Java集合,并发编程,JVM,Dubbo,Redis,Spring全家桶,MySQL,Kafka等面试解析及知识点整理

[外链图片转存中…(img-UUqFAs9m-1714684630077)]

Java分布式高级面试问题解析文档

其中都是包括分布式的面试问题解析,内容有分布式消息队列,Redis缓存,分库分表,微服务架构,分布式高可用,读写分离等等!

[外链图片转存中…(img-KEzRTt4B-1714684630077)]

互联网Java程序员面试必备问题解析及文档学习笔记

[外链图片转存中…(img-Fh2HM6SB-1714684630078)]

Java架构进阶视频解析合集
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!

  • 21
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值