华清远见-重庆中心-JAVA基础阶段技术总结/知识点梳理/个人总结

目录

1.Java基础

1.1计算机体系结构简介

1.2Java的介绍

1.3 jdk的安装

1.4 Java的执行顺序

1.5环境变量设置

1.6创建一个Java程序

2.Java的变量

2.1 什么是变量

2.2 变量的定义

2.3 变量的访问

2.4Java中的关键字

 2.5变量相关代码

3.Java中的基本数据类型

3.1 整型 int

3.2 长整型 long

3.3  浮点型 double &  float

3.4  字符类型Char

 3.5 布尔类型 Boolean

3.6  数据类型转换

4.运算符

4.1算数运算符

4.2关系运算符

4.3逻辑运算符

4.4 赋值运算符和扩展赋值运算符

4.5 字符串拼接"+"

4.6三目运算符

4.7扩展赋值运算和三目运算 和字符串拼接代码:

 5.Java程序的结构

5.1 顺序结构

5.2 分支结构

5.3 循环结构

5.4  break & continue

5.5 循环的阿嵌套

6. 数组

6.1 什么是数组

6.2 数组的使用

6.3 数组的排序

7. 案例题

7.1:bmi指数计算

7.2:随机字符

7.3:三目运算找最大值

7.4:判断年龄的区间

7.5:猜数字

7.6 身份证验证

8.【JAVA基础阶段企业常见面试题】

8.1  在JAVA中,如何跳出当前多重嵌套循环?

8.2  JDK和JRE有什么区别?

8.3  =、==、和equls的区别

8.4  string是基础数据类型吗?基础的数据类型有哪些?

8.5  如何实现数组和List之间的转换?


1.Java基础

1.1计算机体系结构简介

1.硬件

2.软件:应用软件;系统软件

1.2Java的介绍

java之父:James Gosling Oak

1995年Java问世,1996年 JDK 1.0,2009年 Oracle以超过70亿美元交易总值收购了Sun

1.3 jdk的安装

        根据自己设备选择对应的版本(常用的电脑设备要注意32位的操作系统64位的操作系统)从Oracle官网下载,建议下载LTS长期维护版本。

  • JDK --- Java Development Kit (Java 开发工具包)
  • JRE --- Java Runtime Environment (Java 运行环境)
  • JVM --- Java Virtual Machines (Java 虚拟机)
  • java的技术体系架构: 安装jdk的时候,主要安装的是java se相关内容。 

1.4 Java的执行顺序

  • 程序员编写的Java源文件(.java)首先要经过编译,生成字节码文件(.class)。

                Java源文件(.java)——>java字节码文件(.class)——>JVM——>操作系统

  • Java程序的运行需要JVM的支持。JVM是一个软件,安装在操作系统中,为字节码文件提供运行环境。
  • java是可以跨平台的:跨操作系统运行

                Java官方提供了针对不同平台的JVM软件,这些JVM遵循相同的标准,只要是标准的.class文件,就可以在不同的操作系统上运行,且运行结果一样,这样,就实现了所谓的“一次编译到处运行”。

1.5环境变量设置

  • 1.打开环境变量的设置

  • 2.JAVA_HOME: jdk的安装路径

 PATH: JDK的安装包中的bin目录,path配置之后,可以在命令行窗口使用命令

  • 3.测试环境变量的配置:window + R , 然后输入cmd , 就可以打开命令行窗口。然后输入 java -version命令,查看安装的jdk的版本。

1.6创建一个Java程序


package day1; // package -包  , day1 就是包名


import java.util.Scanner; // import - 导入

//  class -  类 , 类型   , InputDemo就是类名
// public - 公开的 ,修饰类
public class InputDemo {
    // java程序的入口函数 : 能直接运行的方法
    // static - 静态的 ,  void - 表示方法无返回值
    // String - 字符串  , 是java中定义好的一种类型
    public static  void  main(String[] arg){
        // 从键盘输入名字
        Scanner scan = new Scanner(System.in);// - 定义了一个叫scan的变量

        System.out.println("请输入名字:");

        String  name = scan.next(); // 通过键盘输入一个名字 , 保存在变量name中。

        //  + 完成 字符串的拼接
        System.out.println(name + ", 早上好!");// “;”表示一句代码结束了。
    }
}
package day1;//package是Java中的关键字,有特殊功能,标志day1是关键字

import java.util.Scanner;

//输入用户信息,然后输出用户信息
//public是Java的关键字,标志类是一个公开类
public class InfoDemo {//class是一个关键字,这里表示InfoDemo是一个类
    //java的入口函数(方法)
    public static void main(String[]args){
        Scanner sc=new Scanner(System.in);//new是Java中的关键字,创建对象
        System.out.println("请输入你的名字:");//sout:就能输出System.out.println()
        String name =sc.next();//用户只能输入字符串
        System.out.println("请输入你的年龄:");
        int age = sc.nextInt();
        System.out.println("请输入你的地址");
        String address =sc.next();//sc,name,age,address都是变量名
        System.out.println(name+"今年"+age+"岁,家住"+address);

    }

}

 

package day1;

import java.util.Scanner;

// 功能:  用户输入两个整数  , 然后求和 , 输出结果
public class SumDemo {
     // java的入口函数main
     public static void main(String[] args) {
         Scanner sc = new Scanner(System.in);
         System.out.println("请输入一个整数:");
         // int  (integer) , 在java中表示整数
         int  a =  sc.nextInt(); // 输入整数
         System.out.println("请再输入一个整数:");
         int  b = sc.nextInt();
         System.out.println("和:" +(a+b));// (a+b) 提高优先级 , 先算加法,然后再字符串拼接
     }
}

2.Java的变量

2.1 什么是变量

变量是指代在内存中的一块存储空间,用于存储程序运算过程中需要用到的数据。

2.2 变量的定义

变量声明的语法规则:变量类型 变量名字

  • 在变量声明时同时初始化:

                变量类型 变量名字 = 初始值;

  • 先声明变量,在第一次使用变量之前再对变量赋初值
  • 未经声明的变量不能使用
  • 如果多个变量的类型相同,可以在一条语句中声明,中间用逗号分隔。
  • 变量的命名需要符合Java标识符语法要求

                -可以有字母,数字,”_”和”$”符组成

                -首字符不能以数字开头

                -Java是大小写敏感的语言,命名变量时需要注意

                -不能使用Java保留字(Java语言规定好的,有特殊含义的字符:public static void…

  • 中文可以作为变量名字,但是不推荐使用。

                Java变量命名最好能“见名知意”

                Java编程规范要求:变量的命名需要采用“驼峰命名法”,即:如果Java变量名字由多个

                英语单词组成,除第一个单词首字母小写外,其他的单词,需要首字母大写,其余的字母小写。

2.3 变量的访问

  • 可以对变量中的值进行存取操作
  • 变量在定义的时候,指定了类型。Java编译器会检测对该变量的操作是否符合定义的数据类型,如果对变量的赋值或操作不符合定义的数据类型,会产生编译错误。

2.4Java中的关键字

 2.5变量相关代码

public class VarDemo {
    public static void main(String[] args) {
        // 1. 定义变量 , 然后给变量赋值。
        int a  ;   // 定义了一个整形变量a。
        a = 100 ;//  “=”  , 表示给变量赋值
        int b ;
       // b = 100 ; // 编译错误: 这里把.java的源文件, 编译为.class的字节码文件, 发现“;”是中文的。
        b = 100 ;
        int c = a + b ;
        System.out.println("c:" + c);
        // 2. 定义变量的时候,直接给变量赋值。
        String  birth = "2000-10-10";
       // int a = 22 ; // 编译错误: 同一个代码区域内部,不允许变量名重复。
        int age = 22 ;
        System.out.println("你出生于:" + birth + ",今年:" + age  + "岁");
        // 3. 未经声明的变量不能使用
       // address = "歇台子"; 编译错误, 未经声明的变量不能直接使用。
        String  address ; // 声明变量
        address = "歇台子";
        // 4. 一条语句声明多个变量
        int a1 , a2 , a3 ;
        //System.out.println( a1 + a2 + a3); // 编译错误: 没有初始化的变量,不能直接做加法运算。
        a1 = 5 ;
        a2 = 6 ;
        a3 = 7 ;
        System.out.println("和:" + (a1+a2+a3));
        int b1= 7 ,b2=8 , b3=9 ;
        System.out.println("和:" + (b1+b2+b3));
        // 5. 变量命名规则
        int $ = 100;
        int _ = 200;
       //  int * = 300;// 编译错误:变量命名只能包含数字,字符, _ , $ ,并且不能时纯数字。
        String  name = "alice";
        // System.out.println(Name); // 编译错误: 变量名严格区分大小写。
       // int int = 2022111;  // 编译错误:关键字不能作为变量名。
        String englishName = "张老师"; // 这里是不是驼峰命名法: 第一个单词首字母小写,后续单词首字母大写。

    }
}

3.Java中的基本数据类型

3.1 整型 int

  • int是最常用的整数类型。一个int类型占用4个字节(32位),

                最大表示范围为:-2147483648 ~ 2147483647

  • 整数类型的直接量(literal)默认是int类型。
  • 两个int整数相除(/),结果取整,舍弃小数部分(非四舍五入),结果还是整数
  • 整数运算要防止溢出

                -整数运算的过程中,运算结果,如果超过了整数能表示的最大范围,会发生溢出。

                正数过大溢出,结果变为负数;负数过小溢出,结果变为正数。

与整型相关的代码:

//  int数据类型介绍
public class IntDemo {
    public static void main(String[] args) {
        // 1. int的数据是占4个字节
        int  a = 10000 ;
        System.out.println("a:" + a); // 输出变量a.
        //int a1 = 10000000000 ;// 100亿  , 编译错误。 超过了int的最大范围。
        int  b = 1500000000;
        int  c = 1500000000;
        int  sum = b + c ;  // 和超过了int的最大值
        System.out.println("sum:" + sum);// sum:-1294967296 ,  这里溢出了。
        //2 . 直接量
        int k  = 100 ;// 这里的100就是直接量
        System.out.println("k十进制:" + k);
        int k1 = 0x100;
        System.out.println("k1十六进制:" + k1);
        int k2 = 0100;
        System.out.println("k2是8进制:" + k2);
        // 3. int数据的运算:  +  , - , *  , /(取整) , % (取余)
        int a1 = 9 ;  // 定义变量
        int a2 = 4 ;
        int c1 = a1 + a2 ; // c1 = 13
        int c2 = a1 - a2; // c2 = 5
        int c3 = a1 * a2; // c2 = 36
        int c4 = a1 / a2;// 取整: java程序中规定,两个整数的运算结果只能是整数(9/4 等于2)
                         //   , 数学中(9/4等于2.25)
        System.out.println("c4:" + c4);
        int c5 = a1 % a2;// 取余: 获取两个数相除的余数
        System.out.println("c5:" + c5);
        // 思考, 怎么判断一个数据是奇数还是偶数
        if(a1 % 2  == 0){ //a1 % 2  == 0 判断是否相等 , 结果是true或false.
            System.out.println(a1 + "是偶数");
        }else{
            System.out.println(a1 + "是奇数");
        }
        // 除法的练习 :计算百分比
        int  current = 33 ;
        int  total = 50 ;
        System.out.println("第一种:");
        System.out.println( current / total   * 100 + "%");
        System.out.println("第二种:");
        System.out.println( current  * 100 / total + "%");
    }
}

3.2 长整型 long

  • 如果要表示的整数已经超过了int的范围,那么可以用long类型定义变量,保存数据。

                long类型数据范围(8个字节,64位):

                -9223372036854775808~9223372036854775807

  • long类型直接量的表示,需要在数据后面加一个L或l;
  • 通过long类型来存储系统当前毫秒数,jdk提供了一个方法( System.currentTimeMillis() ),来获取从1970.1.1日零时至今的毫秒数, 返回结果为long。
  • 对于较大的整数运算(超出int范围),可以使用long型。

与长整型相关的代码:

// long : 长整形 , 8个字节 , 如果int数据范围不够,就选择使用long
public class LongDemo {
    public static void main(String[] args) {
        // 1. 定义long类型的变量
        long a1 = 100;
        // java中“直接量”默认为int类型。
       // long a2 = 10000000000;// 100亿超过了int的范围,所以导致编译错误。
        long a2 = 10000000000L ; // 在直接量后,添加"L 或 l "的标志,表示这个直接量是long类型。

        // 2. 时间毫秒数
        // 练习: 自己计算一年的毫秒数
       // long micro = 365 * 24 * 60 * 60 * 1000 ; //全部都是int类型参与运算,结果就是int类型,超过int范围,就溢出。
        long micro = 365L * 24 * 60 * 60 * 1000 ; // 把365转为long类型, 所以运算结果就是long类型。
        System.out.println("一年的毫秒数:" + micro);
        // 3. 获取系统的时间毫秒数:  起点为1970.1.1 0:0:0 距离此刻的时间毫秒数
        long  time = System.currentTimeMillis();
        System.out.println("距今的时间毫秒:" + time);


    }
}

3.3  浮点型 double &  float

  • 所谓的浮点类型就是小数类型,包含double 和 float。

                浮点类型的默认直接量是double类型。

                如果要使用float类型,需要在数据后面加F或f。

                double类型的精度比float类型的精度高,因此,一般用double类型。

                eg:

                float f1 = 3.3F;

                double money = 3.5;

  • double类型数据运算的时候,会有舍入误差。

                由于舍入误差,导致浮点数不能精确运算。

                二进制中无法表示1/10,就像十进制中无法精确表示1/3,所以二进制表示浮点数存在误差

相关代码:


// double - 双精度浮点型 (8个字节)
// float - 单精度浮点型 (4个字节)
public class DoubleDemo {
    public static void main(String[] args) {
        // 1. 定义变量
        double  a1 = 3.5 ;
        //float a2 = 3.5 ;// 编译错误: java中的浮点数直接量默认是double类型。 不能将double直接赋值给float.
        float a2 = 3.5F  ;//  直接量的好后面,使用“F 或 f” ,让直接量为float类型。

        // 2. double 用于计算: + , - , *  ,  /   , %
        double a3 = 1.5 ;
        System.out.println(a1 + a3); // 5.0
        System.out.println(a1 - a3); // 2.0
        System.out.println(a1 * a3); // 5.25
        System.out.println(a1/a3); // 2.3333333333333335
        System.out.println(a1%a3); // 0.5

        double a4 = 1.4 ;
        System.out.println(a3 - a4);//0.10000000000000009

        // 3. 练习: 计算自由落体运动的位移 :  s = 1/2 * g * t * t;
        double g = 9.8 ;
        int  t = 5 ;
        double s ;
        s = 0.5 * g * t * t; // 运算数据有double类型,因此整体的结构时double类型。
        System.out.println("位移为:" + s ); // 位移为:122.5


    }
}

3.4  字符类型Char

  • 字符类型实质上是一个16位的无符号整数,这是整数对应的字符编码

        Java字符类型采用Unicode字符集编码。Unicode字符编码是国际上通用的定长字符集,所有字符都是16位。

        字符直接量,可以采用字符的形式,比如‘中 ’;

        或者采用Unicode编码的方式,比如:‘\u4e4d’

        字符是整数可以参与运算,比如 char c = ‘A’ ; int a = 10 + c ;//75

  • 字符直接量赋值

        整数赋值(0~65535)

        Unicode编码赋值

        eg: char a = ‘A’;

        char a = 65;

        char a = ‘\u0045’;

  • 转义字符(\):对于不方便输出的字符,采用转义字符表示。

相关代码:

// char - 字符   , 本质就是一个整数 , 占两个字节, 且无符号位。
public class CharDemo {
    public static void main(String[] args) {
        // 1. 定义字符类型的变量
        char a = 'A';
        System.out.println(a);
        // char b = 'AB';// 编译错误: 字符只能是单个
        // 2. 字符的本质就是整数
        // 字符和整数的对应关系,一般就称为编码表。
        // 比如ascii码表 , utf-8编码表, gbk编码表
        int b = a ; // 这里把a的编码对应的整数,赋值给变量b .
        System.out.println(b); // 65
        int c = '中';  // ‘中’对应的编码,赋值给c。
        System.out.println(c);
        // 3.  字符的表达方式
        char  d = '0';
        char  d1 = 48 ;
        char  d2 = '\u0048';
        System.out.println(d  + ":" + d1 + ":" + d2);
        // 4. 字符的运算
        char  d3 = '0'; // 编码为48
        char d4 = '9'; // 编码为57
        System.out.println(d4 - d3); //  9
        //5 . 字符范围
       // char  c2 = -5 ; // 编译错误 : 字符都是正整数 , 这里比最小值还小。
       //  char  c3 = 1000000; // 编译错误:超过了字符的最大值(65535)
        int  k = 100000;
        //char c4 = k ;  //编译错误: 只能把整数的直接量赋值给字符 ,不能把int变量赋值给字符。
        short k1 = 300;
       //  char c5 = k1;
        // 6. 转义字符:  程序中的特殊字符,如果要输出,可以选择使用 "\ + 字符"方式, 然后输出这个内容。
        System.out.println("孔子说:\"学而时习之。\"");
        System.out.println("3\t+\t5\t=\t8");


    }
}

 3.5 布尔类型 Boolean

  • boolean类型,即布尔类型,适用于逻辑运算,一般在程序流程控制中作为条件判断。
  • boolean类型的值只有两个:true/false。不能用0或非0代替true/false.
  • boolean类型不能与整数类型做转换。

相关代码:

//boolean-布尔:true(真),false(假)
public class BooleanDemo {
    public static void main(String[] args) {
        //1.定义变量
        //java中规定boolean类只有两个值:true,false
        boolean a = true;//true就是一个直接量
        boolean b = false;//false就是一个直接量
        //boolean c = 1;//1不是布尔类型。不能赋值给变量c
        //2.运算,逻辑运算
        //&&与运算,||或运算,!非运算
        boolean c = a && b;//c=false
        System.out.println(c);
        c = a||b;//c=true
        c = !a;//c=false
        //3.Boolean类型只要用于条件判断
        int age=19;
        boolean d = age > 18 ;//age>18,结果是true。所以d=true
        if(d){
            System.out.println("成年人");
        }
        else{
            System.out.println("未成年人");
        }

    }
}

3.6  数据类型转换

  • 自动数据类型转换(隐式转换):小类型,自动转为大类型。

  • 强制数据类型转换:从大类型,转到小类型,需要强制转化,可能会有精度损失或者溢出。

相关代码:

//数据类型转换
//自动类型转换
//强制类型转换
public class DataTypeDemo {
    public static void main(String[] args) {
        //1.自动类型转换
        long a1 = 100;//自动类型转换,直接量100是int类型.a1是long类型。说明这里就自动类型转换
        //int a2 = 3.6;//编译错误,3.6是double类型,a2是int,不能直接转换
        int a2 = (int)3.6;//强制数据转换,在数据3.6前面添加(int),告诉程序把3.6转换成int
        double a3 = 3.6;
        System.out.println("a1:"+a1);//100
        System.out.println("a2:"+a2);//3
        System.out.println("a3:"+a3);//3.6
        //3.强转造成精度损失或者溢出
        double d = 3.154654562515;
        float d1 = (float) d ;
        System.out.println("精度损失:"+d1);

        long data = 10000000000L;
        int data1 = (int)data;
        System.out.println("溢出:"+data1);
        //4.byte,short两种数据
        byte b1 = 100 ;
        //byte b2 = 200;//编译错误,超出了short的范围
        short s1 = 100;
        //short s2=10000000;//编译错误,超过了short的范围
        byte b2 = 5;
        //byte b3=b1+b2;//编译错误,数据类型不匹配,Java中的运算byte和short,都会转换为int的结果
        byte b3=(byte)(b1+b2);
        System.out.println("b3:"+b3);
        //5.面试题
        short c1 = 5;
        short c2 = 5;
        //short c3 = c1+c2;//编译错误,short参与运算的时候,转换为int,运算结果就是int,int类型不能直接赋值给short
        short c3 = (short)(c1+c2);
        System.out.println("c3:"+c3);
        short c4 = 5+5;//这里可以,是因为编译时,这里的5+5是直接量的运算,已经计算出结果为10,10可以赋值给short
        //一天的毫秒数
        long time = 24*60*60*1000;//这里全都是直接量,所以编译器会将结果算出来,赋值给time
        System.out.println(time);
        //6.练习
        //a.定义一个long类型的变量赋值给double类型的变量
        //b.定义一个char类型的变量赋值给short类型
        //c.定义一个float类型的变量,然后赋值给int类型
        //d.定义一个Boolean类型的变量,然后赋值给byte类型

        long h1 = 10;
        double h2 = h1;//自动类型转换
        System.out.println("h2:"+h2);
        char h3 = 'A';
        short h4 = (short)h3;//强制类型转换
        System.out.println("h4:"+h4);
        float h5 = 5.235641541F;
        int h6 = (int)h5;//强制类型转换
        System.out.println("h6:"+h6);
        boolean h7 = true;
        //byte h8 = (byte)(h7);//编译错误,Boolean类型不能转成任何类型的整数


    }
}

4.运算符

4.1算数运算符

  • Java中的算数运算符,包含:+(加),-(减),*(乘),/(除),%(取余),++(自增),--(自减)。

        ++(自增),--(自减)运算是在自身值的基础上,增加或者减少1.

        ++,--写在变量的前面,运算的时候,需要先增加或者减少1,再参与运算。

        ++,--写在变量的后面,运算的时候,需要先参与运算,再增加或者减少1。

  • “+”,“-”,可以作为数据正负符号。

相关代码:

//算数运算符:+, - ,* ,/, %
//          ++ ,--
//          符号(+ -)
//能做算数运算的类型: byte,short,int,long,char,float,double
//不能做算术运算的类型:Boolean,其他复杂类型

public class SuanShuDemo {
    public static void main(String[] args) {
        //1.加法(减法,乘法)运算
        long data1 = 10;
        double data2 = 3.5;
        double data3=data1 + data2;//运算结果以大范围的数据为准
        System.out.println("data3:"+data3);
        //2.除法运算
        double data4 = data1/3*data2;//运算结果以大范围数据为准
        System.out.println("data4:"+data4);//10.5
        data4=1/2;//0.0:这里1,2都是int类型,所以运算结果是0,但是把int的数据类型赋值给double类型,所以最终值是0.0
        System.out.println("data4:"+data4);
        data4=1/2.0;
        System.out.println("data4:"+data4);//0.5
        //3.取余(%)运算
        long m = data1 % 3;//如果m是0,表示他能整除,如果m不是0,表示不能整除
        boolean k = m==0;//m==0,表示判断m是否为0,是结果为true,不是结果为false
        System.out.println("k:"+k);
        //4.++(--)运算:在原来的数据上增加1或者减少1
        int i = 5;
        i ++; //自增,i = i + 1;自己加1再赋值给自己
        System.out.println("i:"+i);
        i --;
        System.out.println("i:"+i);
        /*
        int j = ++ i;//前自增:先对i进行增加,然后把增加后的数据值,赋值给变量j
        System.out.println("i:"+i+",j:"+j);
        */
        int j =i ++;//后增加:先把i的数据值,赋值给变量j,然后在对i增加1
        System.out.println("i:"+i+",j"+j);//i=6,j=5

        /*int i1 = i++ + j++ + i--;
        System.out.println("i1:"+i1);//i1=18

         */
        int i2 = ++i + j++ + i--;
        System.out.println("i2:"+i2);

        //5.符号(+,-)
        int m1 = -5;//负号
        int m2 = +5;//正好
        int m3 = -5-5;
        System.out.println("m3:"+m3);
        int m4 = -5 + -10;
        System.out.println("m4:"+m4);
        int m5 = -5+ +10;
        System.out.println("m5:"+m5);

    }


}

4.2关系运算符

  • Java中的关系运算符,包含:>(大于),<(小于),==(等于),>=(大于等于),<=(小余等于),!=(不等于)。
  • 关系运算的结果为boolean类型。

相关代码

//关系运算
//大于(>) , 大于等于(>=), 等于(==) , 不等于(!=), 小于(<), 小于等于(<=)
//能进行关系运算:byte, short,char,int,float,double
//不能进行关系运算:Boolean,其他的引用类型

public class GuanXiDemo {
    public static void main(String[] args) {
        int a = 100;
        int b = 200;
        boolean r = a > b;//关系运算:r是false
        System.out.println("r:"+r);
        char c = '中';
        char c1 = '国';
        if(c>c1){ // c > c1 : 如果满足条件。那么就是true。否则就是flase
            System.out.println("中的编码值大于国的编码值");
        }
        else{
            System.out.println("中的编码值小于国的编码值");
        }
        //2.等于(==)
        int a1 = 10 ;
        int a2 = 20 ;
        //int a3 = a1==a2;//编译错误:a1==a2是条件运算,结果是Boolean类型,不能赋值给int类型
        int a3 = a2 = a1 ; //"="是赋值运算
        System.out.println("a1:"+a1+",a2:"+a2+",a3:"+a3);
        //3.练习:定义两个整数,找到两个整数中最大的那个值
        a1=30;
        a2=50;
        boolean b1 = a1 >= a2;//赋值的优先等级最低,先做其他运算,最后赋值
        if(b1){
            System.out.println("a1大:"+a1);
        }
        else {
            System.out.println("a2大:"+a2);
        }


        }
}

4.3逻辑运算符

  • && “与”运算
  • || “或”运算
  • !“非”运算
  • 逻辑运算的结果为boolean类型。

相关代码:

//   逻辑运算: &&与,||或,!非
//   运算规则:与运算(全为真则结果为真,有一个假则结果为假);
//           或运算(全为假则结果为假,有一个真则结果为真);
//           非运算(真变假,假变真,本质就是取反)
//   能做逻辑运算的类型:Boolean
//   不能做逻辑运算的类型:除了Boolean类型,都不能做逻辑运算


//  短路逻辑: && , ||,当我们能判断出运算结果的时候,后续的表达式不再执行,——常用短路逻辑
//  不短路逻辑: & , | , 每个参与运算的表达式都需要执行。——不常用

public class LuoJiDemo {
    public static void main(String[] args) {
        boolean b1 = true ;
        boolean b2 = true ;
        boolean b3 = false;
        boolean b4 = b1 && b2 ;//true
        System.out.println(b4);
        b4 = b1 && b2 && b3 ;//false
        System.out.println(b4);
        b4 = b1 || b3 ;//true
        System.out.println(b4);
        b4 = b1 || b2 || b3 ;//true
        System.out.println(b4);
        b4 = ! b3 ;//true
        System.out.println(b4);
        b4 = !(b1||b2) ;//false
        System.out.println(b4);
        b4 = !(b1 && b3)|| b3 ;//true
        System.out.println(b4);

        //2.短路逻辑与,短路逻辑或
        int a = 3 , b = 5 ;
        /*boolean b5 = a > b && a++ > 1 ;//a>b是false,那么&&运算的结果确定出来是false,这里用的是”短路&&“,
                                       // 所以后面a++>1的语句不会被执行到,因此a的结果还是3
        System.out.println("a:"+a);//a是3

        boolean b5 = a > b & a++ > 1;//"&"不短路与,整个运算的所有表达式都要执行
        System.out.println("a:"+a);//a是4

        boolean b6 = a < b || a ++ > 0 ;//a<b 结果为true,“短路||运算”, 后面的a++>0不会判断。
        System.out.println("b6:"+b6+",a:"+a);

         */
        boolean b6 = a > b || a ++ > 0 ;//a>b结果为false,或运算结果不定,因此判断a++>0的情况。
        System.out.println("b6:"+b6+",a:"+a);

    }
}

4.4 赋值运算符和扩展赋值运算符

  • 赋值运算符“=”是最常用的赋值运算。它将“=”右边的运算结果的值,赋给“=”左边的变量。
  • 赋值运算符的优先级很低。(低于算数运算符)
  • 在赋值运算符的前面,加入算数运算符,即为扩展赋值运算符。

                +=,-=,*=,/=,%=

4.5 字符串拼接"+"

  • 运算符“+”,用于数据类型,加法运算。
  • 运算符“+”,用于字符串型,字符串拼接运算。
  • 字符串(String)+ 数据,java中会自动将数据转为字符串,然后两个字符串相连,生成一个新的字符串。

4.6三目运算符

  • 三目运算符格式:

                X ? Y : Z; --?boolean表达式?表达式1 : 表达式2;

  • X为boolean表达式,如果X为true,在运算结果为Y的值,

                如果X为false,则运算结果为Z的值。

4.7扩展赋值运算和三目运算 和字符串拼接代码:

//1.= ,赋值运算
//2.+=,-=,*=,/=,%= 扩展的赋值运算符:表示变量的数据取出来和其他的数据进行运算,然后把运算结果赋值给变量。
//3.”+“用于字符串拼接
//4.三目运算: ? : , 语法规则:boolean表达式?表达式1:表达式2,boolean值为true,执行表达式1,否则执行表达式2

import java.util.Scanner;

public class OtherYunSuanDemo {
    public static void main(String[] args) {
        //1.扩展的赋值运算符
        int k = 10 ;
        k += 20;//k=? 这里k+=20等价于k=k+20.所以k=30
        System.out.println("k:"+k);

        k/=4;//k=?,k=k/4,所以k=7
        System.out.println("k:"+k);
        //2."+"做字符串拼接
        String str = "hello" ;
        System.out.println(k+k+str);//14hello
        System.out.println(k+str+k);//7hello7
        System.out.println(str+k+k);//hello77
        System.out.println(str+(k+k));//hello14
        System.out.println((str+k)+k+k);//hello777
        System.out.println(str+k+k);//hello77
        System.out.println(k+k+k+k);//28
        //3.三目运算
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你的年龄:");
        int age1 = scanner.nextInt();
        int age = 19 ;

        String info = age1 >= 18?"成年人":"未成年人";//需要把三目运算的结果,赋值给一个变量保存起来
        System.out.println("你现在:"+age1+"岁,你是:"+info);
    }
}

 5.Java程序的结构

5.1 顺序结构

  • 按照由上到下的顺序依次执行的代码

5.2 分支结构

  • Java语法中的分支结构包含以下四种
  • 分支结构可以嵌套使用

                1.if //如果…

//介绍if的语法规则
//     if(boolean值){//代码},boolean值为true,那么执行if语句块,值为false,跳过这段代码,不执行这段代码
public class IfDemo {
    public static void main(String[] args) {
        //如果超过99,就打八折
        Scanner scanner = new Scanner(System.in);
        System.out.println("请用户输入单价和数量:");
        double price = scanner.nextDouble();
        int number = scanner.nextInt();
        double total = price * number;//有double类型参与运算,结果为double类型
        //判断total是否超过999,然后觉得是否需要打折
        if(total>=999){
            total*=0.8;
        }
        System.out.println("您需要支付:"+total);

    }
}

                2.if……else…… //如果…否则…

//用户输入1-7的整数,然后程序转换为:星期几
public class IfElseManyDemo1 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入1-7之间的整数:");
        int week = scanner.nextInt();
        if(week>=1 && week<=7){
            if(week==1){
                System.out.println("星期一");

            } else if (week==2) {
                System.out.println("星期二");

            } else if (week==3) {
                System.out.println("星期三");

            } else if (week==4) {
                System.out.println("星期四");

            } else if (week==5) {
                System.out.println("星期五");

            } else if (week==6) {
                System.out.println("星期六");

            }
            else {
                System.out.println("星期天");

            }
        }
        else {
            System.out.println("请输入1-7之间的整数");
        }
    }
}

                3.if…….else if……. //如果…否则 如果…..

//if...else if...else if....   else的后面可以使用多个if语句
public class IfElseManyDemo {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个分数:");
        double score = scanner.nextDouble();
        if(score>=0 && score<=100){
            if(score>=90){
                System.out.println("A等级");
            } else if (score>=80) {
                System.out.println("B等级");
            } else if (score>=70) {
                System.out.println("C等级");
            } else if (score>=60) {
                System.out.println("D等级");
            }
            else {
                System.out.println("E等级");
            }
        }
        else {
            System.out.println("你输入的分数不合理,应该是0-100之间的数据。");
        }
    }
}

                4.switch……case…… //switch….情况1…情况2…..

//用户输入分数,计算出等级

import java.util.Scanner;

public class SwitchDemo1 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你的分数(0-100的整数):");
        int score = scanner.nextInt();
        score/=10;//score=score/10(目的是把0-100的整数转换为0-10的整数)
        switch (score){
            case 10:// 没有break就会执行到下一个case
            case 9:
                System.out.println("A");
                break;
            case 8:
                System.out.println("B");
                break;
            case 7:
                System.out.println("C");
                break;
            case  6:
                System.out.println("D");
                break;
            default:
                System.out.println("E");

        }
    }
}

5.3 循环结构

5.3.1  for循环

  • 循环是程序设计语言中反复执行某些代码的一种计算机处理过程,是一组相同或相似的语句被有规律地执行。

        循环三要素
        1.循环变量初始化
        2.循环条件(以循环变量为判断条件)
        3.循环变量的改变(向着循环结束变)

  • for循环是最经典的循环语法,也是使用最多的循环方式。

        for语法规则:
        for(表达式1;表达式2;表达式3){
        // 语句序列
        }
        表达式1:初始化表达式,负责完成循环条件的初始化
        表达式2:循环条件表达式,值为boolean的表达式,指定循环条件
        表达式3:循环后的操作表达式,负责修改变量,改变循环条件

  • for循环的执行步骤

        步骤1:先初始化控制变量,判断该控制变量是否满⾜循环条件,是则进⼊循环体,否则退出循环
        步骤2:更新控制变量,对控制变量进⾏增量或减量操作,再判断此时控制变量是否满⾜条件,满⾜条件则进⼊循环,否则退出循环
        步骤3:继续执⾏步骤2,知道超出条件,停止循环

相关代码:

public class ForDemo {
    public static void main(String[] args) {
        //1. 围绕操场跑步10圈
        for (int i = 1 ; i<=10 ; i++){
            System.out.println("第" + i + "圈");
        }
        //System.out.println(i);//编译错误,因为i是定义在for循环内部的变量,因此在for循环语句块外不能使用变量i
        //2.练习:输出名字100次
        for(int a=1 ; a<=100 ; a++){
            System.out.println(a+":邹麟");
        }
    }
}

5.3.2 特殊的for循环

相关代码:

//特殊的for循环,把这些循环的初始条件,循环的判断,循环变量的变化,放在其他的位置

public class ForDemo1 {
    public static void main(String[] args) {
        //1.循环输出1-10
        int i=1;
        for(;i<=10;i++){
            System.out.println(i);
        }
        System.out.println("最后的i:"+i);

        int k = 1;//初始值
        for(;;){
            if(k<=10){//条件判断
                System.out.println(k);
            }else {
                break;//break关键字,在循环中,目的是结束循环
            }
            k=k+1;//初始数据的变化
        }

        int j = 1;
        for(;;j++){
            if(j<=10){
                System.out.println(j);
            }else {
                break;//break关键字,在循环中,作用是结束循环
            }
        }

        int m = 1;
        for(;m<=10;){
            System.out.println(m);
            m+=1;
        }
    }
}

5.3.3 while 循环

  •  while语法规则:

        语句0 ;
        while(循环条件){
        语句1 ;//循环体
        }
        语句2 ;

相关代码:

//while循环的语法规则
//while(boolean){
//  语句块
// }

public class WhileDemo {
    public static void main(String[] args) {
        //1.输出1*9=9到9*9=81
        int num = 1 ; //循环的初始变量
        while (num<=9){  // 循环的条件
            System.out.println(num+"*9="+(num*9)); // 循环执行的语句块
            num++; //循环初始变量的变化
        }
        //2.练习:输出名字20次
        int i= 1;
        while (i<=20){
            System.out.println(i+".zou");
            i++;
        }
        //3.练习:输出1-100中能被3整除的数据
        int n = 1;
        System.out.println("能被3整除的有:");
        while (n<=100){
            if(n%3==0){
                System.out.println(n);
            }
            n++;

        }
    }
}

5.3.4  do...while 循环

  • do…while语法规则:

        语句0 ;
        do{
        语句1;//循环体
        语句2;//
        }while (循环条件);
        语句3 ;

  • 对比while循环

        while循环先判断,再执行;
        do…while先执行一次,再判断。
        While循环比do…while循环用得多。

相关代码:

//do {语句}   while(条件) , 特点循环体至少执行一次

public class DoWhileDemo {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
//        int num;
//        do{
//            System.out.println("请输入一个数据:");
//            num = scanner.nextInt();
//        }while (num!=30);

        //练习:输入密码(123456)解锁手机,只能输入5次,超过五次提示过半小时再输入
        int count = 1 ;//记录次数
        int pwd;
        do{
            if (count==6){
                System.out.println("输入次数过多,请半小时后尝试!");
                //break; //结束循环

                return;//结束整个程序的运行
            }
            System.out.println("请输入密码:");
            pwd =scanner.nextInt();
            count++;//改变输入的次数
        }while (pwd!=123456);
        System.out.println("手机解锁成功");


    }
}

5.3.5 死循环

  • 循环没有指明结束条件的情况会造成死循环
while(true){
循环体
}
//循环条件恒为true
do{
循环体
}while(true);
//循环条件恒为true
for(;;){
循环体
}
//表达式1,2,3均为空

5.4  break & continue

  • break可用于循环语句或switch语句。

        break用于循环,可使程序终止循环从而执行循环后面的语句。常常与条件语句一起使用。

  • continue 用于循环语句中,表示跳过循环体剩余语句,继续执行下一次循环。

        continue 只能在循环语句中使用。

相关代码:

//随机出10道题,记录用户考试分数
public class TestDemo {
    public static void main(String[] args) {
        int score=0;//用于记录分数
        Scanner scanner = new Scanner(System.in);
        for(int i=1;i<=10;i++){
            int a = (int)(Math.random()*10);//强制转换
            int b = (int)(Math.random()*10);
            System.out.println("题目:"+a+"+"+b+"=");
            System.out.println("请输入你的答案:");
            int answer = scanner.nextInt();
            if(answer==-1){  //表示用户跳过这道题
                continue;//java中的关键字,用于跳过本次循环,进行下一次循环
            } else if(answer==-2){
                break;//结束for循环
            }
            else {
                if (answer == a + b) {
                    score = score + 10;//记录分数
                    System.out.println("答对啦");
                }
                else {
                    System.out.println("很遗憾,回答错误");
                }
            }

        }
        //for循环结束,考试结束,显示最终得分
        System.out.println("最后得分:"+score);
    }
}

5.5 循环的阿嵌套

  • 循环的内部再有其它循环,就是循环的嵌套。
  • 外层走一次,内层走所有次
  • 建议循环层数越少越好

6. 数组

6.1 什么是数组

  • 数组:相同数据类型的元素组成的集合
  • 元素按线性顺序排列。所谓线性顺序是指除第一个元素外,每一个元素都有唯一的前驱元素; 除最后一个元素外,每一个元素都有唯一的后继元素(“一个跟一个”),可以通过元素所在位置的顺序号(下标)做标识来访问每一个元素(下标从0开始,最大到元素的个数-1)。

6.2 数组的使用

  • 声明数组的语法:

        数据类型[] 数组名 = new 数据类型[大小];

  • 数组声明后的默认值

        -数组new之后,每个元素都有默认值。int,long默认值为0,double默认值为0.0,boolean默认值为false,char默认值为空字符。

相关代码:

// array --数组
//当我们由一组数据需要保存在一个变量中的时候,一般可以声明一个对应长度和对应数据类型的数组,然后把这组数据存储在数组中

public class ArrayDemo {
    public static void main(String[] args) {
        //1.定义一个数组
        //int a=1,b=10,c=20,d=30,e=50;//定义了五个变量,存储5个数据
        int [] arr ;
        //arr = new int[];//编译错误,在创建数组对象的时候,必须指定数组的长度
        arr = new int[6];//内存空间会分配长度为6个整型数据空间
        //2.数据的初始化
        int[] arr1 = new int[5];//arr1的长度是5,这里的每个元素都是int类型的默认值:0
        char[] arr2 = {'A','B','A',10};//arr2的长度时4,每个位置的元素值已经指定了
        double[] arr3 = new double[]{1.5,2.5,3.5,4.5};//arr3的长度是4,每个位置都有具体的数据

        //3.通过数组的下标(从0开始,到元素个数-1结束) 访问数组中的元素
        /*System.out.println(arr1[0]);//arr1[下标]
        System.out.println(arr1[1]);
        System.out.println(arr1[2]);
        System.out.println(arr1[3]);
        System.out.println(arr1[4]);//数组长度是5,下标值:0,1,2,3,4  其他数据发生异常
         */
        for (int i=0 ;i<5;i++){
            System.out.println(arr1[i]);
        }
    }
}

数组的交换位置:

public class ArrayDemo2 {
    public static void main(String[] args) {
        //1.创建整型数组
        int[] arr = new int[ ]{10,15,8,40,25,5};
        //2.把数组中最大的数据移动到末尾
        for(int i= 0 ;i<arr.length-1;i++){
            if (arr[i]<arr[i+1]){ //当前元素小于下一个元素不交换位置,反之交换位置
                continue;//退出本次循环
            }else {
                int temp = arr[i];
                arr[i] = arr[i + 1];
                arr[i + 1] = temp;
            }
        }
        //3.遍历出数组的元素
        for (int i=0;i<arr.length;i++){
            System.out.print(arr[i]+"\t");
        }
        System.out.println();

        //4.练习:把最小值移动到末尾
        for (int i = 0;i<arr.length-1;i++){
            if(arr[i]<arr[i+1]){
                int temp=arr[i];
                arr[i]=arr[i+1];
                arr[i+1]=temp;
            }
        }
        //遍历数组
        System.out.println("末尾是最小的");
        for (int i=0 ;i<arr.length;i++){
            System.out.print(arr[i]+"\t");
        }

    }
}

6.3 数组的排序

  • 冒泡排序:所谓的冒泡算法就是从左往右依次比较两个数大小,若前一个数大于后一个数,则两个数交换位置
//bubble :泡
// 冒泡排序:双重for循环,waicengfor循环走一次,内存循环n次,就能把数组中的每一个元素的位置排好

public class BubbleDemo {
    public static void main(String[] args) {
        int[] arr = new int[ ]{10,15,8,40,25,5};
        //1.升序排序
        for(int i = 0;i<arr.length-1;i++){
            for (int j = 0 ;j<arr.length-1;j++){ //j=0,1,2,3,4,5
                if(arr[j]>arr[j+1]){
                    continue;
                }else {  //下一个小就交换位置
                    int temp =arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=temp;
                }
            }
        }
        //2.输出升序数组
        for (int i =0;i<arr.length;i++){
            System.out.print(arr[i]+"\t");
        }
        System.out.println();

        //3.降序排序
        for(int i = 0;i<arr.length-1;i++){
            for (int j = 0 ;j<arr.length-1;j++){ //j=0,1,2,3,4,5
                if(arr[j]<arr[j+1]){
                    continue;
                }else {  //下一个小就交换位置
                    int temp =arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=temp;
                }
            }
        }
        //4.输出降序数组
        for (int i =0;i<arr.length;i++){
            System.out.print(arr[i]+"\t");
        }

    }
}

数组的排序函数sort(Arrays.sort()——jdk提供的排序方法。)

String[] names ={"tom","cat","jerry"};
      Arrays.sort(names);
 
     System.out.println( Arrays.toString(names) );   // import
java.util.Arrays;

7. 案例题

7.1  bmi指数计算

// BMI的公式=体重(kg)/身高(m) * 身高(m) , 先算身高的平方,然后再算除法 。
public class BMIDemo {
    public static void main(String[] args) {
        // 要求 : 让用户输入姓名, 体重   , 身高  , 然后根据用户输入的数据,计算bmi指数 , 然后输出bmi指数
        Scanner scanner = new Scanner(System.in);
        double  bmi , h  , w ;
        System.out.println("请输入你的姓名:");
        String  name = scanner.next() ;  // 输入字符串
        System.out.println("请输入身高(m):");
        h = scanner.nextDouble() ;// nextDouble: 用于输入double类型数据
        System.out.println("请输入体重(kg):");
        w = scanner.nextDouble() ; //
        // 计算bmi
        bmi =  w / (h * h);
        System.out.println(name + ",你的bmi:" + bmi);
    }


}

7.2  随机字符

//产生 A~Z的随机字符
// 练习: 0~9随机整数
// 练习:  a~z的随机字符
public class AZDemo {
    public static void main(String[] args) {
        // 1. 产生随机数
         double random = Math.random();  // Math.random() 产生一个随机数 , [0,1)区间的浮点数
         double data = random * 26 ;
         int  a  = (int) data ; // java的强制数据类型转换
         System.out.println("0~26:" + a);
         // 2.  得到随机字符
         char c = (char)(a  +  65);// java的强制数据类型转换
         System.out.println("随机字符:" + c);
    }
}

7.3  三目运算找最大值

//用三目运算。判断出用户输入的两个数据中最大的那个
public class MaxData {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入第一个数:");
        int a1= scanner.nextInt();
        //Scanner scn = new Scanner(System.in);
        System.out.println("请输入第二个数:");
        int a2 = scanner.nextInt();
        int max = a1>a2 ? a1 : a2;
        System.out.println("两个数据中较大的是"+max);

    }
}

7.4  判断年龄的区间

public class AgeDemo {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你的年龄:");
        int age = scanner.nextInt();
//        int a=18,b=30;
//        boolean age1 = age >= a && age <= b;
//        if(age1){
//            System.out.println("年龄18到30岁之间");
//        }
//        else{
//            System.out.println("年龄不在18到30岁之间");
//        }
        if(age < 18 || age > 30){
            System.out.println("不在18~30之间");
        }
        else{
            System.out.println("在18~30之间");
        }


    }

}

7.5  猜数字

import java.util.Scanner;
// 猜数字: 随机产生一个整数, 让用户输入一个数据,然后对比大小,直到用户猜正确
public class GuessData {
  public static void main(String[] args) {
    // 1. 产生一个随机整数[0,100)
    int data = (int)(Math.random()*100);
    System.out.println("data:" + data);
    // 2. 输入数据的功能
    Scanner sc = new Scanner(System.in);
    // 3. 循环让用户输入数据,然后对比大小,直到用户输入正确
    while(true){ // while的条件为true的时候, 表示这个while循环会一直执行。一般称这种情况为”死循环“
          // 我们可以循环代码块中,做条件判断, 符合某种条件的时候 ,就利用break, 结束循环。
      System.out.println("请输入一个整数[0,100):");
      int input = sc.nextInt();
      if(input > data){
         System.out.println("太大了, 小一点。");
       }else if(input < data){
          System.out.println("太小了, 大一点");
       }else{
          System.out.println("恭喜你,猜对了。");
          break; // 结束循环
     }
   }
 }
}

7.6   身份证验证

public class IDDemo {
    public static void main(String[] args) {
        //0.键盘输入一个字符串类型的身份证号码
        Scanner scanner=new Scanner(System.in);
        String next = scanner.next();//字符串输入
        char[] id = next.toCharArray();//toCharArray--转为字符数组 toString--转为字符串
        //1.身份数据
       
        int [] id17 = new int[17];
        for (int i = 0;i<id17.length;i++){
            id17[i]=id[i]-48;

        }
        char id18 = id[id.length-1];
        //2.系数
        int[]datas={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
        //3.校验位
        char[]valids={'1','0','X','9','8','7','6','5','4','3','2'};
        //4.累加的算法
        int sum = 0 ;
        for (int i=0 ;i<id17.length;i++){
            sum +=id17[i]*datas[i];
        }
        //5.计算余数
        int yu = sum%11;
        //6.把余数作为valids数组的下标,获取到数组元素
        char data =valids[yu];
        if(data==id18){
            System.out.println("身份证正确!");
        }else{
            System.out.println("身份证错误!");
        }

    }
}

8.【JAVA基础阶段企业常见面试题】

8.1  在JAVA中,如何跳出当前多重嵌套循环?

可以使用break跳出循环


8.2  JDK和JRE有什么区别?

JDK全程Java开发工具包Java Development Kit。包含了JRE,Java的调试、编译等工具。

JRE全程Java运行环境Java Runtime Environment。包含了JVM,java运行工具等。


8.3  =、==、和equls的区别

=是赋值

== 是个,本质上用于比较两个值是否相等

equals是个方法,用于比较当前对象是否与另一个对象相等


8.4  string是基础数据类型吗?基础的数据类型有哪些?

不是,基础的数据类型包括:byte、short、int、long、char、float、double、boolean


8.5  如何实现数组和List之间的转换?

数组转 List:使用 Arrays. asList(array) 进行转换。
List 转数组:使用 List 自带的 toArray() 方法。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值