JAVA开发工程师知识点总结
前言:本文撰写目的是为了给广大网友总结一份尽力涵盖所有常用的java知识点,用于笔试或面试,同时也是自己学习过程的一个记录,希望各位网友能够广开言路,各位大牛能够多给给指导。十分感谢!!
1、基本数据类型
键 | 值 | 最大值(长度) | 位 |
---|---|---|---|
byte | 字节 | 一个字节 | -128至127 |
char | 字符 | 两个字节 | 0至2的16次方减一,就是65535 |
short | 短整型 | 两个字节 | -32768至32767 |
int | 整型 | 四个字节 | 2147483648至-2147483647 |
long | 长整型 | 八个字节 | -263 至 263-1 |
float | 浮点型 | 四个字节 | 1bit(符号位) 8bits(指数位) 23bits(尾数位) |
double | 双精度浮点数 | 八个字节 | 1bit(符号位) 11bits(指数位) 52bits(尾数位) |
这个老生常谈的表格为什么还要罗列出来呢?
1、不同系统的数据相互导入的时候就要考虑到数据源处,数据的长度,正确选择类型,否则导入的时候有可能有意想不到的问题出现。简单记为整型最大是正负2147483647左右,即9-10位的整数数值最合适。长整型是正负9223372036854775808左右,即18-19位在整数数值最合适。
2、浮点型位数差不多为啥会比整型的表示的数值大呢,因为其存在指数位,使得其能表达的数值变得非常大,但也存在精度问题,float和double的精度是由尾数的位数来决定的。浮点数在内存中是按科学计数法来存储的,其整数部分始终是一个隐含着的“1”,由于它是不变的,故不能对精度造成影响。
float:2^23 = 8388608,一共七位,这意味着最多能有7位有效数字,但绝对能保证的为6位,也即float的精度为6~7位有效数字。
double:2^52 = 4503599627370496,一共16位,同理,double的精度为15~16位。
3、数据类型的转换(没卵用ide会告诉你)
int 转 float long double 安全转换
long 转 float double 安全转换
float 转 double 安全转换
4、包装类型(可自行查看源码)
int 对应 Integer,罗列了常用的包装类型对应的字段和方法
键 | 类型 | 含义 | 字段类型或返回类型 |
---|---|---|---|
MIN_VALUE | 静态final变量 | 最小值 | int |
MAX_VALUE | 静态final变量 | 最大值 | int |
TYPE | 静态final变量 | 包装类型对应基本类型的class对象 | Class<Integer> |
toString | 静态方法 | 数字转字符串,支持不同进制 | String |
parseInt | 静态方法 | 字符串转整型,支持2-36进制,必须是个正确的数字表达,默认以十进制解析 | int |
valueOf | 静态方法 | 支持字符串或者数字转为Integer,若字符串入参,则先调用parseInt,valueOf使用预设缓存IntegerCache.cache | Integer |
IntegerCache.cache | 内部类IntegerCache的静态final变量 | Integer对象预设缓存,存了256个对象,-128到127(index+128) | Integer数组 |
byteValue,shortValue,intValue等 | 成员方法 | 包装类型对应基本类型的强转值 | 强转的目的类型 |
equals | 成员方法 | Override,本质上是基本类型值得比较,不是对象是否为同一个比较(地址) | boolean |
decode | 成员方法 | 入参是string,本质上是valueOf,只不过是帮忙分析字符串前缀的进制 | boolean |
compare | 静态方法 | 对比两整型入参的打小 | int,-1、0或者1 |
compareTo | 成员方法 | 入参是Integer,本质上是compare,比较基本类型不是包装类型 | boolean |
long 对应 Long,罗列了常用的包装类型对应的字段和方法
基本与Integer类似,LongCache.cache长度也是一样
float 对应 Float,罗列了常用的包装类型对应的字段和方法
键 | 类型 | 含义 | 字段类型或返回类型 |
---|---|---|---|
POSITIVE_INFINITY | 静态final变量 | 正数无穷大 (定义1.0f / 0.0f) | float |
NEGATIVE_INFINITY | 静态final变量 | 负数无穷大(定义-1.0f / 0.0f) | float |
NaN | 静态final变量 | 非数字(定义0.0f / 0.0f) | float |
floatToIntBits | 静态final变量 | 将浮点含义直转为整数对应的值(float的比较依赖于此) | int |
parseDouble | 静态final变量 | 依赖于FloatingDecimal.parseFloat | float |
有一些关于浮点精度的常量尚未搞清其含义 |
double 对应 Double,罗列了常用的包装类型对应的字段和方法
键 | 类型 | 含义 | 字段类型或返回类型 |
---|---|---|---|
POSITIVE_INFINITY | 静态final变量 | 正数无穷大 (定义1.0f / 0.0f) | double |
NEGATIVE_INFINITY | 静态final变量 | 负数无穷大(定义-1.0f / 0.0f) | double |
NaN | 静态final变量 | 非数字(定义0.0f / 0.0f) | double |
doubleToLongBits | 静态final变量 | 将浮点含义直转为整数对应的值(fdouble的比较依赖于此) | long |
parseDouble | 静态final变量 | 依赖于FloatingDecimal.parseDouble | double |
有一些关于浮点精度的常量尚未搞清其含义 |
char 对应 Character,罗列了常用的包装类型对应的字段和方法
基本与Integer类似,CharacterCache.cache长度是128,取0-127值,但也有一些关于字符的操作
byte对应 Byte,罗列了常用的包装类型对应的字段和方法
基本与Integer类似,ByteCache.cache长度是256,即所有的byte相同对应Byte相同,除非你特意去new
键 | 类型 | 含义 | 字段类型或返回类型 |
---|---|---|---|
parseByte | 静态final变量 | 先尝试用Integer.parseInt转为int,接受string,默认是十进制 | byte |
decode | 静态final变量 | 先尝试用Integer.decode转为int | Byte |
valueOf | 静态final变量 | 取cache,若为字符串则通过parseByte转为byte,再查cache | Byte |
short对应 Short,罗列了常用的包装类型对应的字段和方法
基本与Integer类似,ShortCache.cache长度是256,-128到127
键 | 类型 | 含义 | 字段类型或返回类型 |
---|---|---|---|
parseShort | 静态final变量 | 先尝试用Integer.parseInt转为int,接受string,默认是十进制 | short |
decode | 静态final变量 | 先尝试用Integer.decode转为int,再调用valueOf | Short |
valueOf | 静态final变量 | 取cache,若为字符串则通过parseShort转为byte,再查cache | Byte |
注意
1、Double与Float的静态变量虽然都叫非数字正负无穷大,但是他们不相等
2、Double与Float没有cache
3、其实就是valueOf的差异需要注意以及一些精度的处理罢了