码迷,mamicode.com
首页 > 编程语言 > 详细

线程暂停的方法、基本数据类型包装类、十进制单精度浮点数(32位)存入内存中、TreeSet和TreeMap

时间:2018-01-03 00:49:06      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:==   blog   short   实现   集合   0.00   进制   32位   重载   

使线程暂停执行的方法?

1.Thread类的sleep()方法使线程进入阻塞状态,睡眠指定的时间段。

2.Object类的wait()方法使线程放弃对象锁,进入等锁池,直到获得对象锁后才继续往下执行

3.Thread类的yield()方法平时比较少用,使线程进入就绪状态而不是阻塞状态,也就是说下一个执行的线程可能还是这个线程,当然也可能让给了其他的线程,那么这个线程就暂停了。

4.Java5后的使用Lock接口也可以实现类似于对象锁的功能,优点是比较灵活、可以知道线程获得锁了没有等,比较大的缺点是需要手动释放锁,如果没有释放可能会造成死锁。

 

八大数据类型的包装类中哪几个使用了常量池机制?

Byte,Character,Short,Interger,Long。其中Character类的常量池(数组)大小为128,其他四个类的常量池大小为256,当使用类似于Integer i = 1;这样的赋值语句就会使用常量池,将和他等值得对象赋值给他,而不是创建新的对象,前提是赋值的范围是-128~127,也就是说:

Integer n1 = 100,n2 = 100,n3 = 150,n4 = 150;

System.out.print(n1 == n2); //true 两个变量指向的地址相同

System.out.print(n3 == n4); //false 两个变量指向的地址不同

P.s. byte的范围本就是-128~127也就是直接赋值的话(而不是new)必然使用常量池。

 

浮点数6.125在内存中的形式?

浮点数在内存中符号位(1bit),指数符号位(1bit),指数位(7bit)和尾数位(23bit)组成

第一步

 十进制的6.125先转换为二进制,6-->0110。

0.125乘2得 0.25 取 0

0.25乘2得0.5 取 0

0.5乘2得1 取1

0.125-->0.001

(ps.二进制小数如何转换为十进制:

小数点后的第n个数乘以2的负n次方后全部相加:

以0.001为例  0 x 1/2 + 0 x 1/4 + 1 x 1/8 = 0.125)

第二步

浮点数的最高位表示正负,1为正,0为负

第二高位高位表示指数的正负,1为正,0为负

110.001 = 1.10001 x 2 x 2

指数是4-->0000 100 (七位二进制)

最终的结果为

1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1

 

TreeSet和TreeMap存储的对象要求实现了comparable接口,因为这两个存储的对象都是有序的,实际上TreeSet内部也实现了Map。

Collections 是个工具类(和集合接口 Collection区分开),sort提供两个重载sort(list)和sort(list,obj) 前者要求list中存储的对象实现了comparable接口,后者 没有这个要求但obj不需实现了comparor接口,等于临时提供了排序规则。

 

线程暂停的方法、基本数据类型包装类、十进制单精度浮点数(32位)存入内存中、TreeSet和TreeMap

标签:==   blog   short   实现   集合   0.00   进制   32位   重载   

原文地址:https://www.cnblogs.com/shadow-demo/p/8179832.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!