8. Java语言基础 - 数据类型

创建时间:2022-12-22 00:24
长度:3252
浏览:0
评论:0

Java中数据类型分为两大类: 基本数据类型和引用数据类型

基本数据类型

基本数据类型包含4类8种:

第1类:整数型: byte / short / int / long - 不带小数

第2类:浮点型:float / double。- 带小数

第3类:字符型: char。 - 单个字符

第4类:布尔型 boolean。 - 真和假


数据类型占用实际情况

数据类型字节数取值范围缺省默认值
byte(字节型)1[-27~27-1]、[-128~127]0
short(短整型)2[-215~215-1]、[-32768~32767]0
int (整型)4[-231~231-1]、[-2147483648~2147483647]0
long(长整型)8[-263~263-1]0L
float(单精度)4[-231~231-1]0.0f
double(双精度)8[-263~263-1]0.0
boolean(布尔型)1true、falsefalse
char(字符型)2[0~216-1]、[0~65535]'\u0000'

注意: 上面的缺省默认值是成员变量声明时,未初始值时自动赋值的;局部变量还是需要声明变量并初始化才可使用


字符编码

   对于以上的八种基本数据类型来说,其中七种类型 byte,short,int,long,float,double,boolean计算机表示起来是很容易的,因为这七种类型底层直接就是数字,十进制的数字和二进制之间有固定的转换规则,所以计算机可直接表示和处理。但是大家别忘了,除了以上的七种数据类型之外,还有一种类型叫做字符型 char,这个对于计算机来说表示起来就不是那么容易了,因为字符毕竟是现实世界当中的文字,而文字每个国家又是不同的,计算机是如何表示文字的呢?

   实际上,起初的时候计算机只支持数字,因为计算机最初就是为了科学计算,随着计算机的发展,为了让计算机起到更大的作用,因此我们需要让计算机支持现实世界当中的文字,一些标准制定的协会就制定了字符编码(字符集),字符编码其实就是一张对照表,在这个对照表上描述了某个文字与二进制之间的对应关系。

   最初的时候美国标准协会制定了 ASCII 码,ASCII(American Standard Code for Information Interchange:美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是现今最通用的信息交换标准,并等同于国际标准 ISO/IEC 646。ASCII 码采用 1 个字节编码,1 个字节可以表示 256 种不同的形式(前面说过了),对于英文来说这个足够了,因为英文单词就是由 26 个英文字母拼凑而成,大小写全部才 52 个,再加上数字和标点符号也不会超过 256 个。但 ASCII 码对于中文来说那就不够了,因为汉字不止 256个。

常见的 ASCII 码需要大家能够记住几个,在 ASCII 码中规定'a'对应 97,'b'对应 98,以此类推,'A'对应 65,'B'对应 66,以此类推,'0'字符对应 48,'1'字符对应 49,以此类推,这些常见的编码还是需要大家记住的。

   在字符编码当中,有这样两个常见的术语需要大家了解一下:编码和解码,它们都是什么,我们拿字符'a'来解释一下:'a'是 97,97 对应的二进制是 01100001,那么从'a'到二进制 01100001的转换过程称为编码,从二进制 01100001 到'a'的转换过程称为解码。大家一定要注意:编码和解码要采用同一种字符编码方式(要采用同一个对照表),不然会出现乱码。这也是乱码出现的本质原因。

   随着计算机的不断发展,为了让计算机支持更多国家的语言,国际标准组织又制定了ISO-8859-1 字符集,又被称为 latin-1,向上兼容 ASCII 码,仍不支持中文,主要支持西欧语言。再后来,计算机慢慢的开始支持简体中文、繁体中文、日本语、朝鲜语等,其中支持简体中文的字符集包括:GB2312 、GBK 、GB18030,它们的容量大小不同,其中 GB2312 < GBK < GB18030。支持繁体中文的是大五码 Big5 等。后来,在上世纪 90 年代初,国际组织制定了一种字符编码方式,叫做 Unicode 编码,这种编码方式统一了全球所有国家的文字,具体的实现包括:UTF-8,UTF-16,UTF-32 等。

Java 为了国际化,为了支持所有国家的语言,所以 Java 采用的编码方式为 Unicode 编码。例如字符'中'对应的 Unicode 码是'\u4e2d'。在实际开发中几乎所有的团队都会使用 Unicode 编码方式,因为这种方式更通用,兼容性更好。

通过本小节的学习,大家需要理解字符编码是什么,有什么作用,常见的 ASCII 码要知道一些,另外要理解什么是编码,什么是解码,要知道编码和解码采用的字符编码方式不同时会出现乱码,还要知道国际通用的编码方式为 ISO-8859-1,支持简体中文的编码方式包括GB2312、GBK、GB18030,而 Java 采用 unicode 编码,目前在实际的开发中大部分团队都会选择 UTF-8 的编码方式。


字符型详解

Java中使用\来转义字符;如\n \r. \t等,这些都是可以使用char类型的,也就是当做一个字符来处理


整数型详解

在Java中,整数型字面量被当做int处理,也就是说在程序中只要遇到整数型的数字,该数字默认会当作int类型处理; 如果想表示long类型,需要在字面量后面添加字母L/l, 大写的L和小写的l都可以;建议用大写L

public class HelloWorld {
  public static void main(String[] args) {
    long l = 10; 
 }
}
//  安装int类型处理, l 是long类型;编译通过;int占用4个字节,long占用8个字节,
// 在Java中小容量可以直接赋值给大容量,这种过程被称为自动类型转换
public class HelloWorld {
  public static void main(String[] args) {
    long l = 2147483648;
  }
}
// 上面程序报错
// 默认情况下当做int类型处理,超出范围了;只在在字面量后面加字L即可
byte b = 50; // 编译通过,在Java中,如果一个值没有超过类型值的话,是可以直接赋值给变量的


浮点型详解

在Java中,所有的浮点型字面值都被当做double类型来处理,要想字面值当做float类型处理,需要在字面量后面加F/f


Boolean类型

在java中boolean类型只有两个值:true / false;

底层存储还是0 1,所以只要占用1个字节即可


强制类型转换

long l = (byte)25;

在字面量前面加上要转换的类型; 但要注意的是,大容易转换成小容量时,强制转换在运行阶段可能会损失精度。


基本数据类型转换规则

1. 8种数据类型当中除布尔类型之外的7种类型都可以互相转换

2. 小容易向大容易转换,从量从小到大的排序。

       byte -> short -> int  ->  long  -> float -> double ->. char

3. 任务浮点类型不管占用多少个字节,都比整数型容量大

4. 大容量转换成小容量,叫做强制类型转换,需要加强制类型转换符,程序才能通过,但运行阶段可能损失精度

5. 当整数字面值没有超过byte, short, char的取值范围,可以直接赋值给byte,short,char类型的变量

6. byte,short,char混合运算时,各自转换成int类型再做运算。

7. 多种数据类型混合运行,先转换成容量最大的类型再做运算。

评论(共0条)