public boolean isInfinite() {
// 调用了重载方法
return isInfinite(value);
}
调用了重载的isInfinite方法。
判断float型的数是不是无穷大。
Float.java中的相关代码:
public static boolean isInfinite(float v) {
// 判断是否为正无穷或负无穷
return (v == POSITIVE_INFINITY) || (v == NEGATIVE_INFINITY);
}
判断一个float型的数是否有限。
Float.java中的相关代码:
public static boolean isFinite(float f) {
// 对float数取绝对值,判断是否小于等于float能表示的最大值
return Math.abs(f) <= FloatConsts.MAX_VALUE;
}
将float型的数转换成满足IEEE 754浮点型表示法的int型的数。
**符号位MASK:0x80000000
指数位MASK:0x7f800000
有效位MASK:0x007fffff
正无穷:0x7f800000
负无穷:0xff800000
NaN:0x7fc00000**
Float.java中的相关代码:
public static int floatToIntBits(float value) {
// 调用floatToRawIntBits转换成int型的数
// 详解在1)处
int result = floatToRawIntBits(value);
// 根据指数位和非零有效位判断是不是NaN
if ( ((result & FloatConsts.EXP_BIT_MASK) ==
FloatConsts.EXP_BIT_MASK) &&
(result & FloatConsts.SIGNIF_BIT_MASK) != 0)
// 若是,则设置为NaN
result = 0x7fc00000;
// 返回
return result;
}
1)floatToRawIntBits方法
Float.java中的相关代码:
public static native int floatToRawIntBits(float value);
该方法是一个native方法,该方法会将一个float型的数转换成满足IEEE 754浮点型表示法的int型的数,即使该数为NaN,也会进行转换。
将int型的数按照IEEE 754浮点数标准转换为float型的数。
Float.java中的相关代码:
public static native float intBitsToFloat(int bits);
该方法是一个native方法。
将Float对象转换为String对象。
Float.java中的相关代码:
public String toString() {
// 调用了重载方法
return Float.toString(value);
}
调用了重载的toString方法。
Float.java中的相关代码:
public static String toString(float f) {
// 调用FloatingDecimal的toJavaFormatString方法
return FloatingDecimal.toJavaFormatString(f);
}
将float型的数转换为十六进制的String对象。
Float.java中的相关代码:
public static String toHexString(float f) {
// 对数值取绝对值,若小于正常的最小正数,同时不为0
if (Math.abs(f) < FloatConsts.MIN_NORMAL
&& f != 0.0f ) {
// 对数值进行类型转换,变为double型的数
// 调用Math的scalb方法
// DoubleConsts.MIN_EXPONENT-FloatConsts.MIN_EXPONENT = -896
// 相当于数值f乘以2的-896次方
// 最后调用Double的toHexString进行转换
String s = Double.toHexString(Math.scalb((double)f,
DoubleConsts.MIN_EXPONENT-FloatConsts.MIN_EXPONENT));
// 因为Double的指数为-1022,Float为-126,所以需要替换
// 使用正则表达式,从后向前替换
return s.replaceFirst("p-1022$", "p-126");
}
else // 若大于等于正常的最小整数,或等于0
// 调用Double的toHexString进行处理
return Double.toHexString(f);
}
获取当前数值对应的byte型数。
Float.java中的相关代码:
public byte byteValue() {
// 进行类型转换,返回
return (byte)value;
}
获取当前数值对应的short型数。
Float.java中的相关代码:
public short shortValue() {
// 进行类型转换,返回
return (short)value;
}
获取当前数值对应的int型数。
Float.java中的相关代码:
public int intValue() {
// 进行类型转换,返回
return (int)value;
}
获取当前数值对应的long型数。
Float.java中的相关代码:
public long longValue() {
// 进行类型转换,返回
return (long)value;
}
获取当前数值对应的float型数。
Float.java中的相关代码:
public float floatValue() {
// 直接返回
return value;
}
获取当前数值对应的double型数。
Float.java中的相关代码:
public double doubleValue() {
// 进行类型转换,返回
return (double)value;
}
获取Float对象的哈希值。
Float.java中的相关代码:
@Override
public int hashCode() {
**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**
**深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**
**因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**
![img](https://img-blog.csdnimg.cn/img_convert/4aed35cf0fa3e3454467e0048b14d185.png)
![img](https://img-blog.csdnimg.cn/img_convert/16596c5e0dbc949c065056575e051530.png)
![img](https://img-blog.csdnimg.cn/img_convert/8c536bdc0f500dfc5527365c41b7622f.png)
![img](https://img-blog.csdnimg.cn/img_convert/c11656804b7386ff41022d5c67495d4c.png)
![img](https://img-blog.csdnimg.cn/img_convert/06ff67e700a58fe47898aa99db0d26b5.png)
![img](https://img-blog.csdnimg.cn/img_convert/100cfbe62ca78eb6d9390f05bb9b2943.png)
![img](https://img-blog.csdnimg.cn/13f2cb2e05a14868a3f0fd6ac81d625c.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!**
**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**
**如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)**
![img](https://img-blog.csdnimg.cn/img_convert/13dc8ca7c8258205103786c9d5d0dc49.png)
### 总结
我最近从朋友那里收集到了**2020-2021BAT 面试真题解析**,内容很多也很系统,包含了很多内容:`Android 基础、Java 基础、Android 源码相关分析、常见的一些原理性问题`等等,可以很好地**帮助大家深刻理解Android相关知识点的原理以及面试相关知识**。
这份资料把大厂面试中**常被问到的技术点**整理成了PDF,包知识脉络 + 诸多细节;还有 高级架构技术进阶脑图 帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。
这里也分享给广大面试同胞们,希望每位程序猿们都能面试成功~
**Android 基础知识点**
![](https://img-blog.csdnimg.cn/img_convert/e04ba8fae6d0a899cf7460f91c1f9fef.webp?x-oss-process=image/format,png)
**Java 基础知识点**
![](https://img-blog.csdnimg.cn/img_convert/65e775caf70c280968432c9f1463a5e0.webp?x-oss-process=image/format,png)
**Android 源码相关分析**
![](https://img-blog.csdnimg.cn/img_convert/1b5138761f6c86623b56c5199b7c46e5.webp?x-oss-process=image/format,png)
**常见的一些原理性问题**
![](https://img-blog.csdnimg.cn/img_convert/e14dbe8be5be7aa3e14616679c131977.webp?x-oss-process=image/format,png)
**腾讯、字节跳动、阿里、百度等BAT大厂 2019-2020面试真题解析**
![](https://img-blog.csdnimg.cn/img_convert/731ebcdb3abf32c2c0e674413b0b7a7d.webp?x-oss-process=image/format,png)
> **本文已被[CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》]( )收录**
[**一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!**](https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0)
**AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算**
题**
[外链图片转存中...(img-Pf3LdaLt-1712538222238)]
**腾讯、字节跳动、阿里、百度等BAT大厂 2019-2020面试真题解析**
[外链图片转存中...(img-dl7eOIio-1712538222239)]
> **本文已被[CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》]( )收录**
[**一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!**](https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0)
**AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算**