购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.2 数据类型

知识点讲解:光盘:视频\PPT讲解(知识点)\第3章\数据类型.mp4

Java中的数据类型可以分为简单数据类型和复杂数据类型两种。简单数据类型是Java的基础类型,它包括整数类型、浮点类型、字符类型和布尔类型,在本章将重点讲解。复合数据类型由简单数据类型组成,是用户根据自己的需要定义并实现其运算的类型,如类、接口、数组。为了便于读者快速理解,笔者将Java中的数据类型分为了两大类,分别是基本类型和引用类型,具体结构如下所示。

1.基本类型

1)数值类型

(1)浮点数。

(2)整数类型。

(3)字符类型。

(4)布尔类型:Boolean类型。

2.引用类型

(1)类类型。

(2)接口类型。

(3)数组类型。

3.2.1 简单数据类型值的范围

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

3.2.2 字符型

在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

退格

3.2.3 整型

整型是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类型。

3.2.4 浮点型

整型在计算机中肯定是不够用的,这时候就出现了浮点型数据。浮点数据用来表示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 执行效果

3.2.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 执行效果 s6QmzBPn56kVQbMLueY5skD+g0DgO+RJEw8ffKCTAJMre5AnhPHO9TrReztgkkzm

点击中间区域
呼出菜单
上一章
目录
下一章
×