• 03 变量


    Java变量

    概念

    变量相当于内存中的一个数据存储空间的表示。通过访问这个变量就相当于数据存储的空间。

    变量使用的基本步骤

    // 声明变量
    int a;
    // 变量赋值
    a = 15;
    // 打印
    System.out.println(a);
    
    // 也可以定义的同时进行赋值。
    int b = 10;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    变量使用的注意事项

    1. 变量表示内存中的一个存储空间。不同类型的变量,占用空间大小不同。
    2. 变量一定有自己的变量名称和数据类型。
    3. 变量必须先声明,然后使用。
    4. 变量的数据/值可以在同一类型范围中不断地变化。
    5. 变量在同一作用域内不能重名。
    6. 变量 = 变量名 + 值 + 数据类型。(变量的三要素)

    数据类型

    每个数据都定义了明确的数据类型,在内存中分配了不同大小的存储空间(字节)

    说明:

    1. java数据类型分为两大类:基本数据类型,引用数据类型。
    2. 基本数据类型有8种:byte,short, int, long, float, double, char, boolean
    3. 引用数据类型:类,接口,数组

    1. 整数类型(整型)

    类型占用存储空间范围
    byte 字节1字节-128~127
    short 短整型2字节-215~215-1
    int 整型4字节-231~231-1
    long 长整形8字节-263~263-1
    整型的使用细节(IntDetail.java文件)
    1. Java各种整数类型有固定的范围和字段长度,不受具体操作系统的影响,以保证java程序的可移植性。
    2. Java的整型常量默认为int值,声明long型常量后面加大/小写L
    3. Java程序中变量常声明为int型,除非不足以表示大数,才使用long。
    4. bit:计算机中的最小存储单元。byte是计算机的基本存储单元1byte = 8bit

    2. 浮点类型

    类型占用存储空间范围
    float 单精度4字节-3.403E38~3.403E38
    double 双精度8字节-1.798E308~-1.798E308

    说明:

    1. 浮点数在机器中的存储形式简单说明:浮点数 = 符号位 + 指数位 + 尾数位
      具体存储可以看我的C语言专栏-C语言进阶数据的存储
    2. 尾数部分可能丢失。造成精度的损失。(小数都是近似值)
    使用细节
    1. 与整数类型类似,Java浮点类型也有固定的范围和字段长度,不受OS的影响。
    2. Java浮点数常量(具体值)默认为double类型,声明float型常量,后面需要加f或F
    3. 浮点型常量有两种表达形式
      十进制如3.1415 3.1415f(必须要有小数点)。
      科学计数法形式:3.14e2 3.14e-2
    4. 通常情况下应使用double型,因为它比float更精确。
    5. 浮点数使用有陷阱。
    浮点数使用的陷阱

    阅读以下代码

    double num1 = 2.7;
    double num2 = 8.1/2.7;
    System.out.println(num1); // 结果为2.7
    System.out.println(num2); // 结果为接近2.7的一个小数。不是2.7
    
    • 1
    • 2
    • 3
    • 4

    当我们对运算结果是小数的结果进行判断时,要非常的小心。

    解决方法: 使用精度进行判断。

    解决

    if(Math.abs( num1 - num2 ) < 0.000001){} 
    //计算两个数的绝对值。0.000001不是固定的,根据需求来
    
    • 1
    • 2

    3. 字符类型(char)

    字符类型可以表示单个字符,字符类型为char, char是两个字节(可以存放汉字),搓个祖父我们用字符串String。

    使用细节
    1. 字符常量是用单引号(' ')括起来的单个字符。
    2. Java中还允许使用转义字符\来将其后的字符变为特殊的字符常量。
    3. 在底层,char的本质是一个整数,在输出时,是Unicode码对应的字符。
    4. 可以直接给char赋值一个整数,然后输出时,会按照对应的Unicode字符输出。
    5. char类型是可以进行运算的。相当于一个整数,因为他都对用有Unicode码。

    4. 布尔类型:boolean

    1. 布尔类型也叫boolean类型,boolean类型数据只有true和false。
    2. boolean类型占一个字节。
    3. boolean类型适用于逻辑运算,一般用于程序流程控制。

    类型转换

    1. 自动类型转换

    当java程序在进行赋值或运算时,精度小的类型会自动转化为精度大的精度类型,这就是自动类型转换

    数据类型转换精度(容量)大小排序:

    (小)char - int - long - float - double(大)

    (小)byte - short - int - long - float - double(大)

    自动类型转换注意&细节:
    1. 有多重类型的数据混合运算时,系统首先自动将所有数据转化成容量最大的那种数据类型,然后进行计算。
    2. 当我们把精度(容量)大的数据类型赋值给精度小的数据类型时,就会报错,反之就会进行自动类型转换。
    3. (byte,short ) 和 char之间不会相互自动转换。
    4. byte, short, char 他们三者可以计算,在计算时首先转换为int类型。
    5. boolean不参与转换。
    6. 自动提升原则:表达式结果的类型自动提升为操作数中最大的类型。
    2. 强制类型转换

    自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转换符 ( ),但可能造成精度降低或溢出

    强制类型转换细节说明
    1. 当进行数据从大到小,就需要使用强制类型转换。
    2. 强制类型转换符号只针对于最近的操作数有效,往往会使用小括号提升优先级。
    3. char类型可以保存int的常量值,但不能保存int的变量值,需要进行强制类型转换。
    4. byte和short,char类型在进行运算时,当做int类型处理。

    基本数据类型和 String 类型的转换

    我们经常需要将基本数据类型转换成String类型,或者将String类型转换成基本数据类型。

    • 基本数据类型转换成String类型,使用基本数据类型+""即可完成
    int n1 = 100;
    float n2 = 1.1f;
    double n3 = 3.4;
    boolean b = true;
    String s1 = n1 + "";
    String s2 = n2 + "";
    String s3 = n3 + "";
    String s4 = b + "";
    System.out.println(s1 + " " + s2 + " " + s3 + " " + s4);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • String类型转换成基本数据类型,使用包装类调用parseXX方法
    //进行类型转换
    int num1 = Integer.parseInt(s5);
    double num2 = Double.parseDouble(s5); 
    float num3 = Float.parseFloat(s5); 
    long num4 = Long.parseLong(s5);
    byte num5 = Byte.parseByte(s5); 
    boolean b = Boolean.parseBoolean("true"); 
    short num6 = Short.parseShort(s5);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    结果

    System.out.println(num1);//123 
    System.out.println(num2);//123.0 
    System.out.println(num3);//123.0 
    System.out.println(num4);//123 
    System.out.println(num5);//123 
    System.out.println(num6);//123 
    System.out.println(b);//true
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    注意事项
    1. 在将String类型转换成基本数据类型时,要确保String类型能够转成有效的数据。
      如:可以将“123”转换成数据,不能把"hello"转换成一个整数。

    2. 如果格式不正确,就会抛出异常,程序会终止。

    本章作业

    1. 程序阅读输出什么?
    public class Homework01{
        public static void main(String[] args){
            int n1;
            n1 = 13;
            int n2;
            n2 = 17;
            int n3;
            n3 = n2 + n1;
            System.out.println("n3 = " + n3);
            int n4 = 38;
            int n5 = n4 - n3;
            System.out.println("n5 = " + n5);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    1. 在char类型,分别保存\n \t \r \\ 1 2 3 等字符,并打印输出。
    2. 编程,保存两本书名,用+拼接看效果。
      保存两个性别,用+拼接看效果。
    3. 编程实现
    姓名年龄成绩性别爱好存储
    xxxxxxxxxx

    ​ 要求:

    • 用变量将姓名、年龄、成绩、性别、爱好 存储

    • 使用+

    • 添加适当的注释

    • 添加转义字符,使用一条语句输出。

    个人答案

    1. 结果如下
    38
    8
    
    • 1
    • 2
    1. 在char类型,分别保存\n \t \r \\ 1 2 3 等字符,并打印输出。
    public class Homework02{
        public static void main(String[] args){
            char c1 = '\n'; // 换行
            char c2 = '\t'; // 制表符
            char c3 = '\r'; // 回车
            char c4 = '\\'; // 输出\
            char c5 = '1'; // 
            char c6 = '2'; //
            char c7 = '3'; //
            System.out.println(c1);
            System.out.println(c2);
            System.out.println(c3);
            System.out.println(c4);
            System.out.println(c5);
            System.out.println(c6);
            System.out.println(c7);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    1. 编程,保存两本书名,用+拼接看效果。
      保存两个性别,用+拼接看效果。
    public class Homework03{
        public static void main(String[] args){
            // 保存书名
            String book1 = "水浒传";
            String book2 = "西游记";
            System.out.prinln(book1 + book2);
            
            // 保存性别使用char即可
            char c1 = '男';
            char c2 = '女';
            System.out.prinln(c1 + c2);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    1. 编程实现
    public class Homework03{
        public static void main(String[] args){
            // 定义变量
            String name = "Lichen";
            int age = 20;
            double score = 80.9;
            char gender = '男';
            String hobby = "play";
            // 输出信息
            System.out.println("姓名\t年龄\t成绩\t性别\t爱好\n" + name + "\t"
                              + name + "\t" + age + "\t" + score + "\t"+ gender + "\t"
                              + hobby + "\t")
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
  • 相关阅读:
    华为云云耀云服务器L实例评测|在Redis的Docker容器中安装BloomFilter & 在Spring中使用Redis插件版的布隆过滤器
    C. Colorful Table CodeTON Round 6 (Div. 1 + Div. 2, Rated, Prizes!)
    Talk预告 | 中国科学技术大学和微软亚洲研究院联合培养博士生冷燚冲:语音识别的快速纠错模型FastCorrect
    amber14自由能计算及增强采样方法
    Java:代理模式详解
    XML与html解析,区别,如何使用
    Excel VSTO开发4 -其他事件
    LeetCode(力扣)968. 监控二叉树Python
    指针到底是个什么玩意
    Flink Yarn Per Job - 提交应用
  • 原文地址:https://blog.csdn.net/Tian_baby/article/details/126896093