码迷,mamicode.com
首页 > 其他好文 > 详细

基本数据类型

时间:2016-05-12 21:38:23      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:


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);
	}



基本数据类型

标签:

原文地址:http://blog.csdn.net/u011794238/article/details/51354150

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!