为什么需要变量
一个程序就是一个世界
变量是程序的基本组成单位
//不论是使用那种高级程序语言编写程序,变量都是其程序的基本组成单位,比如
//变量有三个基本要素(类型+名称+值)
class Test{
public static void main(String[] args) {
//定义了一个变量,类型int整型,名称a,值1
int a=1;
//定义了一个变量,类型int整型,名称b,值2
int b=2;
//把99的值赋值给b变量
b=99;
//输出a的值
System.out.println(a);
//输出b的值
System.out.println(b);
}
}
简单的原理示意图
变(变化)量(值)的介绍
变量相当于内存中一个数据存储空间的标识,你可以把变量看作是一个房间的门牌号,通过门牌号我们可以找到房间,而通过变量名可以访问到变量
变量的基本使用步骤
-
声明变量
int a;
-
赋值
a=1 //应该这么说,把60赋值给a //也可以一步到位int a = 60;
变量快速入门
变量使用入门案例
看演示并对代码进行说明, 演示记录 人的信息的代
public class Var02 {
//编写一个 main 方法
public static void main(String[] args) {
//记录人的信息
int age = 30;
double score = 88.9;
char gender = '男';
String name = "king";
//输出信息, 快捷键
System.out.println("人的信息如下:");
System.out.println(name);
System.out.println(age);
System.out.println(score);
System.out.println(gender);
}
}
变量使用注意事项
- 变量表示内存中一个存储区域[不同的变量,类型不同,占用空间大小不同],
比如: int 4个字节,double就是8个字节 - 该区域有自己的名称[变量名]和类型[数据类型]
- 变量必须先声明,后使用,即有顺序
- 该区域的数据/值可以在同一类型范围内不断变化
- 变量在同一个作用域内不能重名
- 变量=变量名+值+数据类型,即变量三要素
public class VarDetail {
//编写一个 main 方法
public static void main(String[] args) {
//变量必须先声明,后使用, 即有顺序
int a = 50;//int
System.out.println(a);//50
//该区域的数据/值可以在同一类型范围内不断变化
//a = "jack"; //×
a = 88; //对
System.out.println(a);//88
//变量在同一个作用域内不能重名
//int a
}
}
class Dog {
public static void main(String[] args) {
int a = 666;//对
}
}
程序中 +号的使用
- 当左右两边都是数值(char)类型时,做加法运算
- 当左右两边有一方为字符串时,做拼接运算
- 运算顺序,从左到右
示例如下
public class Main {
public static void main(String[] args) {
//输出198因为是数值+数值
System.out.println(100+98);
//输出10099因为有字符串是拼接
System.out.println("100"+99);
//输出101100,因为从左往右
System.out.println(100+1+"100");
//输出197,因为char是数值
System.out.println(100+'a');
}
}
数据类型
每一种数据都定义了明确的数据类型,在内存中分配了不同大小的内存空间(字节)。
- java数据类型分为两大类,基本类型和引用类型
- 基本数据类型中有8种
byte short int long float double char boolean - 引用类型类型 接口 数组
整数类型
java的整数类型就是用于存放整个数值的,比如12,13,23423等
示例如下
byte n1 = 10;
short n2 = 10;
int n3 = 10;//4 个字节
long n4 = 10; //8 个字节
整型的类型细节如下
类型 | 占用存储空间 | 范围及精度 |
---|---|---|
byte | 1字节 | -128 到 127 |
short | 2字节 | -32,768 到 32,767 |
int | 4字节 | -2,147,483,648 到 2,147,483,647 |
long | 8字节 | -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 |
整型的使用细节
- java各整数都有固定的范围和字段长度,不受具体os[操作系统]的影响,以保证java程序的可移植性
- java的整型常量(具体值)默认为int型,声明long型常量必须后加l或L
- java程序中变量常声明为int型,除非是非常大的数才使用long
- bit:计算机中最小存储单位,byte计算机中基本存储单元1byte=8bit
浮点类型
Java 的浮点类型可以表示一个小数,比如 123.4 ,7.8
浮点数分类
类型 | 占用存储空间 | 范围及精度 |
---|---|---|
float | 4字节 | 大约 ±3.4028235 × 10³⁸(有效位数大约6-7位) |
double | 8字节 | 大约 ±1.79769313486231570 × 10³⁰⁸(有效位数大约15位) |
- 关于浮点数在机器中存放形式的简单说明,浮点数=符号位+指数位+尾数位
- 尾数部分可能丢失,造成精度损失(小数都是近似值)。
浮点数使用细节
- 与整型类型类似,java浮点型也有固定的范围长度,不受具体os的影响,
- java的浮点型常量默认为double类型,声明float型常量需要加f或F
- 浮点型常量有两种表示形式
十进制 5.12 520.0F .111(必须有小数点)
科学计数法 5.21e10(5.21*10的2次方) - 通常情况下,应该使用double型因为它比float型更精确
public class FloatDetail {
//编写一个 main 方法
public static void main(String[] args) {
//Java 的浮点型常量(具体值)默认为 double 型,声明 float 型常量,须后加‘f’或‘F' //float num1 = 1.1; //对不对?错误
float num2 = 1.1F; //对的
double num3 = 1.1; //对
double num4 = 1.1f; //对
//十进制数形式:如:5.12 512.0f .512 (必须有小数点)
double num5 = .123; //等价 0.123
System.out.println(num5);
//科学计数法形式:如:5.12e2 [5.12 * 10 的 2 次方 ] 5.12E-2 []
System.out.println(5.12e2);//512.0
System.out.println(5.12E-2);//0.0512
//通常情况下,应该使用 double 型,因为它比 float 型更精确。
//[举例说明]double num9 = 2.1234567851;float num10 = 2.1234567851F;
double num9 = 2.1234567851;
float num10 = 2.1234567851F;
System.out.println(num9);
System.out.println(num10);
//浮点数使用陷阱: 2.7 和 8.1 / 3 比较
//看看一段代码
double num11 = 2.7;
double num12 = 2.7; //8.1 / 3; //2.7
System.out.println(num11);//2.7
System.out.println(num12);//接近 2.7 的一个小数,而不是 2.7
//得到一个重要的使用点: 当我们对运算结果是小数的进行相等判断是,要小心
//应该是以两个数的差值的绝对值,在某个精度范围类判断
if( num11 == num12) {
System.out.println("num11 == num12 相等");
}
//正确的写法 , ctrl + / 注释快捷键, 再次输入就取消注释
if(Math.abs(num11 - num12) < 0.000001 ) {
System.out.println("差值非常小,到我的规定精度,认为相等...");
}
// 可以通过 java API 来看 下一个视频介绍如何使用 API
System.out.println(Math.abs(num11 - num12));
//细节:如果是直接查询得的的小数或者直接赋值,是可以判断相等
}
}
字符类型(char)
字符类型可以表示单个字符,字符类型是 char,char 是两个字节(可以存放汉字),多个字符我们用字符串String
- 字符常量是用单引号(‘’)括起来的单个字符
- java中还允许使用转移字符’'来将其后的字符转变为特殊字符常量
例如char c1 = ‘\n’ ; \n表示换行 - 在java中 char本质是一个整数,在输出时,是unicide码对应的字符
- 可以直接给char赋一个整数,在输出时,是unicode对应的字符
- char类型可以进行数学运算因为本质是一个整数
示例如下
public class Main {
public static void main(String[] args) {
System.out.println("Hello world!");
//在java中,char的本质是一个整数,在输出时,是unicode码对应的字符
char c1 = 97;
System.out.println(c1); //a
char c2 = 'a';
System.out.println((int)c2);//97
//char 类型是可以进行运算的,相当于一个整数,因为它都对应的unicode码
System.out.println(c1+c2);//194 注意char相加后会变成整数
System.out.println(c1+2);
//字符类型本质
//1: 字符型存储到计算机中,需要将对应的码值(整数)找出来,比如'a'
//存储:'a'==>码值97===>'a'显示
//读取:二进制(1100001)=>97===>'a'==>显示
}
}
ASCII 码介绍
Unicode 编码介绍
UTF-8 编码介绍
布尔类型:boolean
public class Boolean01 {
//编写一个 main 方法
public static void main(String[] args) {
//演示判断成绩是否通过的案例
//定义一个布尔变量
boolean isPass = true;//
if(isPass == true) {
System.out.println("考试通过,恭喜");
} else {
System.out.println("考试没有通过,下次努力");
}
}
}