Java基础学习(四)---- 常量、变量、数据类型
【备注】
陆续更新,感兴趣可以留意一下
一、常量和变量
1.常量
1.概述
指在Java程序运行期间固定不变
的量
2.分类
类型 | 含义 | 举例 |
---|---|---|
整数常量 | 所有整数 | -1,0, 1 |
小数常量 | 所有小数 | -9.9,-0.1,7.62 |
字符常量 | 单引号引起来,只能写一个字符,且必须有内容 |
‘C’,‘我’ |
字符串常量 | 双引号引起来,可以有多个字符,也可以不写 | “CSDN”,”你好” |
布尔型常量 | 只有两个值 | true,false |
空常量 | 只有一个值 | null |
3.常量使用实例
public class Constant {
public static void main(String[] args) {
System.out.print("整数常量:");
System.out.println(15);
System.out.println("-------------------");
System.out.print("小数常量:");
System.out.println(-5.6);
System.out.println("-------------------");
System.out.print("字符常量:");
System.out.println('C');
System.out.println("-------------------");
System.out.print("字符串常量:");
System.out.println("CSDN");
System.out.println("-------------------");
System.out.print("布尔型常量:");
System.out.println(true);
System.out.println("-------------------");
System.out.print("空常量:");
System.out.println("“null”不能直接打印");
}
}
2.变量
1.概述
常量是固定不变的量,那么在程序中可以变化的量
称为变量。
Java中要求一个变量每次只能保存一个数据,必须要明确保存的数据类型
2.变量的定义格式(两种)
(1)数据类型 变量名称;//创建了一个变量
int a;
变量名称 = 数据值;//赋值,将右边的数据值,赋值给左边的变量
a=10;
(2)数据类型 变量名称 = 数据值;//在创建一个变量的同时,立刻放入指定的数据值
int a = 10;
3.注意事项 |
---|
(1)如果创建多个变量,变量名称不可以重复 |
(2)对于float和long来说字母后缀F和L一定要配套使用 |
(3)如果没有进行赋值的变量,不能直接使用,一定要赋值之后才可以使用 |
(4)变量使用不能超作用域范围 |
(5)可以通过一个语句创建多个变量,但是不推荐 |
二、数据类型
1.基本数据类型
数据类型 | 关键字 | 长度 | 取值范围 |
---|---|---|---|
字节型 | byte | 8位 | -128~127 |
短整型 | short | 16位 | -32768~32767 |
整型 | int(默认) | 32位 | -231~231-1 |
长整型 | long | 64位 | -263~263-1 |
单精度浮点数 | float | 32位 | 1.4e-45f~3.4028235e+38f |
双精度浮点数 | double(默认) | 64位 | 4.9e-324~1.797693e+308 |
字符型 | char | 16位 | 0~65535 |
布尔类型 | boolean | 8位 | true、false |
2.引用数据类型
- 字符串
- 数组
- 类
- 接口
- lambda
3.注意事项
字符串不是基本数据类型,而是引用数据类型 |
---|
浮点型可能只是一个近似值,并非精确值 |
数据范围与字节大小不一定相关,例如float(4字节)数据范围比long(8字节)更广泛(因为float使用了科学计数法) |
浮点数当中默认的是double类型,如果一定要使用float类型,需要加上字母F |
如果是整数,默认为int类型,如果一定要使用long类型则需要添加后缀字母L |
三、数据类型的转换
1.自动转换(隐式)
1.特点: 代码不需要特殊处理,自动完成
2.规则: 将取值范围小
的类型转换
为取值范围大
的类型
3.代码实例
//======================================================
long n1 = 10;
//左边是long类型,右边是默认的int类型,左右数据类型不一样
//等号代表赋值,将右侧的int,交给左侧的long进行存储
//int→long符合范围小向范围大的数据类型转换,所以发生了自动转换
System.out.print1n(n1); //结果为10
//======================================================
double n2 = 0.5F;
//左边是double类型,右边是float类型,左右数据类型不一样
//等号将左侧赋值给右侧
//float→double符合范围小向范围大的数据类型转换,所以发生了自动转换
System.out.println(n2); //结果为0.5
//======================================================
float n3 = 15L;
//左边是float类型,右边是long类型,左右数据类型不一样
//等号将左侧赋值给右侧
//long→float符合范围小向范围大的数据类型转换,所以发生了自动转换
System.out.print1n(n3); //结果为15.0
//======================================================
2.强制转换(显式)
1.特点:代码需要特殊处理,不能自动完成
2.规则:将取值范围大
的类型转换
为取值范围小
的类型
3.代码格式
int m = 10;
//范围小的类型 范围小的变量名 = (范围小的类型) 原范围大的数据类型
short n = (short) m;
3.代码实例
//======================================================
int n1 = (int) 66L;
//左边是int类型,右边是long类型,左右数据类型不一样
//等号将左侧赋值给右侧
//long→int,是范围大向范围小的数据类型转换,需要编写代码实现强制类型转换
System.out.println(n1);//结果为66
//======================================================
int n2 = (int) 100000000000L;
//如果右侧数据超过左侧数据范围,会造成数据溢出,结果也将不再准确
System.out.println(n2);//结果为1215752192
//======================================================
int n3 = (int) 9.9;
//double→int,并不是四舍五入,而是整数后的直接丢弃
System.out.println(n3);//结果为9
//======================================================
byte n4 = 4;
byte n5 = 5;
int n6 = n4 + n5;
//byte+byte → int+int → int
System.out.println(n6);//结果为9
//======================================================
short n7 = 7;
byte n8 = 8;
short n9 =(short)(n7 + n8);
//short+byte → int+int → int → short = short
System.out.println(n9);//结果为15
//======================================================
【tips】
1.强制数据类型转换一般不推荐,因为有可能产生精度损失,数据溢出
2.byte、short、char这三种类型都可发生数学运算,运算时将提升为int类型,再进行运算
3.boolean类型不能发生数据类型转换