Java内字符编码是Unicode的,class文件采用utf8的编码方式,jvm运行时采用utf16。
java八大基本数据类型及其范围
基本数据类型包括
整数类型:byte、short、int、long、char、
浮点型:float、double、
布尔型:boolean。
Java虚拟机中的数据类型的及其范围
整数类型
byte类型,取值范围是-128 ~ 127 (-2^7 ~ 2^7-1),包括-128和127。
short类型,取值范围是-32768 ~ 32767(-2^15 ~ 2^15-1),包括-32 768和32767。
int类型,取值范围是-2 147483648 ~ 2 147483647 (-2^31~ 2^31 -1), 包括-2147483648和2147483647。
long类型,取值范围是-9223372036854775808~9223372036854775807(-2^63 ~ 2^63-1),包括-9223372 036 854775 808和9223 372 036 854 775 807。
char类型,取值范围是0 ~ 65535, 包括0和65 535。char是无符号位 。
char型(文本型)
用于存放字符的数据类型,占用2个字节,采用unicode编码,它的前128字节编码与ASCII兼容。
浮点型
单精度float类型: 32位 范围:IEEE754
双精度double类型:64位 范围:IEEE754
布尔类型
虽然Java虛拟机定义了boolean这种数据类型,但是只对它提供了非常有限的支持。在Java虚拟机中没有任何供boolean值专用的字节码指令,Java语言表达式所操作的boolean值,在编译之后都使用Java虚拟机中的int数据类型来代替。
在Oracle公司的虛拟机实现里,Java语言中的boolean数组将会被编码成Java虚拟机的byte数组,每个boolean元素占8位。
Java虚拟机会把boolean数组元素中的true值采用1来表示,false值采用0来表示,当Java编译器把Java语言中的boolean类型值映射为Java虚拟机的int类型值时,也必须采用上述表示方式。
类型转换
boolean类型与其他基本类型不能进行类型的转换(既不能进行自动类型的提升,也不能强制类型转换)否则将编译出错。
byte型不能自动类型提升到char,char和short直接也不会发生自动类型提升(因为char是无符号的,会出现负数的问题),但是byte当然可以直接提升到short型。
两个数值进行二元操作时,会有如下的转换操作:
如果两个操作数其中有一个是double类型,另一个操作就会转换为double类型。
否则,如果其中一个操作数是float类型,另一个将会转换为float类型。
否则,如果其中一个操作数是long类型,另一个会转换为long类型。
否则,两个操作数都转换为int类型。
当位数小于int的数据类型(byte, char, short)进行运算时,首先会把这些类型的变量值强制转为int类型,然后进行计算,最后会得到int类型的值。
例如:将2个short类型的值相加,最后得到的结果是int类型。如果需要得到short类型的结果,就必须显示地运算结果转为short类型。