一:变量
1.1 what?
问题:我们在实际开发过程中不可避免的要遇到一些比如数值计算的问题。而对于有些数值,可能在整个程序的执行过程中被反复使用,或者对该数值进行四则运算;而此时,如果没有一个行之有效的东西帮助我们去记录这些反复使用的值,很可能后导致后期对于值的不确定性增加(记混了,记错了),导致整个程序崩溃。
定义:变量就是在程序运行期间,其值可以发生改变。我们用变量来记录和标识程序中的某个用户输入等记录。
1.2 Why?
为了能够更好的方便开发,所以我们通过变量对于某些数据起一个简单的名字,方便程序调用以及执行。这就是为什么需要变量的原因。
1.3 Where?
变量被应用在程序的开发的各个地方,基本不存在没有变量的程序或者代码段。
1.4 How
1.4.1 变量的声明
PS:为了能够更好的说明问题,我们下面的例子中都是通过int
这种数据类型类完成下面的测试用例的。
- 案例
public class VariableStatement {
public static void main(String[] args) {
int num;//①
}
}
- 结论
变量的声明需要指定数据类型和变量名称;int就是一种数据类型,num就是当前变量的名字;
- 注意事项
①:Java是一门强类型语言,所有的变量都是具备具体类型的,目前我们先通过int代替,后面细说每种数据类型
②:变量名称就是给某个数据起的一个名称,必须要严格遵守标识符的命名规则(3必2标1注意)
1.4.2 变量的赋值
-
案例1 声明变量直接使用
public class VariableStatement { public static void main(String[] args) { int num;//① System.out.println("num的值是:"+num); } }
-
结论
程序在编译期间报错,报错信息如下:
The local variable num may not have been initialized
-
注意事项
变量在声明之后,无法直接使用;如果需要使用变量,必须要保证变量
声明且赋值
。 -
修改方式
public class VariableStatement { public static void main(String[] args) { int num;//①声明变量 num = 10;//② 增加赋值语句 System.out.println("num的值是:"+num); } }
变量声明之后需要使用是,通过赋值语句进行变量的赋值之后才能正常使用。
-
案例2 声明变量且赋值
public class VariableStatement { public static void main(String[] args) { int num = 10;//声明变量num且赋10 System.out.println("num的值是:"+num); } }
-
结论
PS:变量的声明和赋值可以分开进行编写,也可以编写为一行。一般情况下我们都会将声明和赋值放在一行语句中。
-
案例3 变量在程序运行期间可以重新赋值
public class VariableStatement { public static void main(String[] args) { int num = 10;//声明变量num且赋值10 System.out.println("起初num的值是:"+num); //改变num的值 num = 20; System.out.println("修改之后的num的值是:"+num); } }
输出结果:
起初num的值是10修改之后的num的值是20
在程序运行期间,变量的值可以发生改变,只需要重新给当前变量赋值即可。
1.4.3 变量的口诀
变量变量,它随你变;要想使用,记着赋值。
二: 数据类型
2.1 前言
Java是一门强类型的语言,所有的数据都具备具体的类型。思考问题,弱类型语言和强类型语言的优缺点分析。
- 强类型语言:
- 所有数据都具备其具体的类型,每种不同的类型的存储空间不同,大的数据,空间开辟大一点,小的数据空间开辟的小一点;
- 程序容易维护,不会因为程序在运行期间,对于变量进行赋值等操作,导致程序出现Bug,所以相对比而言会更加安全一点。
- 弱类型语言:
- 所有的数据的类型可能都一样,每种数据的存储空间相同。导致小的数据(100)和大的数据(100000)的存储的空间一样,造成一些内存的浪费;
- 程序不容易维护,后期程序运行时,不小心对于某一个数值型的变量进行更改,变成其它类型,导致程序正常执行,结果后期酿成大祸,相对于稳定性差一点。
2.2 数据类型分类
注意,Java是一门强类型语言,分为基本数据类型(3类8种)和引用类型。引用类型暂且背下来,我们后期讲解。接下来我们主攻的方向是基本数据类型,基本数据类型的我们通过了解每种类型的范围
,内存大小
,声明方式,注意事项
系统学习;
2.2.1 字节型
- 注意事项
表示方式 | 所占空间 | 表示范围 |
---|---|---|
字节型(byte) | 1个字节 | -128 - 127 |
- 案例分析
public class DataTypeTest01{
public static void main(String[] args){
//1:声明一个byte类型的数据 赋值10
byte num1 = 10;
System.out.println("num1 的值是:"+num1);
//2:给num1重新赋值128查看结果
num1 = 128;//这行代码报错,type mismatch
System.out.println("num1 的值更改之后是:"+num1);
}
}
- 结论
字节型是数据类型通过byte指定,占内存1个字节,能够代表的数的范围是-128到127之间;如果赋值超过这个区间,编译时会报错Type mismatch: cannot convert from int to byte。不能将超过byte范围的数据直接赋值给byte类型的变量。
2.2.2 短整形
- 注意事项
表示方式 | 所占空间 | 表示范围 |
---|---|---|
短整型(short) | 2个字节 | -32768-32767 -2^15 - 2^15-1 |
- 案例分析
public class DataTypeTest02{
public static void main(String[] args){
//1:声明一个short类型的数据 赋值1000
short num1 = 1000;
System.out.println("num1 的值是:"+num1);
//2:给num1重新赋值32768查看结果
num1 = 32768;//这行代码报错,type mismatch
System.out.println("num1 的值更改之后是:"+num1);
}
}
- 结论
短整形型是数据类型通过short指定,占内存2个字节,能够代表的数的范围是-32768到32767之间;如果赋值超过这个区间,编译时会报错Type mismatch: cannot convert from int to byte。不能将超过short范围的数据直接赋值给short类型的变量。
2.2.3 整形
- 注意事项
表示方式 | 所占空间 | 表示范围 |
---|---|---|
整型(int) | 4个字节 | -2147483648-2127283647 -2^31 - 2^31-1 |
- 案例分析
public class DataTypeTest03{
public static void main(String[] args){
//1:声明一个int类型的数据 赋值40000
int num1 = 1000;
System.out.println("num1 的值是:"+num1);
//2:给num1重新赋值2147483648查看结果
num1 = 2147483648;//这行代码报错,type mismatch
System.out.println("num1 的值更改之后是:"+num1);
}
}
- 结论
整形型是数据类型通过int指定,占内存4个字节,能够代表的数的范围是-231到231-1之间;如果赋值超过这个区间,编译时会报错Type mismatch: cannot convert from int to byte。不能将超过short范围的数据直接赋值给int类型的变量。
2.2.4 长整形
- 注意事项
表示方式 | 所占空间 | 表示范围 |
---|---|---|
长整型(long) | 8个字节 | -2^63 - 2^63-1 |
- 案例分析
public class DataTypeTest04{
public static void main(String[] args){
//1:声明一个int类型的数据 赋值40000
long num1 = 1000;
System.out.println("num1 的值是:"+num1);
//2:给num1重新赋值2147483648查看结果
num1 = 2147483648;//这行代码报错,type int is out of range
System.out.println("num1 的值更改之后是:"+num1);
}
}
- 结论
长整形型是数据类型通过long指定,占内存8个字节,能够代表的数的范围是-263到263-1之间;
这里要千万注意,默认情况下在Java中所有的整数的默认类型是int类型,所以当给long类型变量赋值时,本身赋值的数超过了int的范围;大于2147483647或者小于-2147483658时,编译器觉得赋值的右边还是int类型而不是long类型,所以报错The literal 2147483648 of type int is out of range。
解决办法: 在超过int值的后面加"L"(推荐)或者是"l"。