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

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

}

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

Set

BCE

13、常用的servlet包的名称是?

java.servlet

javax.servlet

servlet.http

javax.servlet.http

JEE5.0中的Servlet相关的就下面这几个包:

javax.servlet

javax.servlet.jsp

java.servlet.jsp.el

最后

还有Java核心知识点+全套架构师学习资料和视频+一线大厂面试宝典+面试简历模板可以领取+阿里美团网易腾讯小米爱奇艺快手哔哩哔哩面试题+Spring源码合集+Java架构实战电子书+2021年最新大厂面试题。
在这里插入图片描述
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!
ctor

Iterator

Set

BCE

13、常用的servlet包的名称是?

java.servlet

javax.servlet

servlet.http

javax.servlet.http

JEE5.0中的Servlet相关的就下面这几个包:

javax.servlet

javax.servlet.jsp

java.servlet.jsp.el

最后

还有Java核心知识点+全套架构师学习资料和视频+一线大厂面试宝典+面试简历模板可以领取+阿里美团网易腾讯小米爱奇艺快手哔哩哔哩面试题+Spring源码合集+Java架构实战电子书+2021年最新大厂面试题。
[外链图片转存中…(img-4hAPreeI-1714684598307)]
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值