🔔博客主页👉 @Nerhimisum.code.com
🎁欢迎关注👍点赞👉 留言⭐️收藏
🎁系列专栏持续更新👉 JavaSE学习
🎁欢迎大佬指正,一起学习,共同进步!
1.常量与变量
1.1常量
- 定义:程序运行期间固定不变的量。自定义常量是通过使用
final
或abstract
关键字修饰的变量。- 格式:
final/ abstract 常量名 = 数据值;
- 格式:
final double pai = 3.1415926;
abstract int i = 1;
- 常量的分类:
- 字符串常量:用双引号括起来的内容,例如:"ABC"。
- 整数常量:所有整数,例如:12, 23。
- 小数常量:所有小数,例如:12.34, 56.78。
- 字符常量:用单引号括起来的内容,例如:‘a’, ‘A’, ‘0’。
- 布尔常量:特有的true和false,只在量中取值。
- 空常量:null(数组部分讲解)。
此外,Java针对整数常量提供了多种表现形式,包括二进制(以0b开头)、八进制(以0开头)、十进制(整数默认)和十六进制(以0x开头)。
1.2变量
1.2.1 变量的定义:
- 定义格式:
数据类型 变量名 = 数据值;
(❗️ ‘=’表示“赋值”,将右边的赋值给左边;‘==’表示相等)
底层理解:在数据结构中我们了解到,变量是线性结构的基本组成部分。【线性结构是有序的数据集合,其中的数据元素之间存在一对一的关系。】变量存储程序中经常改变的数据,数据类型定义了变量可以存储的数据种类,如整数、浮点数、布尔值等。并且不同的数据类型(如int、double、char等)具有不同的存储空间和取值范围。
✨ 变量是存储数据值的单元,数据类型限制了变量可以存储的数据值种类。
1.2.2 变量的类别
- Java中的变量可以分为两类:基本类型变量和引用类型变量。
- 基本类型变量:存储基本数据类型值,如
int, float, double, char
等。
- 基本类型变量:存储基本数据类型值,如
int a = 10;
float b = 20.5f;
char c = 'c';
- 引用类型变量:存储对象引用,通过new关键字创建对象实例。
String str = new String("Hello");
1.2.3 变量的基本用法:
- 定义变量后直接输出
public class Variable {
public static void main(String[] args) {
int a = 5;
System.out.println(a);//输出5
}
}
- 变量参与计算
int a = 5,b=5,c=0;
c=a+b;
System.out.println(c)//10
- 修改变量记录的值(以数据交换举例:使用临时变量进行数据交换。)
int a = 5;
int b = 10;
int temp = a;//定义了临时变量temp存储数据
a = b;
b = temp;//通过赋值交换了两个变量中存储的数据
❗️ 注意事项:
1.变量在使用前需要赋值,可在定义时同步赋值。int a =0;
2.变量只能存储一个数据。
3.同一变量名不可重复定义使用。
4.注意变量作用域。
2. 数据类型
在刚才对常量、变量的学习中我们已经初步认识了数据类型,接下来就具体了解一下吧😊。
2.1数据类型分类
Java中的数据类型主要分为两类:
1️⃣基本数据类型:直接存储在栈(Stack)中
2️⃣引用数据类型:存储在栈中的是对象的引用,实际的对象存储在堆中。这种设计使得Java支持自动垃圾回收,提高了内存管理的便捷性。我们会在数组和面向对象的学习中深入了解。(例如,在C#中的指针类型,指针变量实际上存储的是指向实际数据的地址,而不是数据本身。这个指针包含了对象的地址信息。)
2.2 基本数据类型
在Java中,数据类型包括【1】整数类型(byte,short,int,long),【2】浮点类型(float,double),和【3】字符类型(char)【4】布尔型(
boolean)。每种数据类型有特定的取值范围和占用的内存空间,因此再给不同数据类型的变量赋值时一定要在相应的取值范围内(内存溢出),❌ 错误案例byte a = 200;
2.2.1 基本数据类型(4类8种)
下面是一个描述数据类型取值范围和内存占用的表格:(不包括布尔型)
数据类型 | 取值范围 | 内存占用(字节) |
---|---|---|
byte | -128 到 127 | 1 |
short | -32768 到 32767 | 2 |
int | -2147483648 到 2147483647(10位数) | 4 |
long | -9223372036854775808 到 9223372036854775807(19位数) | 8 |
float | 大约 -3.4e+38 到 3.4e+38 | 4 |
double | 大约 -1.7e+308 到 1.7e+308 | 8 |
char | 0 到 65535 (Unicode字符) | 2 |
boolean | true,false | 1 |
如果想更深入理解该表格内容,需要理解变量,数据类型在计算机中的存储,可以戳👉 http://t.csdnimg.cn/ccBf5
3. 类型转换
我们经常会处理整数与浮点数的混合运算,当Java运算涉及不同数据类型时,为需要确保结果类型与需求相符,会进行类型转换。类型去转换分为自动转换(隐式转换)和强制转换(显式转换)。
3.1 自动转换
int a = 10;
long b = 100L;
a=b;//编译报错
b=a;//编译成功,此时输出的b=10
为什么会出现上述的区别,其实是代码的运行状态下发生了自动转换。
隐式转换(自动转换):
- 从小范围的数据类型到大范围的数据类型:此时会先将小类型提升为大类型再参与计算。
2.数据类型按照如下顺序:
byte -> short -> char -> int -> long -> float -> double
3.2 强制转换
上述示例代码中b=a;
是从大类型到小类型,需要强制转换。
强制转换(显式转换):
- 从大范围的数据类型到小范围的数据类型。
- 可能会导致精度降低或者数据溢出。
❗️浮点数到整数的转换是向零舍入,不是四舍五入。- 强制转换格式:变量名1=(变量名1的数据类型)(变量2)
int i = 10;
byte b = (byte) i; // 强制转换为 byte,可能会丢失数据
数据溢出情况:如果转换后的值超出了目标数据类型的表示范围,就会发生数据溢出。如将一个
int
类型的值转换为byte
类型,如果int值超出了byte的表示范围(-128到127),就会发生数据溢出。
3.3 转换中的特殊情况
1.字符串与基本数据类型的转换
2.基本数据类型与包装类的转换
3.布尔类型不参与其他数据类型的转换
想要详细了解具体原理👉 http://t.csdnimg.cn/Z1kOd