基本数据类型
Posted LinkinPark8林肯
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基本数据类型相关的知识,希望对你有一定的参考价值。
Java中的基本数据类型分为四类,整数类型,浮点类型,字符类型,布尔类型。
1),整数类型包含byte(一个字节),short(两个字节),int(四个字节),long(8个字节)。
2),浮点类型包含float(四个字节),double(八个字节)。
3),字符类型包含char(两个字节)。
4),布尔类型包含boolean(一般情况下八位字节)。
1,整形
通常说的整型,一般包含下面4种类型,byte(一个字节),short(两个字节),int(四个字节),long(8个字节)。
int是最常用的整数类型,这里要注意int的取值范围,-2147483648->2147483647,为了方便记忆,以后可以简单地记:int是2开头的10位数字。
通常情况下,直接给出一个整数值默认值就是int类型。除此之外,有如下两种情形必须指出:
1),如果直接将一个较小的整数值(在byte和short类型的表示范围内)赋给一个byte和short变量,系统会自动把这个整数值当成byte或者short类型来处理。
2),如果使用一个巨大的整数值(超过了int类型的表示范围时),Java不会自动把这个整数值当成long类型来处理。
如果希望系统把一个整数值当成long类型来处理时,应在这个整数值后增加l或者L作为后缀,推荐使用L。
注意:可以把一个较小的整数值(在int类型的表示范围内)直接赋给一个long类型的变量,这并不是因为Java会把这个较小的整数值当成long类型来处理。
Java依然把这个整数值当成int类型来处理,只是因为int类型的值会自动类型转换到long类型。
public static void main(String[] args)
// 下面语句正确,5在byte类型范围内,系统自动把5当成byte类型来处理。
byte a = 5;
// 下面语句错误,12345678912超出了类型的范围(2开头10位数字)。
int b = 12345678912;
// 下面语句错误,系统不会自动把12345678912当成long类型来处理
long c = 12345678912;
// 下面语句正确,long类型要在数字后面加L。
long d = 12345678912L;
// 下面2行语句正确,Java中的int类型会自动转成long类型
int e = 123;
long f = e;
2,字符型
字符型通常用于表示单个的字符,字符型值必须使用单引号括起来。
Java使用16位的Unicode字符集作为编码方式,Unicode被设计成支持世界上所有书面语言的字符,包括中文字符,所以Java程序支持各种语言的字符。
字符型值有如下三种表示形式:
1),直接通过单个字符来指定字符型值,比如'A','9','0'等。
2),通过转义字符表示特殊字符型值,比如'\\n','\\t'等。
3),直接使用Unicode值来表示字符型值,格式是'\\uXXXX',其中XXXX代表一个十六进制的整数。
由于计算机底层保存字符时,实际上保存该字符对应的编号,因此char类型的值也可以直接作为整数值来使用,它相当于一个16位的无符号整数,范围是0->65535。
如果把0->65535范围内的一个int整数赋给char类型变量,系统会自动把这个int整数当成char类型来处理。
public static void main(String[] args)
char charValue = '蒋';
// 下面代码输出 蒋
System.out.println(charValue);
int intValue = charValue;
// 下面代码输出 33931
System.out.println(intValue);
Java没有提供表示字符串的基本数据类型,而是通过String类来表示字符串,由于字符串由多个字符组成,因此字符串要使用双括号括起来。
有两点需要注意:
1),char类型使用单引号括起来,而字符串使用双括号括起来。关于String的用法后面我会专门做整理的。
2),Java语言中的单引号,双引号和反斜线都有特殊的用途,如果一个字符串包含了这些特殊字符,则应该使用转义字符的表示形式。
比如Java中写一个绝对路径:"c:\\codes"这种写法得不到期望的结果,因为Java会把反斜线当成转义字符,所以应该写成"c:\\\\codes"。
3,浮点型
Java的浮点类型有两种,float和double。Java的浮点类型有固定的表数范围和字段长度,字段长度和表数范围与机器无关。
浮点类型包含float(四个字节)占32位的内存空间,double(八个字节)占64位的内存空间。
Java语言的浮点数有两种表示形式。
1),十进制数形式:这种形式就是简单的浮点数,比如3.1415。浮点数必须包含一个小数点,否则会被当成int类型处理。
2),科学计数法形式:比如3.14e2/3.14E2,也就是3.14*10*10,原谅我Mac不会打指数。
注意:只有浮点类型的数值才可以使用科学计数法形式表示。比如31400是一个int类型的值,而314E2则是浮点类型的值。
Java语言的浮点类型默认的是double类型,可以在一个浮点数后添加d或者D,强制指定该变量是double类型。
如果希望Java把一个浮点类型值当成float类型处理,应该在这个浮点类型值后紧跟f或者F。
Java还提供了三个特殊的浮点数值,正无穷大,负无穷大,非数,用来表示溢出和出错。
1),正无穷大通过Double和Float类的POSITIVE_INFINITY表示,比如用一个正数除以0将得到正无穷大
2),负无穷大通过Double和Float类的NEGATIVE_INFINITY表示,比如使用一个负数除以0将得到负无穷大
3),非数通过Double和Float类的NaN表示,0除以0或者对一个负数开方将得到一个非数
有2点需要注意:
1),所有的正无穷大数值都是相等的,所有的负无穷大数值都是相等的,而NaN不与任何数值相等,甚至和NaN都不相等。
2),只有浮点数除以0才可以得到正无穷大或负无穷大。Java语言会自动把和浮点数运算的0当成0.0处理。
如果一个整数值除以0,则会抛出一个异常,ArithmeticException:/by zero(除以0异常)。
以下代码是JDK中Double类中正无穷大,负无穷大,非数的源码:
public final class Double extends Number implements Comparable<Double>
/**
* A constant holding the positive infinity of type
* @code double. It is equal to the value returned by
* @code Double.longBitsToDouble(0x7ff0000000000000L).
*/
public static final double POSITIVE_INFINITY = 1.0 / 0.0;
/**
* A constant holding the negative infinity of type
* @code double. It is equal to the value returned by
* @code Double.longBitsToDouble(0xfff0000000000000L).
*/
public static final double NEGATIVE_INFINITY = -1.0 / 0.0;
/**
* A constant holding a Not-a-Number (NaN) value of type
* @code double. It is equivalent to the value returned by
* @code Double.longBitsToDouble(0x7ff8000000000000L).
*/
public static final double NaN = 0.0d / 0.0;
现在我们输出一下正无穷大,负无穷大,非数,看下控制台显示。
public static void main(String[] args)
System.out.println("正无穷大:" + Double.POSITIVE_INFINITY);
System.out.println("负无穷大:" + Double.NEGATIVE_INFINITY);
System.out.println("非数:" + Double.NaN);
控制台输出如下:
正无穷大:Infinity
负无穷大:-Infinity
非数:NaN
4,布尔型
布尔型只有一个boolean类型,用来表示逻辑上的真或假。
Java中,boolean类型的数值只能是true或false,不能用0或者非0来代表,其他基本数据类型的值也不能转换成boolean类型。
boolean类型的值或变量主要用来做旗标进行流程控制,Java语言中使用boolean类型的变量或值控制的流程主要有如下几种:
1),if条件控制语句
2),while循环控制语句
3),do循环控制语句
4),for循环控制语句
5),(?:)三目运算符
5,数值中使用下划线分隔
当程序中用到的数值位数特别多时,我们不容易看清楚变量到底有多少位数。
为了解决这个问题,Java7引入了一个新功能,程序员可以在数值中使用下划线,不管是整数数值,还是浮点型数值,都可以自由的使用下划线。
通过下划线,可以更直观的分辨数值中到底包含多少位,建议3位数字用一个下划线,比如1_234_567_890。
public static void main(String[] args)
int a = 123_456_789;
System.out.println("使用下划线划开int值:" + a);
long b = 1_234_567_890_987_654_321L;
System.out.println("使用下划线划开long值:" + b);
以上是关于基本数据类型的主要内容,如果未能解决你的问题,请参考以下文章