数据类型

什么叫数据类型

数据类型简单的说就是对数据的分类,对数据各自的特点进行类别的划分,划分的每种数据类型都具有区别于其它类型的特征,每一类数据都有相应的特点和操作功能。例如数字类型的就能够进行加减乘除的操作。

在现实生活中,我们通常会对信息进行分类,从而使得我们能很容易的判断某个数据是表示一个百分数还是一个日期,我们通常是通过判断数字是否带“%”,或者是否是一个我们熟悉的“日期格式”。

类似的在程序中,计算机也需要某种方式来判断某个数字是什么类型的。这通常是需要程序员显示来声明某个数据是什么类型的,Java 就是这样的。Java 是一种强类型的语言,凡是使用到的变量,在编译之前一定要被显示的声明。

Java的安全和健壮性部分来自于它是强类型语言这一事实。首先,每个变量有类型,每个表达式有类型,而且每种类型是严格定义的。其次,所有的数值传递,不管是直接的还是通过方法调用经由参数传过去的都要先进行类型相容性的检查。有些语言没有自动强迫进行数据类型相容性的检查或对冲突的类型进行转换的机制。Java编译器对所有的表达式和参数都要进行类型相容性的检查以保证类型是兼容的。任何类型的不匹配都是错误的,在编译器完成编译以前,错误必须被改正。

Java数据类型的分类

Java 里面的数据类型从大的方面分为两类,一是基本数据类型,一是引用类型。基本的JAVA数据类型层次图如下:


Java中的基本数据类型

Java 中的基本数据类型分为八个原始数据类型,原始类型可分为四种:

(1)逻辑型:boolean

(2)文本型:char

(3)整数型:byte、short、int、long

(4)浮点型:float、double

逻辑型 boolean

逻辑值有两种状态,即人们经常使用的“on”和“off” 或“true”和“false”或“yes” 和 “no”,这样的值是用 boolean 类型来表示的。boolean 有两个文字值,即 true 和 false。以下是一个有关 boolean 类型变量的声明和初始化:

boolean truth = true; //声明变量 truth

注意──在整数类型和 boolean 类型之间无转换计算。有些语言(特别值得强调的是 C和 C++)允许将数字值转换成逻辑值(所谓“非零即真”),这在 Java 编程语言中是不允许的;boolean 类型只允许使用 boolean 值(true 或 false)。

文本型 char

char 类型用来表示单个字符。一个char代表一个16-bit无符号的(不分正负的)Unicode 字符,一个 char 字符必须包含在单引号内。

示例:

'a' //表示简单的字符

'1' //用数字也可以表示字符

下面就错了,只能使用单个字符。

'ab' //错误

'12' //错误

  • 什么是 Unicode 编码

Unicode 编码又叫统一码、万国码或单一码,是一种在计算机上使用的字符编码。它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。1990 年开始研发,1994 年正式公布。随着计算机工作能力的增强,Unicode 也在面世以来的十多年里得到普及。

Unicode字符集最多可以识别65535个字符,每个国建的“字母表”的字母都是Unicode表中的一个字符,比如汉字中的“你”字就是Unicode表中的第20320个字符,还包含日文里的片假名、平假名、韩文以及其他语言中的文字。

unicode 的表达如下:

'/u????' 一个 Unicode 字符。????应严格按照四个 16 进制数进行替换。

'/u4F60' 代表中文中的“你”字。

  • Java 中的定义示例

char c = 'a';

char c = '1';

  • 取值范围和默认值

名称

长度

范围

默认值

char

16位

0~216-1

'/u0000'

 

  • Java 里面的转义字符

转义字符是指,用一些普通字符的组合来代替一些特殊字符,由于其组合改变了原来字符表示的含义,因此称为“转义”。常见的转义字符:

/n 回车(/u000a)

/t 水平制表符(/u0009)

/b 空格(/u0008)

/r 换行(/u000d)

/f 换页(/u000c)

/' 单引号(/u0027)

/" 双引号(/u0022)

// 反斜杠(/u005c)


整数型 byte、short、int、long
  • byte:字节型
  • short:短整型
  • int:整型
  • long:长整型

在 Java 中,整数型的值都是带符号的数字,可以用十进制、八进制和十六进制来表示。所谓几进制,就是满多少就进位的意思,如十进制表示逢十进位,八进制就表示逢八进位。示例:

2:十进制的 2

077:首位的0表示这个一个8进制的数值,相当于十进制的 63,计算公式:7*8+7=63

0x7C:首位的0x表示这个一个16进制的数值,相当于十进制的124,计算公式:7*16+12=124

  • . Java 中的定义示例

示例:byte bt = 5;

表示在 Java 中定义一个变量 bt,类型是 byte 类型,值是 5

同理可以定义其它的类型:比如:

short sh = 5;

int i = 5;

long lon = 5;

这些都是可以的,如果要明确表示是 long 型的值,可以在后面直接跟一个字母“L”或者“l”。L表示一个 long 值。

也就是写成:long abc4 =5L;

请注意:

  • 在 Java 编程语言中使用大写或小写 L 同样都是有效的,但由于小写 l 与数字1 容易混淆,因而,尽量不要使用小写。
  • 整数型的值,如果没有特别指明,默认是 int 型。
  • 取值范围和默认值

取值范围的表示是按 Java 编程语言规范定义的且不依赖于平台

名称

长度

范围

默认值

byte

8位

-27~27-1

0

short

16位

-215~215-1

0

int

32位

-231~231-1

0

long

64位

-263~263-1

0L

 

浮点型 float、double

Java 用浮点型来表示实数,简单地说就是带小数的数据。

用关键字float 或 double 来定义浮点类型,如果一个数字包括小数点或指数部分,或者在数字后带有字母 F 或 f(float)、D 或 d(double),则该数字文字为浮点型的。

示例:

12.3 //简单的浮点型数据

12.3E10 //一个大浮点数据,E或e表示指数值,相当于12.3*1010

  • Java 中的定义示例

如下定义都是可以的:

float f1 = 3.14F;

float f2 = 3.14f;

double d1 = 3.14;

double d2 = 3.14D;

double abc = 5.6d;

  • 提示

(1)浮点型的值,如果没有特别指,默认是 double 型的。

(2)定义 float 型的时候,一定要指明是 float 型的,可以通过在数字后面添加“F”或者“f”来表示。

(3)定义 double 型的时候,可以不用指明,默认就是 double 型的,也可以通过在数字后面添加“D”或者“d”来表示。

  • 取值范围和默认值

名称

长度

范围

默认值

float

32位

 

0.0f

double

64位

 

0

 

Java 技术规范的浮点数的格式是由电力电子工程师学会(IEEE)754 定义的,是独立于平台的。可以通过 Float.MAX_VALUE 和 Float.MIN_VALUE 取得 Float 的最大最小值;可以通过 Double.MAX_VALUE 和 Double.MIN_VALUE 来取得 Double 的最大最小值。

特别介绍:字符串型 String

字符型只能表示一个字符,那么多个字符怎么表示呢?

Java 中使用 String 这个类来表示多个字符,表示方式是用双引号把要表示的字符串引起来,字符串里面的字符数量是任意多个。字符本身符合 Unicode 标准, char 类型的反斜线符号(转义字符)适用于 String。与 C 和 C++不同,String 不能用/0作为结束。String 的文字应用双引号封闭,如下所示:

“The quick brown fox jumped over the lazy dog.”

char 和 String 类型变量的声明和初始化如下所示:

char ch = 'A'; // 声明并初始化一个字符变量
char ch1,ch2 ; //声明两个字符变量
//声明两个字符串变量并初始化它们
String greeting = "Good Morning !! /n" ; 
String err_msg = "Record Not Found !" ; 
String str1,str2 ; // 声明两个字符串变量 
str1 = "12abc"; //基本的字符串型
str2 = ""; //表示空串


注意:

(1)String不是原始的数据类型,而是一个类(class)。

(2)String 包含的字符数量是任意多个,而字符类型只能是一个。

要特别注意:"a"表示的是字符串,而'a'表示的是字符类型,它们的意义和功能都不同。

(3)String 的默认值是 null。


示例

下列程序显示了如何为整数、浮点数、boolean、字符和 String 类型变量声明和赋值

1. publicclass Assign {
2. publicstaticvoid main(String args []) {
3. int x, y; // 声明 int 变量
4. float z = 3.414f; // 声明并赋值 float
5. double w = 3.1415; // 声明并赋值 double
6. boolean truth = true; // 声明并赋值 boolean
7. char c; // 声明字符变量
8. String str; // 声明 String 字符串
9. String str1 = "bye"; // 声明并赋值 String 变量
10. c = 'A'; // 给字符变量赋值
11. str = "Hi out there!"; // 给 String 变量赋值
12. x = 6;
13. y = 1000; // 给 int 变量赋值
14 ....
15. }
16. }


非法赋值举例:

y = 3.1415926; // 3.1415926 不是一个 int,需要类型转换并且小数位要截掉。

w = 175,000; // 逗号“,” 不能够出现。

truth = 1; // 一个优秀的 C/C++程序员常犯的错误,在 Java 语言中 boolean 型变量只能为 true 或 false。

z = 3.14156; // double 型的值不能赋给 float 变量,需要类型转换。