有人问我为什么会选择java,java有什么好的。我是这么回答的:我现在也不知道当时为什么选择java,但是我现在挺喜欢java的。可能很多人和我一样,在刚刚接触程序的时候对所有程序的感觉都差不多,那个时候的选择成就了现在的我。不过,既然选择了,那就将java进行到底。
今天先把java的数据类型做一下整理:
在Java语言中,一共有8大数据类型,分别为:
整形:byte(字节型)、short(短整型)、int(整型)、long(长整型)
浮点型:float(单精度浮点型)、double(双精度浮点型)
布尔型:boolean
字符型:char
整型就是整数类型,用于存储整数数据:
byte:一个byte类型整数在内存里占8位,取值范围是-128~127
short:一个short类型整数在内存中站16位,取值范围是-32768~32767
int :一个int类型整数在内存中占32位,范围是-2147483648~2147483647
long:一个long类型整数在内存中占64位,范围是-9 223 372 036 854 775 808~9 223 372 036 854 775 808
int是最常用的整数类型,因此在通常情况下,直接给出一个整数值默认就是int类型如果使用一个巨大的整数值(超过了int类型的范围)时,
Java不会自动把这个整数值当成long型来处理,如果希望系统吧一个整数值当成long类型来处理,应在这个整数值后增加一个 l 或者 L
例如:long l = 99999999999999;报错 long l = 99999999999999L;正确
浮点型就是小数类型,用于存储小数类型:
float: 一个float类型小数在内存中占32位,负数范围:-3.4028235E+38~-1.4E-45 正数范围:1.4E-45~3.4028235E+38
double:一个double类型小数在内存中占64位,负数范围:-1.7976931348623157E+308~-4.9E-324 正数范围:4.9E-324~1.7976931348623157E+308
Java语言的浮点型默认是double类型,如果希望Java把一个浮点型值当成float类型处理,应该在这个浮点型值后紧跟 f 或 F
例如:float f = 3.88489; 报错 float f = 3.49847F;正确
字符型:字符型通常用于表示单个的字符,字符型必须使用单引号( ‘ )括起来。
Java语言使用16位Unicode字符集作为编码方式,而Unicode被设计称支持世界上所有书面语言的字符,也包括中文字符,因此Java程序支持各种语言的字符
例如:
通过转义字符表示特殊字符型值,例如 ‘/n’(换行符) ‘/t’(空格)
直接使用Unicode值来表示字符值,格式是 ‘/uxxxx’,其中xxxx代表一个十六进制的整数
字符型也可以采用十六进制编码方式来表示,范围是 ‘/u0000’~ ‘/uFFFF’,一共可以表示65336个字符,其中前256个字符和ASCII码中的字符完全重合
布尔型boolean:用于表示逻辑上的“真”或“假”,在Java语言中boolean类型值只能是true或者false,不能用0或非0表示
数据的自动类型转换:
Java所有的数值型变量可以相互转换,如果系统支持把某种基本类型的值直接赋给另一种基本类型变量,则这种方式被称为自动类型转换
范围小的可以向范围大的进行自动类型转型转换
byte ->short 、char->int ->long -> float -> double
强制类型转换
将箭头右边的类型转换为左边的类型,则必须进行强制转换
注意:把一个浮点数强制转换为整数时,Java将直接截断浮点数的小数部分,只取其整数部分布尔类型不可转换成其他类型
综合讲解:
int i1=123;int i2=456;
double d1=(i1+i2)*1.2; //系统将转换为double型运算
float f1=(float)((i1+i2)*1.2); //需要加强制转换符
byte b1=1;byte b2=2;
byte b3=(byte)(b1+b2); //系统将转换为int型运算,需要强制转换符
double d2=1e200; //1*10的200次方
float f2=(float)d2; //会产生溢出float最多只能10的38次方
System.out.println(f2); //Infinity double对于float来说就是无限大
float f3=1.23f;//必须加f