3.1 为什么需要变量
俗话说,一个程序就是一个世界,变量是程序的基本组成单位。无论是使用哪种高级程序语言编写程序,变量都是其程序的基本组成单位。
变量有三个基本要素:类型+名称+值
比如:
class Test{
public static void main(String[] args){
int a = 1; // 定义了一个变量,类型int整型,名称a,值1
int b = 3; // 定义了一个变量,类型int整型,名称b,值3
b = 89; // 把89值赋给b变量
System.out.println(a); //输出a变量的值
System.out.println(b); // 输出b变量的值
}
}
简单的原理示意图:
3.2 变(变化)量(值)的介绍
3.2.1 概念
变量相当于内存中一个数据存储空间的表示,你可以把变量看做是一个房间的门牌号,通过门牌号我们可以找到房间,而通过变量名可以访问到变量(值)。
3.2.2 变量使用的基本步骤
● 1) 声明变量
int a;
● 2) 赋值
a = 60; //应该这么说: 把 60 赋给 a 使用 System.out.println(a);
//也可以一步到位[int a = 60; 通常我们是一步完成]
3.2.3 变量使用注意事项
- 变量表示内存中的一个存储区域【不同的变量,类型不同,占用的空间大小不同,比如:int为4个字节,double为8个字节,先有基本印象,后续会学到字节】
- 该区域有自己的名称【变量名】和类型【数据类型】
- 变量必须先声明,后使用,即有顺序
- 该区域的数据/值可以在同一类型范围内不断变化
- 变量在同一个作用域内不能重名
- 变量=数据类型 + 变量名 + 值,这一点大家注意,也是变量的三要素
public class VarDetail{
public static void main(String[] args){
//变量必须先声明,后使用, 即有顺序
int a = 50;
System.out.println(a);
//该区域的数据/值可以在同一类型范围内不断变化
//a = "jack"; //×,因为不是同一类型范围内变化
a = 88; //对
System.out.println(a);
//变量在同一个作用域内不能重名
// int a = 77; //×
}
}
class Dog{
public static void main(String[] args){
int a = 66; //对
}
}
3.3 程序中 +号的使用
相信大家,对这个+号也很迷惑吧,有时作为运算符,有时却是连接符,到底怎么区分呢?
- 当左右两边都是数值型时,则做加法运算
- 当左右两边有一方为字符串,则做拼接运算
- 运算顺序,是从左到右
大家理解后,试着先做做下面题目,看是否真的掌握了。
System.out.println(100 + 98); // 198
System.out.println("100" + 98); // 10098
System.out.println(100 + 3 + "hello,小猫咪"); // 103hello,小猫咪
System.out.println("hello" + 100 + 3); // hello1003
3.4 数据类型
每一种数据都定义了明确的数据类型,在内存中分配了不同大小的内存空间(字节)。
上图说明【爱摸鱼的TT~要求小伙伴背下来!!!】
- java数据类型分为两大类:基本数据类型和引用数据类型
- 基本数据类型有8种,数值型【byte、short、int、long、float、double】、char、boolean
- 引用数据类型【类、接口、数组】
3.4.1 整数类型
基本介绍
Java 的整数类型就是用于存放整数值的,比如 12 , 30, 3456 等等
案例演示
byte n1 = 10;
short n2 = 10;
int n3 = 10;//4 个字节
long n4 = 10; //8 个字节
整型的类型
整型的使用细节
- Java各整数类型有固定的范围和字段长度,不受具体OS【操作系统】的影响,以保证java程序的可移植性。
- Java的整型常量(具体值)默认为int类型,声明long型常量须后加‘l’或‘L’。
- Java程序中变量常声明为int型,除非不足以表示大数,才使用long
- bit:计算机中最小存储单位。byte:计算机中基本存储单位,1byte= 8bit。【二进制再详细说,简单举例byte 3 和 short 3】
byte n1 = 3; short n2 = 3;
思考题:long类型,有几个bit【8个字节 * 8bit = 64】
long n = 3; // 内存中存在形式
public class IntDetail{
public static void main(String[] args){
//Java 的整型常量(具体值)默认为 int 型,声明 long 型常量须后加‘l’或‘L’
int n1 = 1; // 4个字节
//int n2 = 1L; //对不对?不对
long n3 = 1L; //对
}
}
3.4.2 浮点类型
基本介绍
Java 的浮点类型可以表示一个小数,比如 123.4 ,7.8 ,0.12 等等
浮点类型的分类
说明一下
-
关于浮点数在机器中存放形式的简单说明,浮点数=符号位+指数位+尾数位
-
尾数部分可能丢失,造成精度损失(小数都是近似值)。
浮点型使用细节
- 与整数类型类似,Java浮点类型也有固定的范围和字段长度,不受具体OS的影响。【float 4个字节,double 8个字节】
- Java的浮点类型常量(具体值)默认为double型,声明float型常量,须后加‘f’或‘F’。
- 浮点型常量有两种表示形式
○ 十进制形式:5.12 512.0f .512(必须有小数点)
○ 科学计数法形式:5.12e2【5.12*10的2次方】 5.12E-2【5.12/10的2次方】 - 通常情况下,应该使用double型,因为它比float型更精确。
double num9 = 2.1234567851;
float num10 = 2.1234567851F; - 浮点数使用缺陷:2.7 和 8.1/3 比较
在数学算术方面,8.1/3的结果就是2.7,而在计算机中却不是这样,那该怎么比较浮点数的大小呢?那我们看看下面的案例吧。
public class FloatDetail{
public static void main(String[] args){
//Java 的浮点型常量(具体值)默认为 double 型,声明 float 型常量,须后加‘f’或‘F'
//float num1 = 1.1; //对不对?错误
float num2 = 1.1F; //对的
double num3 = 1.1;