four数组

 
/*
    数组概念:
        java中用来存储多个数据的大容器
    特点:
        1.可以存储多个数据
        2.多个数据的类型必须保持一致
        3.数组长度是永远不可以发生改变的

    数组变量的定义格式
        1.数组变量定义格式一:		推荐使用
            数据类型[] 数组名称;

        2.数组变量定义格式二:		不推荐使用的
            数据类型 数组名称[];

        3.练习:
            (1)定义一个存储int类型数组的变量arrayA
            (2)定义一个存储double类型数组的变量arrayB
            (3)定义一个存储char类型数组的变量arrayC

        4.关于 int[] arrayA的理解:
            (1)这里只是定义一个可以存储一个int数组容器的变量,但是没有向该变量中存储数组容器
            (2)相当于教室的门牌号,但是该门牌号并没有对应的教室
 */
public class Demo02ArrayVar {
    public static void main(String[] args) {
        //(1)定义一个存储int类型数组的变量arrayA
        //这里是定义一个变量,只不过该变量是用来存储一个数组容器的,数组容器中都是int数据
        int[] arrayA;
        //上面只是定义一个存储数组容器的变量,但是没有存储真正的数组容器,
        //变量中没有值,是不能用的
        //System.out.println(arrayA);

        //int arrayA[];
        //(2)定义一个存储double类型数组的变量arrayB
        //这里是定义一个变量,只不过该变量是用来存储一个数组容器的,数组容器中都是double数据
        double[] arrayB;
        //(3)定义一个存储char类型数组的变量arrayC
        //这里是定义一个变量,只不过该变量是用来存储一个数组容器的,数组容器中都是char数据
        char[] arrayC;
    }
}
/*
    数组的第一种初始化方式(动态初始化: 指定数组长度)
        1.格式:
            数据类型[] 数组名称 = new 数据类型[长度];

        2.格式解释:
            (1)左侧数据类型: 表示该数组容器中可以存储什么类型的数据
            (2)左侧[]: 代表数组的意思
            (3)数组名称: 就是一个标识符,方便使用数组
            (4)=: 表示赋值的意思,把=号右侧的数组容器在内存中的地址值,赋值给=号左侧的数组变量
            (5)new: JVM在内部创建数组的过程
            (6)右侧数据类型: 和左侧保持一致
            (7)长度(必须是int类型): 规定了数组容器中可以存储多少个数据

        3.练习:
            (1)创建一个int类型的数组,可以存储3个int数据,给该数组起个名称叫做arrayA
            (2)创建一个double类型的数组,可以存储7个double数据,给该数组起个名称叫做arrayB
            (3)创建一个char类型的数组,可以存储5个char数据,给该数组起个名称叫做arrayC
 */
public class Demo03ArrayInit {
    public static void main(String[] args) {
        //(1)创建一个int类型的数组,可以存储3个int数据,给该数组起个名称叫做arrayA
        int[] arrayA = new int[3];

        //(2)创建一个double类型的数组,可以存储7个double数据,给该数组起个名称叫做arrayB
        double[] arrayB = new double[7];

        //(3)创建一个char类型的数组,可以存储5个char数据,给该数组起个名称叫做arrayC
        char[] arrayC = new char[5];
    }
}
/*
    数组的第二种初始化方式(标准格式静态初始化: 指定元素)
        1.格式:
             数据类型[] 数组名称 = new 数据类型[]{元素1,元素2,...,元素n};

        2.注意:
            (1)右侧{}中的数组元素之间使用逗号(,)隔开,最后一个元素后面没有逗号
            (2)右侧[]中不能写长度,只要写就报错,JVM会根据{}中元素的个数推导数组的长度

        3.练习:
            (1)创建一个int类型的数组,存储多个int数据100,200,300,给该数组起个名称叫做arrayA
            (2)创建一个double类型的数组,存储多个double数据1.1,2.2,3.3,4.4,给该数组起个名称叫做arrayB
            (3)创建一个char类型的数组,存储多个char数据'真','的','好','想','你',给该数组起个名称叫做arrayC
 */
public class Demo04ArrayInit {
    public static void main(String[] args) {
        //(1)创建一个int类型的数组,存储多个int数据100,200,300,给该数组起个名称叫做arrayA
        int[] arrayA = new int[]{100, 200, 300};

        //(2)创建一个double类型的数组,存储多个double数据1.1,2.2,3.3,4.4,给该数组起个名称叫做arrayB
        double[] arrayB = new double[]{1.1, 2.2, 3.3, 4.4};

        //(3)创建一个char类型的数组,存储多个char数据'真','的','好','想','你',给该数组起个名称叫做arrayC
        char[] arrayC = new char[]{'真', '的', '好', '想', '你'};
    }
}
/*
    数组的第三种初始化方式(简化格式静态初始化: 指定元素)
        1.格式:
            数据类型[] 数组名称 = {元素1,元素2,...,元素n};

        2.练习:
            (1)创建一个int类型的数组,存储多个int数据100,200,300,给该数组起个名称叫做arrayA
            (2)创建一个double类型的数组,存储多个double数据1.1,2.2,3.3,4.4,给该数组起个名称叫做arrayB
            (3)创建一个char类型的数组,存储多个char数据'真','的','好','想','你',给该数组起个名称叫做arrayC

        3.注意:
            (1)右侧{}中的数组元素之间使用逗号(,)隔开,最后一个元素后面没有逗号
            (2)不能写长度,只要写就报错,JVM会根据{}中元素的个数推导数组的长度
            (3)虽然没有写new,但是底层仍然有new的过程,完成数组的创建
            (4)动态初始化和标准格式的静态初始化数组,可以分成两步完成
            (5)简化格式静态初始化,只能一步完成,不可以分成两步(java中的用法规定)
 */
public class Demo05ArrayInit {
    public static void main(String[] args) {
        //(1)创建一个int类型的数组,存储多个int数据100,200,300,给该数组起个名称叫做arrayA
        int[] arrayA = {100, 200, 300};
        //(2)创建一个double类型的数组,存储多个double数据1.1,2.2,3.3,4.4,给该数组起个名称叫做arrayB
        double[] arrayB = {1.1, 2.2, 3.3, 4.4};
        //(3)创建一个char类型的数组,存储多个char数据'真','的','好','想','你',给该数组起个名称叫做arrayC
        char[] arrayC = {'真', '的', '好', '想', '你'};

        int[] array;//定义int类型数组变量
        array = new int[3];//正确: 动态初始化可以分成两步完成
        array = new int[]{10, 20, 30, 50};//正确: 标准格式静态初始化可以分成两步完成
        //array = {100, 200, 300};//错误: java中规定,简化格式静态初始化,不能分成两步完成
    }
}
/*
    数组的使用:
        1.数组名称: 代表数组在内存空间中的地址值,是一个十六进制的int数字

        2.索引编号:
            (1)数组中的每个数据,称为数组元素
            (2)数组为其内部的每个元素进行编号,专业术语叫做索引(角标),从0开始到数组长度减1
            (3)索引编号必须是一个>=0的int数据

        3.数组元素的访问:
            数组名称[索引编号];
            array[0]: 代表数组array中索引编号为0的元素
            array[2]: 代表数组array中索引编号为2的元素

        4.获取数组长度(数组中可以存储元素的个数)
            每个数组内部都有一个length属性,其实就是一个int变量,记录了该数组中可以存储的元素的数量
            使用格式:
                数组名称.length: 获取数组长度,其实一个int数字
                注意:
                    length后面没有(),添加()是错误的

 */
public class Demo02UseArray {
    public static void main(String[] args) {
        //定义int数组array,并采用标准格式静态初始化
        //100的索引编号是0,200的索引编号是1,300的索引编号是2
        int[] array = new int[]{100, 200, 300};
        System.out.println(array);//数组变量名: 保存数组内存地址值 [I@1540e19d
        //输出100
        System.out.println(array[0]);//输出数组array中索引为0的元素值:100
        //输出200
        System.out.println(array[1]);//输出数组array中索引为1的元素值:200
        //输出300
        System.out.println(array[2]);//输出数组array中索引为2的元素值:300
        System.out.println("----------");
        //把100修改成1000
        array[0] = 1000;//把int数字1000存储到数组array中索引为0的元素中
        //把200修改成2000
        array[1] = 2000;//把int数字2000存储到数组array中索引为1的元素中
        //把300修改成3000
        array[2] = 3000;//把int数字3000存储到数组array中索引为2的元素中
        //输出1000
        System.out.println(array[0]);//输出数组array中索引为0的元素值:1000
        //输出2000
        System.out.println(array[1]);//输出数组array中索引为1的元素值:2000
        //输出3000
        System.out.println(array[2]);//输出数组array中索引为2的元素值:3000

        //获取数组元素个数(长度)
        int count = array.length;
        System.out.println("数组中元素个数: " + count);//3
        System.out.println("数组中元素个数: " + array.length);//3
        System.out.println("数组中元素最大索引: " + (count - 1));//2
        System.out.println("数组中元素最大索引: " + (array.length - 1));//2
        System.out.println("数组最大索引对应的元素值: " + array[count - 1]);//3000
        System.out.println("数组最大索引对应的元素值: " + array[array.length - 1]);//3000

        /*
            array[array.length - 1]: 表示获取数组元素,[]中是一个索引
            先计算[]中的索引值: array.length - 1  --> 长度 - 1  --> 3 - 1 --> 2
            再计算array[2]: 3000
         */
        System.out.println(array[array.length - 1]);
    }
}
/*
    数组遍历:
        就是将数组中的每个元素分别获取出来,就是遍历。遍历也是数组操作中的基石。

    注意for循环的结束条件的两种写法:
        <=array.length - 1
        <array.length

    快捷键:
        数组名称.fori: 正着遍历
        数组名称.forr: 倒着遍历
 */
public class Demo03EachArray {
    public static void main(String[] args) {
        //定义int数组array,并采用简化格式初始化
        int[] array = {100, 200, 300};
        System.out.println(array[0]);
        System.out.println(array[1]);
        System.out.println(array[2]);
        System.out.println("---------");
        /*
            问题:
                以上代码重复,只有表示索引的0,1,2数字不同
            优化:
                使用for循环获取表示索引的0,1,2数字
         */
        for (int i = 0; i < 3; i++) {
            System.out.println(array[i]);
        }
        System.out.println("---------");
        /*
            问题:
                以上代码for循环中,表示长度的数字3写死了
            优化:
                获取数组的长度 数组名称.length
         */
        for (int i = 0; i < array.length; i++) {
            System.out.println(array[i]);
        }
        System.out.println("---------");
        for (int i = 0; i <= array.length - 1; i++) {
            System.out.println(array[i]);
        }
    }
}
/*
    需求:
        计算一个int数组的元素之和

    实现步骤:
        1.创建int数组array,并初始化
        2.定义int变量sum,初始值0,用来累加求和
        3.使用for循环遍历int数组array
        4.循环内部把当前元素累加到求和变量sum中
        5.循环结束后,输出求和结果sum
 */
public class Demo04SumArray {
    public static void main(String[] args) {
        //1.创建int数组array,并初始化
        int[] array = {100, 200, 300, 400};
        //2.定义int变量sum,初始值0,用来累加求和
        int sum = 0;
        //3.使用for循环遍历int数组array
        for (int i = 0; i < array.length; i++) {
            //4.循环内部把当前元素累加到求和变量sum中
            sum = sum + array[i];
        }
        //5.循环结束后,输出求和结果sum
        System.out.println("数组元素和: " + sum);
        //6.计算平局值(不考虑小数部分)
        int avg = sum / array.length;
        System.out.println("数组元素平均值: " + avg);
    }
}
/*
    扩展练习:
    有个int数组,内部存储元素 8,5,7,13,16,10,11,18,30,15,17
    要求:
        1.打印所有的偶数数字
        2.打印所有的偶数数字之和
        3.打印所有的偶数数字的个数
    实现步骤:
        1.创建int数组array,并初始化
        2.定义int变量sum,初始值0,用来求数组偶数元素之和
        3.定义int变量count,初始值0,用来统计数组偶数元素个数
        4.使用for循环变量int数组array
        4.1 循环内部判断如果当前元素是偶数
        4.2 输出当前偶数元素
        4.3 把当前偶数元素累加到求和变量sum中
        4.4 计数器count的值增加1
        5.for循环结束后输出结果数据
 */
public class Demo05SumOuArray {
    public static void main(String[] args) {
        //1.创建int数组array,并初始化
        int[] array = {8, 5, 7, 13, 16, 10, 11, 18, 30, 15, 17};
        //2.定义int变量sum,初始值0,用来求数组偶数元素之和
        int sum = 0;
        //3.定义int变量count,初始值0,用来统计数组偶数元素个数
        int count = 0;
        //4.使用for循环变量int数组array
        for (int i = 0; i < array.length; i++) {
            //4.1 循环内部判断如果当前元素是偶数
            if (array[i] % 2 == 0) {
                //4.2 输出当前偶数元素
                System.out.println(array[i]);
                //4.3 把当前偶数元素累加到求和变量sum中
                sum = sum + array[i];//sum += array[i];
                //4.4 计数器count的值增加1
                count++;
            }
        }
        //5.for循环结束后输出结果数据
        System.out.println("以上偶数元素个数: " + count);
        System.out.println("以上偶数元素之和: " + sum);
    }
}
/*
    扩展练习:
    有个int数组,内部存储元素 8,5,7,13,16,10,11,18,30,15,17
    要求:
        1.打印所有的偶数数字
        2.打印所有的偶数数字之和
        3.打印所有的偶数数字的个数
    实现步骤:
        1.创建int数组array,并初始化
        2.定义int变量sum,初始值0,用来求数组偶数元素之和
        3.定义int变量count,初始值0,用来统计数组偶数元素个数
        4.使用for循环变量int数组array
        4.1 循环内部判断如果当前元素是偶数
        4.2 输出当前偶数元素
        4.3 把当前偶数元素累加到求和变量sum中
        4.4 计数器count的值增加1
        5.for循环结束后输出结果数据
 */
public class Demo06SumOuArray {
    public static void main(String[] args) {
        //1.创建int数组array,并初始化
        int[] array = {8, 5, 7, 13, 16, 10, 11, 18, 30, 15, 17};
        //2.定义int变量sum,初始值0,用来求数组偶数元素之和
        int sum = 0;
        //3.定义int变量count,初始值0,用来统计数组偶数元素个数
        int count = 0;
        //4.使用for循环变量int数组array
        for (int i = 0; i < array.length; i++) {
            //获取当前元素,保存int变量num中
            int num = array[i];
            //4.1 循环内部判断如果当前元素是偶数
            if (num % 2 == 0) {
                //4.2 输出当前偶数元素
                System.out.println(num);
                //4.3 把当前偶数元素累加到求和变量sum中
                sum = sum + num;//sum += array[i];
                //4.4 计数器count的值增加1
                count++;
            }
        }
        //5.for循环结束后输出结果数据
        System.out.println("以上偶数元素个数: " + count);
        System.out.println("以上偶数元素之和: " + sum);
    }
}
/*
    需求:
        求三个int数字的最大值

    实现步骤:
         1.定义3个int变量a,b,c,并分别初始化
         2.假设变量a是最大的,保存int变量max中
         3.判断如果b的值大于max,说明max中不是最大的了,把b的值赋值给max
         4.判断如果c的值大于max,说明max中不是最大的了,把c的值赋值给max
         5.输出结果数据max
 */
public class Demo07VarMax {
    public static void main(String[] args) {
        //1.定义3个int变量a,b,c,并分别初始化
        int a = 100, b = 200, c = 300;
        //2.假设变量a是最大的,保存int变量max中
        int max = a;
        //3.判断如果b的值大于max,说明max中不是最大的了,把b的值赋值给max
        if (b > max) {
            max = b;
        }
        //4.判断如果c的值大于max,说明max中不是最大的了,把c的值赋值给max
        if (c > max) {
            max = c;
        }
        //5.输出结果数据max
        System.out.println(a + ", " + b + ", " + c + " 三个数字的最大值: " + max);
    }
}
/*
    需求:
        求int数组元素最大值

    实现步骤:
        1.定义int数组array,并根据题目需求进行初始化
        2.假设索引为0的元素是最大的,保存到int变量max中
        3.使用for循环依次获取后面(从索引1开始)的每个元素
        3.1 如果当前元素值 大于 max,说明max中已经不是最大的了
        3.2 把当前元素值,赋值给max
        4.for循环结束后,打印max的值

    注意:
        1.求数组最大值/最小值/求和/计数,这些变量必须在for循环的前面定义
        2.for循环内部完成计算
        3.for循环的后面进行打印输出

    自己完成最小值
 */
public class Demo08MaxArray {
    public static void main(String[] args) {
        //1.定义int数组array,并根据题目需求进行初始化
        int[] array = {5, 15, 2000, 10000, 100, 4000};
        //2.假设索引为0的元素是最大的,保存到int变量max中
        int max = array[0];//第一个元素是最大的
        //3.使用for循环依次获取后面(从索引1开始)的每个元素
        for (int i = 1; i < array.length; i++) {
            //3.1 如果当前元素值 大于 max,说明max中已经不是最大的了
            if (array[i] > max) {
                //3.2 把当前元素值,赋值给max
                max = array[i];
            }
        }
        //4.for循环结束后,打印max的值
        System.out.println("最大值: " + max);
    }
}
/*
    一个数组内存图
        1.动态初始化数组,元素有默认值
            (1)基本类型
                整数数组: 0
                小数数组: 0.0
                布尔数组: false
                字符数组: 空白字符
            (2)引用类型
                所有引用类型数组: null
        2.注意
            (1)数组变量保存数组在堆内存空间的地址值
            (2)通过数组变量中保存的地址值,找到堆内存空间的具体的数组
            (3)再通过索引编号,找到要操作的该数组中的具体的某个元素
 */
public class Demo03OneArray {
    public static void main(String[] args) {
        //创建一个长度为3的int数组array,采用动态初始化的方式
        int[] array = new int[3];
        System.out.println(array);//数组名代表数组在堆内存中的地址,是一个16进制int数字: [I@1540e19d
        System.out.println(array[0]);//0
        System.out.println(array[1]);//0
        System.out.println(array[2]);//0
        System.out.println("---------");
        //给数组元素赋值
        array[0] = 100;
        array[1] = 200;
        array[2] = 300;
        System.out.println(array[0]);//100
        System.out.println(array[1]);//200
        System.out.println(array[2]);//300
    }
}

/*
    数组操作的常见问题一:
	数组索引越界(超出了范围)异常
        1.问题描述:
			java中使用java.lang.ArrayIndexOutOfBoundsException类用来描述索引越界问题的

        2.产生原因:
			当使用int数字作为索引获取数组元素时,索引值已经超出了数组的索引范围,
			无法获取该索引对应的元素
			(1)打印异常信息
			(2)停止程序的执行

        3.解决方案:
			(1)不使用超出索引范围的int数字来获取数组元素
			(2)修改索引越界的数字,让它在数组索引范围内
 */
public class Demo04ArrayProblem {
    public static void main(String[] args) {
        int[] array = {100, 200, 300};
        System.out.println(array[0]);
        System.out.println(array[1]);
        System.out.println(array[2]);
        /*
            代码报错:
                java.lang.ArrayIndexOutOfBoundsException类: 描述数组索引越界异常
            原因:
                数字3作为索引在数组中是不存在的
            JVM默认的处理方案:
                1.打印出错误(异常)信息,方便程序员修改错误(异常/问题)
                2.停止程序的执行
            解决方案:
                1.不使用超出范围的数字作为索引
                2.修改超出范围的数字,让该数字在合理的索引范围内容
         */
        System.out.println(array[3]);
        System.out.println("game...over...");
    }
}
/*
    数组操作的常见问题二:
	空指针异常
    	1.问题描述:
			java中使用java.lang.NullPointerException类,来描述空指针异常

        2.产生原因:
			null是引用类型的空常量,可以给任意引用类型的变量赋值,但是一旦引用变量的值是null时,
			说明该引用变量已经不再执行堆内存的任何空间,也就不能范围堆内存空间中的元素了
			数组变量的值是null时,说明该数组变量已经不再执行堆内存空间的任何数组了,
			所以就无法通过索引的方式访问数组元素了,只要访问,就会报出空指针异常
			(1)打印异常信息
			(2)停止程序的执行

        3.解决方案:
        	(1)不使用值是null的数组变量来获取数组元素
            (2)找到数组变量值是null的地方,给数组变量重新赋值,让改数组变量重新指向一个新的数组空间
 */
public class Demo05ArrayProblem {
    public static void main(String[] args) {
        int[] array = {100, 200, 300};
        System.out.println(array[0]);
        System.out.println(array[1]);
        System.out.println(array[2]);
        /*
            null是引用类型空常量,可以给任意引用类型变量赋值
            数组变量也是引用变量,但是一旦数组变量被赋值为null,
            说明该数组变量不再指向堆内存中的任何数组,
            就不能通过该数组变量访问数组元素了,只要访问就会报出空指针异常
         */
        array = null;
        System.out.println(array);//null
         /*
            代码报错:
                java.lang.NullPointerException类: 描述空指针异常
            原因:
                数组变量值是null,说明不再指向堆内存中的任何数组,不能访问数组元素,只要访问报出空指针异常
            JVM默认的处理方案:
                1.打印出错误(异常)信息,方便程序员修改错误(异常/问题)
                2.停止程序的执行
            解决方案:
                1.不使用值为null数组变量访问数组元素
                2.给值为null的数组变量重新赋值一个新数组
         */
        //array = new int[]{10, 20, 30, 50};
        System.out.println(array[0]);
        System.out.println("game...over...");
    }
}
/*
    break的作用:
        1.可以使用在循环和switch语句中,其它位置不可用
        2.break是用来结束所在的循环的
            (1)一旦执行break,本次循环的循环体的后续代码不再执行
            (2)一旦执行break,剩余次数的循环也不再执行
            (3)相当于从执行break的位置,直接跳转到break所在的循环的后面执行
 */
public class Demo04Break {
    public static void main(String[] args) {
        for (int i = 1; i <= 10; i++) {
            /*
                i的值是5时,if后面()中的表达式i % 5 == 0的结果是true,
                就会执行if后面{}中的break,一旦执行break,直接结束所在的for循环,
                执行for循环后面的其它语句
                    1.本次循环break后面的代码不再执行
                    2.剩余次数的循环也不再执行
             */
            if (i % 5 == 0) {
                break;
            }
            System.out.println("HelloWorld....." + i);
        }

        System.out.println("main....end....");
    }
}
/*
    continue的作用:
        1.提前结束本次循环,继续进行下一次循环
        2.continue只影响本次循环,break影响所有循环
        3.continue只能使用在循环语句中
 */
public class Demo05Continue {
    public static void main(String[] args) {
        for (int i = 1; i <= 10; i++) {
            /*
                i的值是5和10的时候,if后面表达式i % 5 == 0的结果为true,
                就会执行if后面{}中的代码continue,提前结束本次循环,
                继续进行下一次循环
                特点:
                    跳过循环体中continue后面的代码,直接执行的步进表达式
             */
            if (i % 5 == 0) {
                continue;
            }
            System.out.println("HelloWorld....." + i);
        }
        System.out.println("main....end....");
    }
}
/*
    输出[1,100]之间的数字,满足逢七过规则的数字跳过
	数字包含7或者是7的倍数:
        包含7: 个位是7 或者 十位是7
        7的倍数: 数字%7 == 0

	实现步骤:
        1.使用for循环获取1到100之间的数字
        2.循环内部判断如果满足逢七过规则 不输出
        3.循环内部判断如果不满足逢七过规则 输出该数字
 */
public class Demo06FQG {
    public static void main(String[] args) {
        //1.使用for循环获取1到100之间的数字
        for (int num = 1; num <= 100; num++) {
            int ge = num % 10;//个位
            int shi = num / 10 % 10;//十位
            //2.循环内部判断如果满足逢七过规则 不输出
            if ((ge == 7 || shi == 7) || (num % 7 == 0)) {
                System.out.println("过");
                continue;
            }
            //3.循环内部判断如果不满足逢七过规则 输出该数字
            System.out.println(num);
        }
    }
}
/*
    输出[1,100]之间的数字,满足逢七过规则的数字跳过
	数字包含7或者是7的倍数:
        包含7: 个位是7 或者 十位是7
        7的倍数: 数字%7 == 0

	实现步骤:
        1.使用for循环获取1到100之间的数字
        2.循环内部判断如果满足逢七过规则 不输出
        3.循环内部判断如果不满足逢七过规则 输出该数字
 */
public class Demo07FQG {
    public static void main(String[] args) {
        //1.使用for循环获取1到100之间的数字
        for (int num = 1; num <= 100; num++) {
            int ge = num % 10;//个位
            int shi = num / 10 % 10;//十位
            //2.循环内部判断如果不满足逢七过规则 输出该数字
            if (!((ge == 7 || shi == 7) || (num % 7 == 0))) {
                 System.out.println(num);
            }
        }
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值