Java基本类型
2016-04-10 22:25
357 查看
说明
java的Object是所有的对象的基类,它也有自己的基本类型。这些基本类型存储在栈中,运行速度更快。对于这些基本类型java都有对应的包装类,对应的占用空间也更大,尽量使用基本类型处理。java的基本类型主要有boolean,char,byte,short,int,long,float,double,void这几个,其中String属于包装类,并不属于基本类型。
boolean
包装类:Boolean大小:依赖于java虚拟机,一般是占用1byte。详细可见:stackOverflow上面做的实验。
数值:true false
char
包装类:Character大小:16 bit (2字节)
数值:char采用Unicode编码方式,故最大值和最小值都是采用的Unicode形式,可见java的Character源码。
/** * The constant value of this field is the smallest value of type * {@code char}, {@code '\u005Cu0000'}. * * @since 1.0.2 */ public static final char MIN_VALUE = '\u0000'; /** * The constant value of this field is the largest value of type * {@code char}, {@code '\u005CuFFFF'}. * * @since 1.0.2 */ public static final char MAX_VALUE = '\uFFFF';
注:char是采用Unicode编码,占用2个字节的,表示一个字符。故可以表示一个英文或者一个汉字。
不同的编码对不同的汉字占用的字节是不同的,例如:GBK中,一个英文字符占用1个字节,1个汉字占用2个字节;UTF-8中,一个英文字符占用1个字节,一个汉字占用3~4个字节。等等还有其他类似的编码。
byte
包装类:Byte大小:8 bits
数值:-128 ~ 127
short
包装类:Short大小:16 bits
数值:-2^15 ~ 2^15-1
int
包装类:Integer大小:32 bits
数值:-2^31 ~ 2^31-1
long
包装类:Long大小:64 bits
数值:-2^63 ~ 2^63-1
float
包装类:Float大小:32 bits
数值:可采取查看–Float.MIN_VALUES Float.MAX_VALUE
double
包装类:Double大小:64 bits
数值:可采取查看–Double.MIN_VALUES Double.MAX_VALUE
void
包装类:Void数值:–
大小:–
注:此类型仅仅存在,没有过多使用,它含有自己的包装类。可见djk源码。
package java.lang; /** * The {@code Void} class is an uninstantiable placeholder class to hold a * reference to the {@code Class} object representing the Java keyword * void. * * @author unascribed * @since JDK1.1 */ public final class Void { /** * The {@code Class} object representing the pseudo-type corresponding to * the keyword {@code void}. */ @SuppressWarnings("unchecked") public static final Class<Void> TYPE = (Class<Void>) Class.getPrimitiveClass("void"); /* * The Void class cannot be instantiated. */ private Void() {} }
基本类型转换
java 的基本类型在使用中,会发生自动转换现象。例如: int 数值和double数值相加,结果就是double数值的。这些都是自动发生的类型提升。它有几个原则:1.自动类型转化
2.取值窄的向取值宽的转化,反之需要强制类型转换。
等还有其他规则,可参考其他文档。
float和double的使用
java的float和double主要为了提供数值上的精确快速近似计算而设计的,它尤其不擅长用户货币计算 。此处需要注意下,当我们使用他们进行计算时,结果往往不如意。System.out.println(1.00 - 9*0.1); 0.09999999999999998
对于此类计算,一般采用BigDecimal进行精确计算即可,可选择8中舍入方式,十分方便于计算。
如果要求不高,可以采用int或者long进行计算,例如:1块钱的计算,直接采用100,而不是采用0.20等计算方式。
基本类型和包装类型
java 5提供了基本类型和包装类型的自动转换,这使得他们之间的使用十分方便,但是需要合理使用。java 的基本类型都是存储于栈中的,运算速度十分快,而java包装类型都是对象占用很大的空间,再进行循环计算时,最好精确使用基本类型。区别
区别主要有3点:1. 基本类型只含有值;包装类型含有其他方法。比较大小时,需要注意。
2. 包装类型属于对象,会有null存在。使用时,考虑是否为null。
3. 基本类型节省空间和计算。循环使用时,注意考虑基本类型。
合理的使用
以下情况多考虑使用包装类型:1. 集合的处理,例如:List Set 等。
2. 泛型时,参数化类型使用包装类型。
3. 反射方法的使用,考虑包装类型。
参考:
effective java书籍
博客参考:java基本类型转化原则 /article/7253934.html
相关文章推荐
- JAVA回调机制(CallBack)详解
- 20145312 《Java程序设计》第六周学习总结
- 延迟加载的理解
- Java中的Atomic包
- java枚举的作用
- java网页爬虫
- 20145322第一次JAVA实验报告
- Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition
- 20145213《Java程序设计》实验报告一:Java开发环境的熟悉(Windows+IDEA)
- 20145328 《Java程序设计》第6周学习总结
- 20145213《Java程序设计学习笔记》第六周学习总结
- spring RestTemplate用法详解
- 《Java程序设计》实验1实验报告
- 20145317彭垚 《Java程序设计》第一次实验实验报告
- Java基础知识强化之多线程笔记06:Lock接口 (区别于Synchronized块)
- Spring框架的学习
- 几种任务调度的 Java 实现方法与比较
- 20145312《Java第一次实验报告》
- 20145127《java程序设计》第六周学习总结
- spring学习笔记(4)-spring事务管理