变量的基本概念

  • 声明的本质就是在内存中申请一个存储单元。
  • 数据类型
  • 变量名

变量的声明和使用

  1. 数据类型 变量名 = 初始值;

image.png

变量使用的注意事项

image.png

标识符的命名规则

  • 由数字、字母、下划线以及$等组成,其中数字不能开头(后面讲到)。

通常用字母表示标识符。

  • 不能使用Java中的关键字,所谓关键字就是Java语言用已被使用表示特殊含义的单词。
  • 区分大小写,长度没有限制但是不宜过长。
  • 尽量要做到见名知意,支持中文但是不支持使用.

变量输入输出案例的优化和手册介绍

  • 变量随使用随声明
  • 尽可能减少重复的代码

    1. /*
    2. 编程实现变量的输入输出
    3. */
    4. //导入java目录中util目录的Scanner类
    5. //C:/Program Files/Java/jdk-11.0.2/lib/src/java.base/java/util/Scanner.java
    6. import java.util.Scanner;
    7. public class VarIOTest {
    8. public static void main(String[] args) {
    9. //1. 声明两个变量,用于记录姓名和年龄信息
    10. //String name;
    11. //int age;
    12. //2. 提示用户从键盘输入姓名等信息并放入到变量中 变量随使用随声明
    13. System.out.println("请输入您的姓名和年龄信息:");
    14. //创建一个扫描器来扫描键盘输入的信息
    15. Scanner sc = new Scanner(System.in);
    16. //通过扫描器读取一个字符串数据放入变量name中
    17. //String name = sc.next();
    18. //通过扫描器读取一个字符串数据放入变量age中
    19. //int age = sc.nextInt();
    20. //3. 打印输入的信息 尽可能减少重复的代码
    21. //System.out.println("name = "+name+" age = "+age );
    22. System.out.println("name = "+sc.next()+", age = "+sc.nextInt());
    23. }
    24. }

数据类型分类

在Java中数据类型主要分为两大类

(1) 基本数据类型

  1. byte short int long float double boolean char

(2) 引用数据类型

数组、类、接口、枚举、标注

常用的进制

  • 相关概念

十进制、逢十进一、权重
123 = 1 100 + 2 10 + 3 1
= 1
10^2 + 210^1 + 310^0
image.png

正十进制转换为二进制的方法

除二取余法

image.png

二进制的前缀: 0b/0B
八进制前缀: 0
十六进制前缀: 0x

拆分方法

image.png
45 = 32+8+4+1 = 101101

正二进制转换为十进制的方式

拆分方法的逆运算

负十进制转换为二进制的方式

概念: 原码、补码、反码
image.png
image.png

单个字节所能表示的整数范围

image.png
[-128, 127]

image.png

整数类型

image.png
推荐使用int类型 基本能满足日常使用

  1. /*
  2. 编程实现整数类型的使用
  3. */
  4. public class IntTest {
  5. public static void main(String[] args) {
  6. //1. 声明一个Byte类型的变量并初始化
  7. byte b1 = 25;
  8. //byte b1 = 250; // > 128 错误: 不兼容的类型: 从int转换到byte可能会有损失 250这样直接写出的数据我们叫做直接量/常量/字面值 默认为int 类型
  9. //2. 打印变量的数值
  10. System.out.println("b1 = "+b1);
  11. System.out.println("===================");
  12. //3. 声明一个short类型变量并初始化
  13. short s1 = 250;
  14. //short s1 = 250250; // > 32768 错误: 不兼容的类型: 从int转换到short可能会有损失
  15. System.out.println("s1 = "+s1);
  16. System.out.println("===================");
  17. //4. 声明一个int类型变量并初始化
  18. int i1 = 250250;
  19. //int i1 = 2502508129; // > 2147483648 错误: 整数太大 默认为int类型,这个数据自身已经出错,还没有到赋值阶段
  20. //int i1 = 2502508129L; //错误: 不兼容的类型: 从long转换到int可能会有损失
  21. System.out.println("i1 = "+i1);
  22. System.out.println("===================");
  23. // 5.声明一个long类型变量并初始化,若描述比long型还大的数据使用java.math.BigInteger类型
  24. long g1 = 2502508129L;
  25. //long g1 = 2502508129; //错误: 整数太大
  26. System.out.println("g1 = "+g1);
  27. }
  28. }

整数类型的笔数考点

image.png

  • 数字不能开头 —> 2502508129L 这个是标识符还是直接量.
    1. //6. 请问下面的代码是否有错误,若有请指出并说明.
    2. int i2 = 25;
    3. byte b2 = i2; //错误: 不兼容的类型: 从int转换到byte可能会有损失
    4. //直接量在编译时就可以检查,但是变量不在编译时检查, 为确保转换的安全性, 所以报错
    5. System.out.println("b2 = "+b2);

浮点类型

float跟int所占字节数相等,但是表示类型相差很多的原因.

二进制表示方式不一样,浮点类型包含指数值 参考文章:

image.png

浮点数推荐使用double类型

  1. /*
  2. 编程实现浮点类型的使用
  3. */
  4. public class DoubleTest {
  5. public static void main(String[] args) {
  6. //1. 声明一个float类型的变量并初始化
  7. //float f1 = 3.1415926; //错误: 不兼容的类型: 从double转换到float可能会有损失 小数数据叫做直接量,默认就是double类型
  8. float f1 = 3.1415926f; //打印结果f1 = 3.1415925,最后一位数字不一样, 原因是单精度浮点数7位有效数字
  9. //2. 打印变量的值
  10. System.out.println("f1 = "+f1); //f1 = 3.1415926
  11. System.out.println("==========================");
  12. //3. 声明一个double类型的变量并初始化
  13. double d1 = 3.1415926;
  14. System.out.println("d1 = "+d1); //d1 = 3.1415926 一般是15位有效数字
  15. System.out.println("==========================");
  16. // 4.笔试考点
  17. System.out.println(0.1+0.2); //0.30000000000000004 运算时可能会有误差,若希望实现精确运算,则应借助java.math.BigDecimal类型
  18. }
  19. }

布尔类型

ArithmeticException 异常

  1. NaN,是Not a Number的缩写。
  2. NaN 用于处理计算中出现的错误情况,比如 0.0 除以 0.0 或者求负数的平方根。
  3. Infinity,是指无穷大
  4. typeof(NaN)和typeof(Infinity)都返回number
  5. NaN参与任何数值计算的结构都是NaN
  6. 而且 NaN != NaN
  7. Infinity / Infinity = NaN

当运算中遇到除以0的情况时,基本类型中的整数类型和BigDecimal会直接抛出ArithmeticException。而基本类型中的浮点数类型时会返回Infinity