变量的基本概念
- 声明的本质就是在内存中申请一个存储单元。
- 数据类型
- 变量名
变量的声明和使用
数据类型 变量名 = 初始值;

变量使用的注意事项

标识符的命名规则
- 由数字、字母、下划线以及$等组成,其中数字不能开头(后面讲到)。
通常用字母表示标识符。
- 不能使用Java中的关键字,所谓关键字就是Java语言用已被使用表示特殊含义的单词。
- 区分大小写,长度没有限制但是不宜过长。
- 尽量要做到见名知意,支持中文但是不支持使用.
变量输入输出案例的优化和手册介绍
- 变量随使用随声明
尽可能减少重复的代码
/*编程实现变量的输入输出*///导入java目录中util目录的Scanner类//C:/Program Files/Java/jdk-11.0.2/lib/src/java.base/java/util/Scanner.javaimport java.util.Scanner;public class VarIOTest {public static void main(String[] args) {//1. 声明两个变量,用于记录姓名和年龄信息//String name;//int age;//2. 提示用户从键盘输入姓名等信息并放入到变量中 变量随使用随声明System.out.println("请输入您的姓名和年龄信息:");//创建一个扫描器来扫描键盘输入的信息Scanner sc = new Scanner(System.in);//通过扫描器读取一个字符串数据放入变量name中//String name = sc.next();//通过扫描器读取一个字符串数据放入变量age中//int age = sc.nextInt();//3. 打印输入的信息 尽可能减少重复的代码//System.out.println("name = "+name+" age = "+age );System.out.println("name = "+sc.next()+", age = "+sc.nextInt());}}
数据类型分类
(1) 基本数据类型
byte short int long float double boolean char
(2) 引用数据类型
数组、类、接口、枚举、标注
常用的进制
- 相关概念
十进制、逢十进一、权重
123 = 1 100 + 2 10 + 3 1
= 110^2 + 210^1 + 310^0
正十进制转换为二进制的方法
除二取余法

二进制的前缀: 0b/0B
八进制前缀: 0
十六进制前缀: 0x
拆分方法

45 = 32+8+4+1 = 101101
正二进制转换为十进制的方式
负十进制转换为二进制的方式
单个字节所能表示的整数范围

[-128, 127]

整数类型

推荐使用int类型 基本能满足日常使用
/*编程实现整数类型的使用*/public class IntTest {public static void main(String[] args) {//1. 声明一个Byte类型的变量并初始化byte b1 = 25;//byte b1 = 250; // > 128 错误: 不兼容的类型: 从int转换到byte可能会有损失 250这样直接写出的数据我们叫做直接量/常量/字面值 默认为int 类型//2. 打印变量的数值System.out.println("b1 = "+b1);System.out.println("===================");//3. 声明一个short类型变量并初始化short s1 = 250;//short s1 = 250250; // > 32768 错误: 不兼容的类型: 从int转换到short可能会有损失System.out.println("s1 = "+s1);System.out.println("===================");//4. 声明一个int类型变量并初始化int i1 = 250250;//int i1 = 2502508129; // > 2147483648 错误: 整数太大 默认为int类型,这个数据自身已经出错,还没有到赋值阶段//int i1 = 2502508129L; //错误: 不兼容的类型: 从long转换到int可能会有损失System.out.println("i1 = "+i1);System.out.println("===================");// 5.声明一个long类型变量并初始化,若描述比long型还大的数据使用java.math.BigInteger类型long g1 = 2502508129L;//long g1 = 2502508129; //错误: 整数太大System.out.println("g1 = "+g1);}}
整数类型的笔数考点

- 数字不能开头 —> 2502508129L 这个是标识符还是直接量.
//6. 请问下面的代码是否有错误,若有请指出并说明.int i2 = 25;byte b2 = i2; //错误: 不兼容的类型: 从int转换到byte可能会有损失//直接量在编译时就可以检查,但是变量不在编译时检查, 为确保转换的安全性, 所以报错System.out.println("b2 = "+b2);
浮点类型
float跟int所占字节数相等,但是表示类型相差很多的原因.
二进制表示方式不一样,浮点类型包含指数值 参考文章:

浮点数推荐使用double类型
/*编程实现浮点类型的使用*/public class DoubleTest {public static void main(String[] args) {//1. 声明一个float类型的变量并初始化//float f1 = 3.1415926; //错误: 不兼容的类型: 从double转换到float可能会有损失 小数数据叫做直接量,默认就是double类型float f1 = 3.1415926f; //打印结果f1 = 3.1415925,最后一位数字不一样, 原因是单精度浮点数7位有效数字//2. 打印变量的值System.out.println("f1 = "+f1); //f1 = 3.1415926System.out.println("==========================");//3. 声明一个double类型的变量并初始化double d1 = 3.1415926;System.out.println("d1 = "+d1); //d1 = 3.1415926 一般是15位有效数字System.out.println("==========================");// 4.笔试考点System.out.println(0.1+0.2); //0.30000000000000004 运算时可能会有误差,若希望实现精确运算,则应借助java.math.BigDecimal类型}}
布尔类型
ArithmeticException 异常
NaN,是Not a Number的缩写。NaN 用于处理计算中出现的错误情况,比如 0.0 除以 0.0 或者求负数的平方根。Infinity,是指无穷大typeof(NaN)和typeof(Infinity)都返回number 。NaN参与任何数值计算的结构都是NaN,而且 NaN != NaN 。Infinity / Infinity = NaN 。
当运算中遇到除以0的情况时,基本类型中的整数类型和BigDecimal会直接抛出ArithmeticException。而基本类型中的浮点数类型时会返回Infinity。

