JAVA面试题自用总结一

JAVA面试题自用总结一:

1.为什么Java中“1000 == 1000”为false,“100 == 100” 为true?
Integer a = 1000, b = 1000;  
System.out.println(a == b);//结果为false
Integer c = 100, d = 100;  
System.out.println(c == d);//结果为true
原因:Java中Integer中的源代码有一个内部类为:IntergerCache,这个类中有一个缓存数组,存放的内容为-128到127的整数。
这样也就是说任意一个相同数值的Integer的数,如果在-128和127之间,那么它们之间的内存地址是相同的。
也就是说不在-128和127范围内的数它们的内存地址是不相同的。
==号在比较基本数据类型时比较的是值,而用==号比较两个对象时比较的是两个对象的地址。
实际表现:此处比较的双方为两个对象(Integer a = 1000,b =1000;),所以比较的两个对象的地址。
所以会出现“1000 == 1000”为false,而“100 == 100”为true
其实题干里面应该写明定义方式或者定义代码的,因为如果我用int定义的 a=1000,b=1000,那 a==b 是为true 的 
2.获取一个类的类对象有那些方式?

(1)Class.forName(classname):用于做类加载 //根据给定的类名来获得,用于类加载 Stringclassname=“Person”; // 来自配置文件 Classclazz1=Class.forName(classname); // 此对象代表 Person.class

(2)对象.getClass():用于获得对象的类型 //如果拿到了对象,不知道是什么类型,用于获得对象的类型 Objectobj=newPerson(); Classclazz2=obj.getClass(); // 获得对象具体的类型

(3)类名.class:用于获得指定的类型,传参用 //如果是明确地获得某个类的 Class 对象,主要用于传参 Classclazz3=Person.class;

3.JAVA中有几种类型的流?
(1)字节流 InputStream/OutputStream 
①FileInputStream/FileOutputStream:文件字节流,用于文件的读写操作 
②BufferedInputStream/BufferedFileOutputStream:加缓冲区的字节流,用于提高效率 

(2)字符流 Reader/Writer 
①FileReader/FileWriter:文件字符流,用于文本文件的读写操作 
②BufferedReader/BufferedWriter:加缓冲区的字符流,用于提高效率 

(3)转换流 InputStreamReader/OutputStreamWriter 
4.当一个线程进入一个对象的一个synchronize方法后,其他线程是否可进入此对象的其他方法?
进入此对象的非同步方法
答案:可以
进入此对象的同步方法
答案:不可以
原因:锁对象只有一个  一次只能被一个线程拥有 而访问非同步方法不需要锁对象
5.简述TCP协议的三次握手

1)发送端首先发送一个带有SYN(synchronize)标志地数据包给接收方。

2)接收方接收后,回传一个带有SYN/ACK标志的数据包传递确认信息,表示我收到了。

3)最后,发送方再回传一个带有ACK标志的数据包,代表我知道了,表示’握手‘结束。

本人只是java学习中的小学生,有更好的想法请说明并解释,不然我怕我看不懂[捂脸]。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值