第1章  Java语言基础

  • 1.2基本数据类型
  • 1.2.1整数类型
  • 1.2.2浮点型
  • 1.2.3字符型
  • 1.2.4布尔型


1.2基本数据类型

  Java语言的数据类型是相当丰富的,除了基本数据类型【布尔型(boolean)、字符型(char)、字节型(byte)、短整型(short)、整型(int)、长整型(long)、单精度(float)、双精度(double)】以外,还有面向对象特有的复合数据类型【数组(array)、接口(interface)与类(class)】。
  数据所占存储空间的大小是以字节为单位的。不同基本数据类型的关键字、所占的字节数及数据范围都有明显的差异,具体如下表所示:

数据类型

类型符号

所占字节

表示范围

变量默认值

字节型

byte

1

-128 ~ 127

0

短整型

short

2

-32768 ~ 32767

0

整型

int

4

-2 147 483 648 ~ 2 147 483 647

0

长整型

long

8

- 9 223 372 036 854 775 808 ~ 9 223 372 036 854 775 807

0L

单精度

float

4

-3.4 E 38 ~ 3.4 E 38

0.0F

双精度

double

8

-1.7 E 308 ~ 1.7 E 308

0.0

字符号

char

2

0 ~ 65 535

'\000’空字符

布尔型

boolean

1

布尔值只能是true或false

flase

1.2.1整数类型

  Java定义了4个整数(不带小数点的数)类型:字节型(byte)、短整型(short)、整型(int)、长整型(long)。这些都是有符号的值,即正数或负数。Java不支持仅仅是正的无符号的整数。
  Java虚拟机中,整数类型的长度实际上并不表示它占用的存储空间,而是该类变量所能表达的最大二进制位数。
  Java语言里,整型数的表达有3种形式:

  • 十进制整数:这是日常生活中使用最多的,如12、-48、25等。
  • 八进制整数:以0(零)开头的数,如0125表示十进制数85,-016表示十进制数-14。
  • 十六进制整数:以0x或0X开头,如0x 124表示十进制数292,-0X15表示十进制数-21。

  1.字节型
  最小的整数类型是字节型,它是有符号的8位类型,数值范围是-128~127。处理网络或文件数据流时,字节类型的变量特别有用。
  使用byte这个关键字可定义字节变量。例如,下面定义了两个byte变量:a1和a2。byte a1, a2;
  2.短整型
  Short是有符号的16位类型,数值范围是-32 768~32 767。因为它被定义为高字节优先,因而Java中较少使用。下面是声明Short变量的一些例子:short m1;  short s;
  3.整型
  整型(int)是Java中最常用的整数类型,它是有符号的32位类型,数值范围是-2 147 483 648 ~ 2 147 483 647。int类型的变量通常可被用来控制循环及做数组的下标。
  4.长整型
  长整型(long)所表达的数值范围在所有的整型中最广,一般在超出整型的范围时使用长整型。但是,在给长整型变量赋以超出整型数值范围以外的数时,必须在值后加大写L或者小写的 l 。例如:

•  {  long long1=147483634;
      long long2=2147483648l;(最后面不是1,而是小写 l )
      long long3=2547483648L;
      long long4=2547483657;  }

  如前所述,整型所能表达的最大的数是2 147 483 647,上例中,把整型数147483634赋给能表达更长的数的 long1时是正确的。如果想把比2 147 483 647更大的数赋给一个Iong型的变量,必须在这个数后面加上字母l或者L,所以long2和long3也赋值成功。long4行编译时会出错,是因为试图把一个比2 147 483 647更大的数赋给long4,而后面没有加L。

1.2.2浮点型

  浮点型的数用来表达带小数的数,且可满足对精度与准确性有一定要求的科学应用。浮点数的表达有两种形式:

  • 十进制数形式:由数字和小数点组成,如0.8544、9.98、2.57等。
  • 科学计数法或指数形式:如1.23e3或1.23E3表示1.23x103.其中,e或E之前必须是数字,且e或E后面的数必须为整数。又如:2.1894e9表示2.1894x109

  1.单精度浮点型
  单精度浮点型(float)专指占用32位存储空间的单精度值。给单精度的变量赋以带小数的初值时必须在数值后加f或者F。
  单精度在一些处理器上比双精度快,且只占用双精度一半的空间。当需要小数部分并且对精度的要求不高时,单精度浮点型数据是可行的。例如,当表示货币的元和分时,单精度浮点型是可行的。以下是声明单精度浮点型变量的例子:
   float me_money, temperaturel, f12;
  2.双精度浮点型
  双精度型浮点数占用64位的存储空间,它可以充分满足人们对精度的要求,是科学计算中广为使用的。例如,数学函数sin()、cos()和sqrt()均返回双精度的值。当需要保持多次反复迭代的计算的精确性时,或在操作值是很大的数字时,双精度型是最好的选择。给双精度浮点数赋值时可以在后面加上字母d或者D。

1.2.3字符型

  在Java语言中,char是用于存储单字符的数据类型。Java使用Unicode编码代表字符,该编码由16位二进制构成,所以Unicode字符集比ASCII字符集大得多。Java中每个字符char都占16位,即双字节。该编码定义的国际化字符集几乎能表示人类语言中所有的字符集。它是几十种字符集的统一,如简体中文、繁体中文、拉丁文、阿拉伯语、日文片假名、英文等。Java中的字符表示形式有4种:

  •   (1)包括在单引号之内的单个字符,如‘A’、‘n’ 等。
  •   (2)用单引号括起来的八进制 Unicode字符,形式为‘\ddd’, 其中d的范围是0~7,如‘\125’。
  •   (3)用单引号括起来的十六进制 Unicode字符,形式为‘\uxxxx’, 其中4位x的范围是0-F。它可以表示全部 Unicode字符内容如‘\u283d’。
  •   (4)Java字符集中还包括一些不能显示的控制字符,可以通过转义字符来表示,如表所示:

转义字符

功能

Unicode码

\ b

退格

\u0008

\ t

水平制表

\u0009

\ n

换行

\u000a

\ f

换页

\u000c

\ r

回车

\u000d

  char 又是一种特殊的整数类型,没有负数,其范围是 0~65 536,它们可以被转换为整数并可进行加、减之类的整数运算。例如:

package Test;

public class Char_C {
    public static void main(String[] args) {
        char ch1='A';char ch2=68;
        System.out.println(ch1+6);
        System.out.println(ch2);
    }
}

  运行结果:

D:\Java\jdk-13.0.2\bin\java.exe "-javaagent:D:\IntelliJ IDEA Edition 2021.2.3\lib\idea_rt.jar=53127:D:\IntelliJ IDEA Edition 2021.2.3\bin" -Dfile.encoding=UTF-8 -classpath "D:\IDEA Workspace\out\production\IDEA Workspace" Test.Char_C
71
D

进程已结束,退出代码为 0

  【程序解析】程序第4行和第5行分别输出71和字母D。ch1在参与算术运算时被自动提升为int类型,同样表达式chl+6的结果也是整型,其中字母A在ASCII字符集 ( Unicode也一样) 中编码为65,所以A进行加法运算后得到71。而ch2编码为68,其对应的字母就是D。此外 String 关键字可以用来说明字符串类型,将在后文中有所涉及。例如:
  String sx1=“my”;

1.2.4布尔型

  布尔型 ( boolean ) 的数据只有两个值 true (逻辑真)和 false (逻辑假),分别表示两种逻辑状态,和C/C++不同的是,他们不和任何数值对应。例如:

  • boolean bo1;
  • boolean bo2=true;
  • boolean b1,b2=false;