知识点讲解:光盘:视频\PPT讲解(知识点)\第3章\数据类型.mp4
Java中的数据类型可以分为简单数据类型和复杂数据类型两种。简单数据类型是Java的基础类型,它包括整数类型、浮点类型、字符类型和布尔类型,在本章将重点讲解。复合数据类型由简单数据类型组成,是用户根据自己的需要定义并实现其运算的类型,如类、接口、数组。为了便于读者快速理解,笔者将Java中的数据类型分为了两大类,分别是基本类型和引用类型,具体结构如下所示。
1.基本类型
1)数值类型
(1)浮点数。
(2)整数类型。
(3)字符类型。
(4)布尔类型:Boolean类型。
2.引用类型
(1)类类型。
(2)接口类型。
(3)数组类型。
Java中的简单数据类型是最简单的,主要由byte、short、int、long、char、float、double和boolean组成,简单数据类型所占的内存位数以及取值范围如表3-1所示。
表3-1 数据类型
数据类型 |
所占位数 |
值范围 |
---|---|---|
byte
|
8位 |
?128~127 |
short
|
16位 |
?32768~32767 |
int
|
32位 |
?2147483648~2147483647 |
long
|
64位 |
|
float
|
32位 |
|
double
|
32位 |
|
char
|
64位 |
0~65535 |
boolean
|
1位 |
Ture或False |
在Java程序中,存储字符的数据类型是字符型,用字母char表示。字符型通常用于表示单个的字符,字符常量必须使用单引号“'”括起来。Java语言使用16位的Unicode编码集作为编码方式,而Unicode被设计成支持世界上所有书面语言的字符,包括中文字符,所以Java程序支持各种语言的字符。
Java中的字符型常量有如下3种表示形式。
实例004 输出字符型变量的值
源码路径 \daima\3\Zifu.java 视频路径 \视频\实例\第3章\004
实例文件Zifu.java的主要代码如下所示。
public class Zifu { public static void main(String args[]) { char ch1='\u0001'; //赋值ch1 char ch2='\u0394'; //赋值ch2 char ch3='\uffff'; //赋值ch2 System.out.println(ch1); //输出ch1 System.out.println(ch2); //输出ch2 System.out.println(ch3); //输出ch2 } }
范例007:输出文本字符 源码路径:光盘\演练范例\007\ 视频路径:光盘\演练范例\007\ 范例008:自动类型转换/强制类型转换 源码路径:光盘\演练范例\008\ 视频路径:光盘\演练范例\008\
执行后的效果如图3-3所示。
图3-3 执行效果
上述实例的执行效果是只显示了一些图形,为什么呢?这是使用Unicode码表示的结果。Unicode所定义的国际化字符集能表示今天为止的所有字符集,如拉丁文、希腊语等几十种语言,大部分字符我们是看不懂的,用户不需要掌握。读者请注意,在执行的结果处有一个问号,它有可能是真的问号,有可能是不能显示的符号。但是为了正常地输出这些符号,该怎么处理?Java提供了转义字符,以“\”开头,十六进制计数法用“\”和“U”字开头,后面跟着十六进制数字。常用的转义字符如表3-2所示。
表3-2 转义字符
转义字符 |
描 述 |
---|---|
\0x |
八进制字符 |
\u |
十六进制Unicode字符 |
\’ |
单引号字符 |
\” |
双引号字符 |
\\ |
反斜杠 |
\r |
回车 |
\n |
换行 |
\f |
走纸换页 |
\t |
横向跳格 |
\b |
退格 |
整型是Java语言中常用的数据类型,它是有符号的32位整数数据类型,整型int用在数组、控制语句等多个地方,Java系统会把byte和short自动提升为整型int。
类型int是最常用的整数类型,在通常情况下,一个Java整数常量默认就是int类型。对于初学者来说,需要特别注意如下两点。
(1)如果直接将一个较小的整数常量(在byte或short类型的范围内)赋给一个byte或short
变量,系统会自动把这个整数常量当成byte或者short类型来处理。
(2)如果使用一个巨大的整数常量(超出了int类型的表述范围)时,Java不会自动把这个整数常量当成long类型来处理。如果希望系统把一个整数常量当成long类型来处理,应在这个整数常量后增加l或者L作为后缀。通常推荐使用L,因为l很容易跟l混淆。
实例005 通过整型类型计算正方形和三角形的面积
源码路径 \daima\3\zheng.java 视频路径 \视频\实例\第3章\005
实例文件zheng.java的主要代码如下所示。
public class Zheng //定义类Zheng { public static void main(String args[]) { //正方形面积 int b=7; //赋值b int L=b*4; //赋值L int s=b*b; //赋值S System.out.println("正方形的周长为"+L); //输出周长 System.out.println("正方形的面积为"+s); //输出面积 //三角形面积 int a3=5,b3=7; //赋值a3和b3 int s3=a3*b3/2; //计算面积 System.out.println("三角形的面积为"+s3); //输出面积 } }
范例009:演示int类型的提升处理 源码路径:光盘\演练范例\009\ 视频路径:光盘\演练范例\009\ 范例010:自动提升数据类型 源码路径:光盘\演练范例\010\ 视频路径:光盘\演练范例\010\
执行后的效果如图3-4所示。
图3-4 执行效果
其实我们可以把一个较小的整数常量(在int类型的表述范围以内)直接赋给一个long类型的变量,这并不因为Java会把这个较小的整数常量当成long类型来处理。Java依然会把这个整数常量当成int类型来处理,只是这个int类型的值会完成自动类型转换到long类型。
整型在计算机中肯定是不够用的,这时候就出现了浮点型数据。浮点数据用来表示Java中的浮点数,浮点类型数据表示有小数部分的数字,总共有两种类型:单精度浮点型(float)和双精度浮点型(double),它们的取值范围比整型大许多,下面对其进行讲解。
1.单精度浮点型——float
单精度浮点型是专指占用32位存储空间的单精度数据类型,在编程过程中,当需要小数部分且对精度要求不高时,一般使用单精度浮点型,这种数据类型很少用,不详细讲解。
2.双精度浮点型——double
双精度浮点类型占用64位存储空间,在计算中占有很大的比重,保证数值的准确。
double类型代表双精度浮点数,float代表单精度浮点数。一个double类型的数值占8个字节,64位,一个float类型的数值占4个字节,32位。更加详细地说,Java语言的浮点数有两种表示形式。
(1)十进制数形式:这种形式就是平常简单的浮点数,例如5.12,512.0,.512。浮点数必须包含一个小数点,否则会被当成int类型处理。
(2)科学记数法形式:例如5.12e2(即5.12×10 2 ),5.12E2(也是5.12×10 2 )。必须指出的是,只有浮点类型的数值才可以使用科学计数形式表示。例如51200是一个int类型的值,但512E2则是浮点型的值。
Java语言的浮点型默认是double型,如果希望Java把一个浮点型值当成float处理,应该在这个浮点型值后紧跟f或F。例如“5.12”代表的是一个double型的常量,它占64位的内存空间;5.12f或者5.12F才表示一个float型的常量,占32位的内存空间。当然,也可以在一个浮点数后添加d或D后缀,强制指定是double类型,但通常没必要。
因为Java浮点数使用二进制数据的科学记数法来表示浮点数,因此可能不能精确表示一个浮点数,例如我们把5.2345556f值赋给一个float类型的变量,接着输出这个变量时看到这个变量的值已经发生了改变。如果使用double类型的浮点数则比float类型的浮点数会更加精确,但如果浮点数的精度足够高(小数点后的数字很多时),依然可能发生这种情况。如果开发者需要精确保存一个浮点数,可以考虑使用BigDecimal类。
实例006 使用浮点型计算圆的面积
源码路径 \daima\3\Syuan.java 视频路径 \视频\实例\第3章\006
实例文件Syuan.java的主要代码如下所示。
public class Syuan { public static void main(String args[]) { double r=45.0324; //赋值r final double PI=3.1415926; //PI double area=PI*r*r; //面积计算 //输出面积 System.out.println("圆的面积是:S="+area); } }
范例011:演示不同浮点型的用法 源码路径:光盘\演练范例\011\ 视频路径:光盘\演练范例\011\ 范例012:实现自动类型转换 源码路径:光盘\演练范例\012\ 视频路径:光盘\演练范例\012\
执行后的效果如图3-5所示。
图3-5 执行效果
布尔类型是一种表示逻辑值的简单类型,它的值只能是真或假这两个值中的一个。它是所有的诸如a<b这样的关系运算的返回类型。Java中的布尔型对应只有一个——boolean类型,用于表示逻辑上的“真”或“假”。boolean类型的值只能是true或false,不能用0或者非0来代表。布尔类型在if、for等控制语句的条件表达式中比较常见,在Java语言中使用boolean型变量的控制流程主要有下面的几种。
实例007 复制布尔型变量并输出结果
源码路径 \daima\3\Bugu.java 视频路径 \视频\实例\第3章\007
实例文件Bugu.java的主要代码如下所示。
public class Bugu //定义类 { public static void main(String args[]) { boolean b; //定义b b = false; //赋值b System.out.println("b is " + b); b = true; //赋值b System.out.println("b is " + b); if(b)System.out.println("This is executed."); b = false; //赋值b if(b)System.out.println("This is not executed."); System.out.println("10 > 9 is " +(10 > 9)); } }
范例013:定义两个布尔类型变量并赋值 源码路径:光盘\演练范例\013\ 视频路径:光盘\演练范例\013\ 范例014:实现强制类型转换 源码路径:光盘\演练范例\014\ 视频路径:光盘\演练范例\014\
执行后的效果如图3-6所示。
图3-6 执行效果