J2EE企业级开发基础教程(3) -8种基本数据类型

在Java中,所有变量类型分为两类,一类为基本类型,一类为对象类型。本篇文章主要介绍的是基本类型。

基本类型,英语叫primitive type,也有人翻译成“原始类型”、“简单类型”等等。这类变量属于编程语言中比较基础的组成部分,因此也被称之为“基本类型”。
官方文档参考:
基本类型中共分为8种,分别为byte、short、int、long、float、double、boolean、char。

1 整形类型

有四种类型都用来表示整数,他们是byte、short、int、long,他们之间的区别在于他们所占的内存空间和表示范围。下表为这四种基本类型的参数。

类型名称            所占空间          

表示范围   

byte

1个字节-128 ~ 127

short

2个字节-32768 ~ 32767

int

4个字节-2147483648 ~ 2147483648
long8个字节

 -9223372036854775808 ~ 9223372036854775807









可以把这四种基本类型想象成四个大小不同的饭盒,虽然空间不同,但是所装的数据基本上是一类的。要注意的是,表示范围小的类型可以直接赋值给表示范围大的类型,而反之不行。例如:

		byte b = 10;
		a = b; // 可以,表示范围小的类型赋值给范围更大的类型
		b = a; // 编译错误!表示范围大的类型不能赋值给范围小的类型!
		
		//也不能给一个变量赋一个超过其表示范围的值。例如:
		byte b1 = 100; // 可以赋值
		byte b2 = 150; // 编译错误! 150 超过了 byte类型的表示范围!

1.1字面值

字面值,指的是某个类型的合法取值,或者说,可以为该类型的变量赋值的数据。例如,“int a = 5;”,在这个代码中,a就是变量,5就是字面值。
要注意的是,字面值同样有类型。对于1、5、10、-99等整数字面值来说,其类型都是int类型。
但是,下面的代码能够正常执行:
byte b = 100;
在上面的这一行代码中,虽然100是一个int类型的字面值,但是由于100在byte类型的表示范围中,因此程序能够自动把100这个int类型转成byte类。
另外,如果需要long类型字面值,我们可以用在数值后面加L的方式(大小写均可)。例如,1000是一个int类型的字面值,而1000L是一个long类型的字面值。例如,下面的代码都是正确的:
long l = 1000L;
long l = 1000l;
当然,小写的“ l”容易和数字“ 1”混淆,因此最好还是用大写的“ L”。

2 浮点数类型

在计算机术语中,小数被称为浮点数。在Java语言中,浮点数有两种,分别为float和double。两者相关参数如下:
类型名称所占空间表示范围
float4个字节
3.4028235×10 38
~ 1.4×10 - 45
double8个字节
1.7976931348623157× 10 308
~ 4.9×10 - 324









浮点数类型的符号可以是正的,也可以是负的。

2.1字面值

浮点数的字面值有两种。第一种是直接给出小数,例如1.5,-0.38等。需要注意的是,这样给出的字面值都是double类型,如果需要float类型的字面值,需要在数值后面写一个字母f(大小写均可)。例如:1.6f,-10.39F。事实上,为了更明确的表示double类型的字面值,也可以在数值后面写一个字母d(大小写均可)。例如:1.6d,-10.39D。
第二种是用科学计数法表示。例如,-1.5×10 23,就可以用-1.5e23来表示。而3.8×10 - 5,则可以用3.8e-5来表示。而float类型的字面值,则在数值后面再加一个f。例如下面的代码

float f = 1.57e-3f;
<span style="font-family: sans-serif;">double d = 2.67e13;</span>

计算机表示小数,自然就涉及到表示精度的问题。由于计算机内部使用二进制表示小数,与我们通常的十进制表示法不同,因此小数在表示过程中有可能会有精度方面的损失。例如下面的程序:

public class TestFloat {
	public static void main(String[] args) {
		double a = 2.0 - 1.1;
		System.out.println(a);
	}
}

这段代码会输出:
0.8999999999999999
在上面的程序中,显示的结果并不是我们期望的“0.9”,这就是因为计算机内部用二进制表示这个数的时候,产生了精度上的问题。这就类似于,用十进制表示数,很难精确的表示1/3一样。

3 字符类型

Java中的字符类型为char类型,其本质为一个无符号整数。相关参数如下:
类型名称所占空间表示范围
char2个字节0 ~ 65536






在计算机中,一个字符是由一个正整数表示,这个整数被称为字符的编码。Java中的char类型存放的就是字符的编码。例如,大写字母‘A’的编码为
65,用16进制表示为0x41。
给一个字符变量赋值总共有三种方式: 字面值赋值编码赋值unicode赋值。三种赋值方式的语法如下:
           char ch1 = 'A'; // 字面值赋值
	   char ch2 = 65; // 编码赋值
	   char ch3 = '\u0041'; // unicode 赋值

3.1 字面值赋值

直接给出用单引号包围的单个字符。注意,Java中单引号和双引号有不同的含义, 单引号用来包围字符,双引号用来包围字符串

3.2 编码赋值

直接给出字符的编码值,例如给出大写字母‘A’的编码65。

3.3 Unicode赋值

Unicode是一种国际字符编码规范,能够处理全世界各国的语言。如果要使用这种赋值方式,则需要在一对单引号之下给出\u和4位16进制的unicode编码。在这个例子中,十六进制数0041表示成十进制为数字65,因此ch3表示的也是大写字母‘A’。由于Java中的char类型采用Unicode
编码方式,前面介绍过,Unicode能够处理世界各国的语言字符,因此,char类型可以用来处理中文。例如: char ch1 = '';
另外,有一些字符在java中有特殊含义,在使用时要通过反斜杠“\”来转义。例如,想表示一个单引号字符('),则必须使用(\')的语法。除了单引号(\')之外,双引号(\")、反斜杠(\\)、换行符(\n),制表符(\t)都是一些常用的转义字符。

4 布尔类型

布尔类型用来进行逻辑运算。Java中的布尔类型为boolean类型,这种类型只有两种字面值:true或者false。要注意的是布尔类型无法跟其他类型进行运算,也无法自动转化为其他类型。例如:
         boolean flag = true; // 正确
	 boolean flag = 1; // 错误! 1 不能转换为 boolean 类型!

关于布尔类型的变量所占空间官方给的解释是:

The boolean data type has only two possible values: true and false. Use this data type for simple flags that track true/false conditions. This data type represents one bit of information, but its "size" isn't something that's precisely defined.


至此,我们讲述完了java中的基本数据类型。


本文原文链接,http://blog.csdn.net/herry16354//article/details/44571305

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值