java 是一种强类型编程语言,说明java 程序中用到的所有变量都必须是有明确定义的数据类型。
java 数据类型可以分为基本数据类型 和 引用数据类型。
基本数据类型:
数值类型 :整数类型 (byte、short、int、long) 、浮点类型 (float、double)
字符类型 :char
布尔类型 :boolean
引用数据类型:
类(class) 、数组 、接口(interface)
基本数据类型 和 引用数据类型的差别在于 :基本类型的变量和对象句柄存储在栈内存中,占用大小固定的空间,可以通过变量名直接访问其值;所有的java 对象存储在堆内存中,堆内存是一个运行时的数据区,占用任意大小空间,需要通过储存在栈内存中的对象引用来直接访问其值。
这里先主要介绍基本数据类型。
java 语言中定义了4类、8种基本数据类型。
整数类型:byte、short、int、long
浮点类型:float、double
字符类型:char
布尔类型:boolean
数据类型 | 占内存空间(字节数) | 取值范围 | 默认值 |
byte | 1 | -128~127 | 0 |
short | 2 | -32768~32767 | 0 |
int | 4 | -2147483648~21474881647 | 0 |
long | 8 | -9223372036854775808~9223372036854775807 | 0L |
float | 4 | 1.4E-45~3.4028235E38 | 0.0f |
double | 8 | 4.9E-324~1.7976931348623157E308 | 0.0d |
char | 2 | 'u0000'~'uffff' | 'u0000' |
boolean | 1 | true,flase | flase |
java语言中,基本数据类型占用固定的内存长度,与具体的软硬件平台环境无关。
常量
常量是指在程序执行的过程中,其值不能改变的量。声明常量要用关键字 final 。
说明:
(1) 常量的命名规则是每个字母都大写。
(2) 在执行的过程中如果想对常量重新赋值,编译将会出错。
在java语言中,常量一般分为整型常量、浮点常量、布尔常量、字符常量和字符串常量。
1.整型常量
在java语言中,整型常量可分为以下三种:
(1)十进制整型:十进制整型常量是由0~9组成的数字序列,并且该序列的第一个数字不能是0(单独一个0除外)。
(2)八进制整型:八进制整型常量的第一个数字是0,其后是由0~7组成的数字序列。
(3)十六进制整型:十六进制整型常量是以“0x”或“0X”开头,其后是十六进制数字序列。十六进制的数字序列是由数字0~9和字母A~F组成。
2.浮点常量
浮点常量是指可以含有小数部分的数值常量。根据占用内存的长度不同,浮点常量可以分为单精度浮点常量和双精度浮点常量。单精度常量占4个字符节,在其数字后跟一个f或F,双精度常量占8个字节,在其数字后跟d或D。其中,双精度常量后的d或D可以省略,如果一个浮点常量后没有字母,默认是双精度浮点常量。
浮点常量只能采用十进制表示法,有传统计数法和科学计数法。
(1)传统计数法:由整数部分、小数点和小数部分组成。
(2)科学计数法:当一个数字很大或者很小时,用科学计数法。例如:1.23e3
3.布尔常量
布尔常量只有两个值:true和false .
4.字符常量
字符常量是用一对单引号括起来的单个字符。如'q' ,java中的字符数据是16位无符号数据类型,使用的是Unicode字符集。
5.字符串常量
字符串常量是用双引号括起来的由0个或者更多字符组成的序列,字符串常量里可以包含转义字符。
变量
变量是指在程序执行过程中,其值可以改变的量。变量在程序中起着十分重要的作用。可分为:整型变量、浮点型变量、字符型变量和布尔型变量。
基本数据类型之间的转换
数据类型转换是指常量或变量从一种数据类型转换为另一种数据类型。java中,基本数据类型的转换主要包括两种情况:自动转换和强制类型转换。
1.自动转换
自动转换是指系统自动的转换数据类型,是从低精度的数据向高精度数据的转换。关系如下;
byte-->short-->int-->long-->float-->double
char-->int
注:当数据很大时,当int型和long型向float型转换、long型向double型转换时可能会有精度损失。
2.强制类型转换
强制类型转换是指强制性的将数据的类型进行转换,是从高精度向低精度的转换,需要用到强制类型转换符“(type)”。语法如下:
(目标类型)表达式;
例如:float f = 88.88f;
int x = (int)f; //将float类型强制转换为int类型。