数据运算
数据类型
在程序设计中,数据是程序的组成部分,也是程序处理的对象,不同的数据有不同的数据类型,同时不同的数据类型也有不同的数据结构、不同的存储方式,并且参与的运算也不相同。
因为在写程序的过程中时时刻刻就需要使用的各种数据类型,因此熟练的掌握各种数据类型非常的重要。
Java中的数据类型分为两个大类:基本数据类型 和 引用数据类型。
而这两个大类之下又包含若干个小类。
基本数据类型
数据类型 | 关键字 | 占用字节数 | 默认值 | 取值范围 |
---|---|---|---|---|
布尔型 | boolean | 1 | false | true,false |
字节型 | byte | 1 | 0 | − 2 7 -2^{7} −27~ 2 7 2^{7} 27 |
短整型 | short | 2 | 0 | − 2 15 -2^{15} −215~ 2 15 2^{15} 215 |
整型 | int | 4 | 0 | − 2 31 -2^{31} −231~ 2 31 2^{31} 231 |
长整型 | long | 8 | 0L | − 2 63 -2^{63} −263~ 2 63 2^{63} 263 |
单精度浮点型 | float | 4 | 0F | 1.4X 1 0 − 45 10^{-45} 10−45~3.4X 1 0 38 10^{38} 1038 |
双精度型 | double | 8 | 0D | 4.9X 1 0 − 324 10^{-324} 10−324~1.8X 1 0 308 10^{308} 10308 |
字符型 | char | 2 | ‘\u0000’ | ‘\u0000’~’\uffff’ |
如上表,这是Java中基本数据类型的名称、关键字、占用字节数、默认值和取值范围。
-
布尔型
布尔型是用来表示逻辑型数据
的数据类型,它的变量或常量的取值只有true
和false
两个。其中,true
表示真
,flase
表示假
。 -
整数型 - byte、short、int、long
这四种类型都属于整数型的范围,它们的主要不同点是取值范围的不同,也就是说它们在内存中所占用的字节长度是不同的,初始化时,不能在相应的类型下赋给它们超出取值范围的数,超出后会造成数值溢出。 -
浮点数型 - float、double
这两种都是属于浮点数类型的范围,float
是单精度实数
,而double
是双精度实数
。它们分别占用了4和8个字节,也是取值范围不相同。 -
字符型 - char
字符型是用Unicode
编码表达的字符,Unicode编码是国际标准编码方案,这样Java处理多语种的能力大大加强。
引用数据类型
Java中的引用数据类型是数组(Array)
、类(class)
和接口(interface)
。
- 数组
数组是一种有序数据的集合,其中所包含的数据要具有相同的数据类型,可以使用一个统一的数组名和下标名来唯一的定位数组中的一个数据元素。-
一维数组的定义方式:
type
arrayName[]
;
或者
type
[]
arrayName
;其中,type可以为Java中的任意数据类型,包括基本类型和引用数据类型,数组名
arrayName
为一个合法的标识符,[]
指明该变量是一个数据类型变量,它可以放到数组名的前面或者后面,通常建议放在数组名的前面。例如:
int[] goldsunC
;
这句话声明了一个整型数组,数组中的每个元素都应该为int
。(要注意的是,和C、C++不同,Java在数组中的定义并不为数组元素分配内存,因此
[]
中不用指出数组中元素的个数,即数组长度) -
分配内存
为数组分配内存空间的时候,需要用到new
运算符,像创造一个新的对象一样,其格式如下:
arrayName
=
new
type[arraySize]
;
其中,arraySize
用来指明数组的长度。如:
score
=
newint[100]
;
它就为一个整型的数组分配了100个int数占用的内存空间。
通常这两部分(声明和分配内存)可以合在一起,格式如下:
type
arrayName
=
newtype[arraySize]
;
如:
int[] score = new int[3]
(在给数组分配空间的同时,数组中的每一个元素都会被自动赋一个默认值。) -
数组的引用
当给定义一个数组且分配过内存过后,就可以对其进行引用,引用方式为:
arrayName[index]
其中,index为数组的下标,它可以是整数或者表达式,下标从0开始。 -
数组初始化
数组初始化有两种方法:- 显式的给每一个元素赋值。
- 在数组定义的同时初始化。如:
int[] a = {1,2,3,4,5};
-
多维数组的定义方式
使用如下方式定义一个二维数组:
type arrayName[][];
或着
type[][] arrayName;
定义方法与一维数组类似,由此可以递推更高维的数组定义方法。 -
多维数组的其它概念
在引用及初始化方法,多维数组和一维数组类似,如下方式定义并分配空间给一个二维数组:
int[][] array = new int[2][3];
也可以这样:
int[][] array = new int[2][3];
array[0] = new int[3];
array[1] = new int[3];
两种方法实现效果一样。
引用的方法和一维数组相同,可以用整数或者表达式,下标从0开始。
初始化方法除挨个赋值外也可以:
int[][] array = {{1,2,3},{2,3,4},{3,4,5}}
- 重要概念
Java中的多维数组是非规则矩阵
的数组,即锯齿状数组
,如何理解呢?如在C++中,你可以这样写:
int array[][] = new int[][4];
这是因为在C++中是规则的矩阵型数组,每一个数组都是MxN的形式,即固定的M行N列。
在Java中可以这样:
int[][] array = new int[3][];
array[0] = new int[1]{1};
array[1] = new int[3]{1,2,3};
array[2] = new int[2]{1,2};
即有M行,但是每一行不一定都有N列。
- 重要概念
-
- 类、接口
类和接口也是引用数据类型,不过概念跟数组不太一样,是面向对象的内容,接下来会依次介绍。