学习目标
- 掌握常量的定义和分类
- 重点掌握八大基本数据类型
- 必须掌握变量的定义和赋值
- 掌握基本数据类型的自动转换
- 掌握基本数据类型的自动提升
- 掌握基本数据类型的强制转换
提示:以下是本篇文章正文内容,下面案例可供参考
一、常量
常量,程序运行过程中固定不变化的值。
常量分类:
- 字面量: 就表示直接给出的一个值(可以是整数、小数等),也有人称之为直接量。如整数常量1,2,3,小数常量3.14等。
- 使用final定义的变量 用final修饰的成员变量表示常量,只能被赋值一次,赋值后值无法改变
二、数据类型
数据类型分为基本数据类型和引用数据类型,注意:String是引用类型,不是基本数据类型
人为地把8个二进制位称为1个字节。(1 byte = 8 二进制位)
1个二进制位 可以存储 0 或者 1
2个二进制位 可以存储 00 或者 01 或者 10 或者 11
3个二进制位 可以存储 000 / 001 / 010 / 011 / 100 / 101 / 110 / 111
...
1字节 = 8 个二进制位 可以存储2的8次方个数, 范围是[0,255] , 共256个数,
如果都是表示整数,范围是[0,255],如果也可以表示负数,那么把256个数均分,
一半是[-128,-1] ,一半是[0,127]
8种基本数据数据类型的范围和占内存大小(了解):
NO | 数据类型 | 栈内存字节数 | 所能表示的数据范围 |
---|---|---|---|
1 | byte | 1 | -128 ~ 127 |
2 | short | 2 | -32768 ~ 32767 |
3 | int | 4 | -231 ~ 231-1 约21亿 |
4 | long | 8 | -263 ~ -263 - 1 |
5 | float | 4 | -3.4 x 1038 ~ 3.4 x 1038 |
6 | double | 8 | -1.7 x 10308 ~ 1.7 x 10308 |
7 | char | 2 | 0 ~ 216 - 1 |
8 | boolean | 1位 | true 、 false |
提醒:开发者需要明确记住每个类型所占字节数(内存大小)。
整数类型常量
在 java 中,没有被定义的整数类型的常量JVM默认使用 int 类型来存储 。
public class IntType {
public static void main (String[] args) {
// 控制台输出10,这个10是一个常量,默认使用int存储。
System.out.println(10);
// 控制台输出20,这个20如果想以long类型存储,需要加L
System.out.println(20L);
}
}
所以,如果要存储long类型常量,要加L或者l,建议加L。常用的整数类型是int和long,byte和short基本不用。
小数类型常量
在 java 中,没有被定义的小数类型的常量JVM默认使用 double 类型来存储 。
public class DoubleType {
public static void main (String[] args) {
// 控制台输出3.14,这个3.14是一个小数常量,默认使用double存储。
System.out.println(3.14);
// float类型常量,使用F/f后缀
System.out.println(3.14f);
}
}
如果要存储 float 类型常量,要加f或者F。
float类型又被称作单精度类型,尾数可以精确到6-7位有效数字,在很多情况下,float类型的精度很难满足需求,double更常用,double表示小数的数值精度是float类型的两倍,又被称作双精度,绝大部分应用程序都采用double类型。尾数可以精确到15-16位有效数字.
不管是float 类型和double类型在有效数字内都存在精确问题。
// float 类型只能精确到6-7,
// 其中第六位是一定可以精确到的,第7可能精确到,也可能精确不到。
System.out.println(3.141592653f); // 其结果为 3.1415927
所以,实际开发过程中,小数类型一定要在有限数字范围内使用。
字符类型常量
字符表示Unicode(万国码)编码表中的每一个符号,每个符号使用单引号引起来,其中前128个符号和ASCII表相同,如下图。
这张表要记住的几个符号,A在码表的顺序是65,a在码表的顺序是97。
public class CharType {
public static void main(String[] args) {
char x = 65;
char y = 97;
System.out.println(x); // 结果是 A
System.out.println(y); // 结果是 a
}
}
布尔类型常量
boolean 类型只有两个值,true 和 false , 在未来的开发中用于逻辑判断。
字符串类型
所谓字符串就是多个字符合在一起,使用双引号引起来。例如 : 我们在开发中要输出一个用户的名字就可以使用字符串了,因为一个用户的名字是由多个字符构成的。
public class _05_Operation {
public static void main(String[] args) {
String name = "张三";
System.out.println(name);
}
}
注意:字符串类型不是八大基本类型
不同数据类型的常量:
- 整数常量,所有整数,如1、2、3、100、200等
- 小数常量,所有小数,如1.2、2.7、3.14等
- 字符常量,0~65535之间的整数或用单引号括起来的符号如,‘A’、‘a’、‘龙’ 等
- 布尔常量,只有true和false,分别表示对与错
- 字符串常量,使用双引号括起来的内容如:“HelloWorld”、“张三”等
三、变量
变量指在程序运行过程中,值可以发生变化的量。
变量表示一个存储空间,可用来存放某一类型的常量,没有固定值,并可以重复使用。变量是内存中一块区域,可以往该区域存储数据,修改里面的数据,也可以获取里面的数据。
变量声明的语法:
数据类型 变量名 [= 初始值];
变量的特点
-
占据着内存中的某一块存储区域
-
该区域有自己的名称(变量名)和类型(数据类型)
-
可以被重复使用
-
该区域的数据可以在同一类型范围内不断变化
使用变量注意:
-
变量必须先声明,并且初始化后才能使用
-
定义变量必须有数据类型
-
变量从开始定义到所在的花括号结束之内可以使用,离开花括号就不能使用了
-
同一作用域内,变量名不能重复定义
四、基本数据类型转换
自动类型转换
自动类型转换,也称为“隐式类型转换,就是把范围小的数据类型直接转换成范围大的数据类型。
- 转换规则:byte、short、char—>int—>long—>float—>double
- 注意事项:byte、short、char相互之间不转换,他们参与运算首先转换为int类型
自动类型提升
当一个算术表达式中,包含多个基本数据类型的常量或变量(boolean除外)时,整个算术表达式的结果类型将在出现自动提升,其最后的结果就是内存占用大的数据类型
规则:
-
所有的byte、short、char类型被自动提升到int类型,再参与运算
-
整个表达式的最终结果类型,被提升到表达式中类型最高的类型
强转类型转换
强制类型转换,也称为“显式类型转换”,就是把范围大的数据类型强制转换成范围小的数据类型。
注意: 一般情况下不建议使用强转,因为强转有可能损失精度