Java基础快速入门: API常用类之Math,System,Object,Objects

常用API01 什么是API​ API (Application Programming Interface) :应用程序编程接口java中的API​ 指的就是 JDK 中提供的各种功能的 Java类,这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可,我们可以通过帮助文档来学习这些API如何使用。 阅读详情

本文纲要

  1. API基本使用:什么是API及文档
  2. Math类:数学计算工具类
  3. System类:系统相关工具类
  4. Object类:所有类的父类
    toString()方法
    equals()方法
    相关面试题
  5. Objects类:对象帮助类

API基本使用

API(Application Programming Interface,应用程序编程接口)是Java已经为我们写好的一些方法。通过使用这些方法,我们不需要关心底层实现,直接调用即可,从而大幅提高开发效率。

如何查阅API文档

Java官方提供了API文档(通常是CHM格式)。
在索引输入框中输入要查找的类名,即可看到该类的所有信息,包括:

  • 所在的包
  • 继承结构
  • 实现的接口
  • 类的描述
  • 构造方法
  • 成员方法及其参数、返回值、含义

以Random类为例,在文档中可以找到它的构造方法和nextInt()方法的详细说明

Math类

Math类包含一些基本数学运算的方法,所有成员都是静态的,直接用类名.方法名调用,不需要创建对象。

原因:Math类的构造方法被private修饰,无法在外部实例化。

项目结构:

com.wb.demo1 
    └── MathDemo.java 

常用方法

  • public static int abs(int a):返回参数的绝对值
  • public static double ceil(double a):向上取整
  • public static double floor(double a):向下取整
  • public static int round(float a):四舍五入
  • public static int max(int a, int b):返回两个int值中的较大值
  • public static int min(int a, int b):返回两个int值中的较小值
  • public static double pow(double a, double b):返回a的b次幂
  • public static double random():返回[0.0, 1.0)之间的随机数

代码示例

// MathDemo.java 
package com.wb.demo1;
 
public class MathDemo {
    public static void main(String[] args) {
        // abs:返回绝对值 
        int abs = Math.abs(-10);
        System.out.println(abs); // 10 
 
        // ceil:向上取整 
        double ceil = Math.ceil(10.1);
        System.out.println(ceil); // 11.0 
 
        // floor:向下取整 
        double floor = Math.floor(10.9);
        System.out.println(floor); // 10.0 
 
        // round:四舍五入 
        long round1 = Math.round(10.1);
        System.out.println(round1); // 10 
        long round2 = Math.round(1.9);
        System.out.println(round2); // 2 
 
        // max:取两个数中的较大值 
        int max = Math.max(10, 20);
        System.out.println(max); // 20 
 
        // min:取两个数中的较小值 
        int min = Math.min(10, 20);
        System.out.println(min); // 10 
 
        // pow:a的b次幂 
        double pow = Math.pow(2, 3);
        System.out.println(pow); // 8.0 
 
        // random:生成[0.0, 1.0)之间的随机数 
        for (int i = 0; i < 10; i++) {
            double random = Math.random();
            System.out.println(random);
        }
    }
}

记忆技巧:ceil单词中的l像向上翘,是向上取整;floor单词中的l像向下垂,是向下取整。

System类

System类是系统相关的工具类,同样不能被实例化(构造方法私有),所有方法都是静态的,直接用类名调用。

项目结构:

com.wb.demo1 
    └── SystemDemo.java 

常用方法

  • public static void exit(int status):终止当前运行的Java虚拟机。参数0表示正常终止,非零表示异常终止。
  • public static long currentTimeMillis():返回当前时间(毫秒值)。通常用于计算代码段执行时间。
  • public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length):数组拷贝。
    • src:源数组
    • srcPos:源数组起始索引
    • dest:目标数组
    • destPos:目标数组起始索引
    • length:拷贝的元素个数

代码示例

// SystemDemo.java 
package com.wb.demo1;
 
public class SystemDemo {
    public static void main(String[] args) {
        // exit:终止虚拟机 
        System.out.println(111);
        System.exit(0); // 此方法执行后,JVM就停止了 
        System.out.println(222); // 不会执行 
 
        // currentTimeMillis:获取当前时间毫秒值,常用于统计代码运行时间 
        long start = System.currentTimeMillis();
        for (int i = 0; i < 10000; i++) {
            System.out.println(i);
        }
        long end = System.currentTimeMillis();
        System.out.println("循环耗时:" + (end - start) + "毫秒");
 
        // arraycopy:数组拷贝 
        int[] arr1 = {1, 2, 3, 4, 5};
        int[] arr2 = new int[10];
 
        // 将arr1的所有元素拷贝到arr2的0索引处 
        System.arraycopy(arr1, 0, arr2, 0, arr1.length);
        // 将arr1的最后两个元素(索引3,4),拷贝到arr2的最后两个索引(索引8,9)
        System.arraycopy(arr1, 3, arr2, 8, 2);
 
        for (int i = 0; i < arr2.length; i++) {
            System.out.println(arr2[i]);
        }
    }
}

Object类

Object类是所有类的父类。每一个类都直接或间接地继承自Object。如果自定义类没有明确写出继承关系,JVM会默认让其继承Object。
正因为顶层父类Object只有无参构造,所以子类构造方法默认访问父类的无参构造。

toString()方法

直接打印一个对象,实际会调用该对象的toString()方法。
在Object类中,toString()默认返回:包名.类名@地址值。这个地址值对开发者来说通常没有意义,因此经常重写toString(),返回对象属性信息。

调用链如下:

obj.toString()String.valueOf(obj)System.out.println(obj)main方法obj.toString()String.valueOf(obj)System.out.println(obj)main方法传入对象调用String.valueOf(obj)调用obj.toString()返回类名@地址值返回字符串打印输出

项目结构:

com.wb.demo1 
    ├── Demo.java 
    └── Student.java 

代码示例:

// Student.java 
package com.wb.demo1;
 
public class Student /extends Object/ {
    private String name;
    private int age;
 
    public Student() {}
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
    // getter / setter 略 
 
    @Override 
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

// Demo.java 
package com.wb.demo1;
 
public class Demo {
    public static void main(String[] args) {
        Student s = new Student("张三", 23);
        // 直接打印对象,默认调用toString();重写后输出属性值 
        System.out.println(s);  // Student{name='张三', age=23}
        System.out.println(s.toString()); // 同上 
    }
}

equals()方法

equals()用于比较两个对象是否“相等”。

  • Object类中的equals()底层使用==比较地址值。
  • 要比较对象的属性值是否相等,需要在子类中重写equals()。

项目结构:

com.wb.demo2 
    ├── Demo.java 
    └── Student.java 

代码示例:

// Student.java(重写了equals)
package com.wb.demo2;
 
public class Student {
    private String name;
    private int age;
    // 构造方法、getter/setter 略 
 
    @Override 
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        if (age != student.age) return false;
        return name != null ? name.equals(student.name) : student.name == null;
    }
 
    @Override 
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
 
// Demo.java 
package com.wb.demo2;
 
public class Demo {
    public static void main(String[] args) {
        Student s1 = new Student("zhangsan", 23);
        Student s2 = new Student("zhangsan", 23);
 
        System.out.println(s1 == s2);         // false (比较地址)
        System.out.println(s1.equals(s2));    // true  (重写后比较属性)
    }
}

面试题:String与StringBuilder的equals比较

String s1 = "abc";
StringBuilder sb = new StringBuilder("abc");
 
// s1.equals(sb) → false 
// 因为调用的是String类的equals(),它要求参数也是String类型,
// 否则直接返回false,不比较属性值。
 
// sb.equals(s1) → false 
// StringBuilder类没有重写equals(),因此调用的是Object类的equals(),
// 底层使用==比较地址值,两个对象地址肯定不同,所以返回false。

项目结构:

com.wb.demo3 
    └── InterviewTest.java 

代码示例:

package com.wb.demo3;
 
public class InterviewTest {
    public static void main(String[] args) {
        String s1 = "abc";
        StringBuilder sb = new StringBuilder("abc");
 
        System.out.println(s1.equals(sb));  // false 
        System.out.println(sb.equals(s1));  // false 
    }
}

Objects类

Objects是JDK 1.7出现的对象帮助类,所有方法都是静态的,用来方便地操作对象,特别是避免空指针异常。

项目结构:

com.wb.demo4 
    ├── MyObjectsDemo.java 
    └── Student.java 

常用方法

  • public static String toString(Object o):返回对象的字符串表示形式(调用对象自身的toString())。
  • public static String toString(Object o, String nullDefault):返回对象的字符串表示形式;如果对象为null,则返回第二个参数作为默认值。
  • public static boolean isNull(Object obj):判断对象是否为空,为空返回true。
  • public static boolean nonNull(Object obj):判断对象是否不为空,不为空返回true。

代码示例

// MyObjectsDemo.java 
package com.wb.demo4;
 
import java.util.Objects;
 
public class MyObjectsDemo {
    public static void main(String[] args) {
        // toString(对象):底层调用对象的toString()
        Student s1 = new Student("小罗同学", 50);
        String result1 = Objects.toString(s1);
        System.out.println(result1);  // Student{name='小罗同学', age=50}
 
        // toString(对象, 默认字符串):对象为null时返回默认值 
        Student s2 = null;
        String result2 = Objects.toString(s2, "默认值");
        System.out.println(result2);  // 默认值 
 
        // isNull:判断是否为空 
        boolean isNull1 = Objects.isNull(s1);  // false 
        boolean isNull2 = Objects.isNull(null);// true 
        System.out.println(isNull1);
        System.out.println(isNull2);
 
        // nonNull:判断是否不为空 
        boolean nonNull1 = Objects.nonNull(s1);   // true 
        boolean nonNull2 = Objects.nonNull(null); // false 
        System.out.println(nonNull1);
        System.out.println(nonNull2);
    }
}
 
// Student.java 
package com.wb.demo4;
 
public class Student {
    private String name;
    private int age;
    // 构造方法、getter/setter 略 
 
    @Override 
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

总结

通过以上几个类的学习,可以看到Java通过提供丰富的API,大大简化了我们的编码工作。掌握常用类的静态方法,并理解Object作为所有类父类的设计思想,是Java入门的重要一步。

后续还会遇到更多工具类,它们的共性都是:构造私有、方法静态、功能明确。

Windows10系统添加虚拟网卡(Microsoft Loopback Adapter)的方法 1、按下win + R键,在其中输入:hdwwiz,然后 (enter) 2、点击下一步即可 3、其次选择【网络适配器】,然后点击【下一步】。 4、在厂商处选择Microsoft,网络适配器处选择【Microsoft Loopback Adapter】选项 ,点击【下一步】。 5、通过上面几个步骤的设置后,一块虚拟网卡的安装设置就算是完成了。 ... 阅读详情

相关推荐

STM32F103C8T6+TB6612驱动直流电机全攻略(附PWM调速代码)

本文提供了一份基于STM32F103C8T6微控制器和TB6612驱动模块的直流电机驱动完整解决方案。详细解析了硬件连接、STM32CubeMX配置、HAL库驱动代码编写,并附带了PWM调速代码实现。内容涵盖从基础原理到实战调试的全过程,旨在帮助开发者快速构建稳定、可精准调速的电机控制系统,适用于智能车、机器人等嵌入式项目。

weixin_29181861的博客 586

小白零基础快速入门Java —— 第七课:常用API

小白零基础快速入门Java ——第七课:常用API。本文介绍了以下内容:1、API和包。 2、String。 3、ArrayList。4、Object类。5、Objects。6、包装类。7、StringBuilder、StringBuffer。8、StringJoiner。9、Math、System、Runtime。10、BigDcimal 。11、JDK8之前传统的日期、时间。12、JSK8开始新增的日期、时间。13、Arrays。

Huacyu的博客 186

工业场景实战:基于YOLO与多格式标注的传送带异物检测数据集构建指南

本文详细介绍了基于YOLO与多格式标注的传送带异物检测数据集构建方法,涵盖数据采集、标注技巧(YOLO、COCO、VOC格式)、数据增强策略及实战案例。通过工业级解决方案,有效提升异物检测准确率与效率,适用于各类工业场景。

weixin_29168393的博客 464

JAVA常用API

Java常用API String、StringBuilder、Math、System、Object、Objects、BigDecimal等

tuoniaoxs的博客 1万+

使用python读取卫星测高数据并做相应的处理

5.在python处理结果如下,最大的优点就是比matlab快30-40倍。4.进行粗差的如NaN值,还有进行3倍方差进行对粗差处理。1.首先遍历卫星数据的文件,挨个读取每个数据。有问题,请各位读者及时告知,一起完善内容。3.进行下一步,筛选在研究区域的数据。4.进行按天求平均和按月求平均。2.读取数据主体代码。

爱下去更难! 1133

华为OD机试真题-国际移动用户识别码(IMSI)匹配

华为OD机试双机位C卷 国际移动用户识别码(IMSI)匹配 , 提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解。华为OD机试 - 国际移动用户识别码(IMSI)匹配

qq_45776114的博客 4927

06-API2-常用API-Math,System,Object,Objects,BigDecimal,Integer<->String,Arrays,Date,SimpleDateFormat,Lo

文章目录1. API2.常用API2.1 Math(应用)2.2 System(应用)2.3 Object类的toString方法(应用) 1. API 承接此篇博客:https://blog.youkuaiyun.com/hza419763578/article/details/124288903?spm=1001.2014.3001.5501 2.常用API 2.1 Math(应用) 1、Math类概述 Math 包含执行基本数字运算的方法 2、Math中方法的调用方式 Math类中无构造方法,但内部

树叶子的博客 628

手把手教你学基带SOC芯片(4.4.9)--基带芯片的电源管理实例:高通 Snapdragon 系列实例(十)

Snapdragon 888 通过支持多种深度睡眠模式,如 AOAC 模式、低功耗模式和深度睡眠模式,以及智能电源管理技术,实现了对功耗的精细管理。这些模式不仅延长了设备的电池寿命,还确保了用户在各种使用场景下的良好体验。无论是保持网络连接、限制后台活动,还是完全关闭不必要的功能,Snapdragon 888 都能够灵活应对,提供高效的功耗管理方案。

MHD0815的博客 741

Java笔记——JAVA常用API

字符串不变,它们的值在创建后不能被更改(String是一个类,是引用数据类型,而引用数据类型的变量存放的是对象的地址值,所以,这里不能改变的字符串值,指的是对象,String类的变量内容可以更改,因为它存的是对象的地址值)。源码中表示: Math类的构造方法是私有的,所以不允许创建Math类对象,但Math类中所有的公共方法都是静态的,可以通过类名.方法名()调用。这里等号左边的s是一个引用数据类型的变量,在栈内存中,它存放的是等号右边new出来的String类型的对象的地址值,这个对象在堆内存中。

a25847a的博客 1606

Windows11上pip安装IsaacSim5.1.0与IsaacLab

本文详细介绍了CUDA Toolkit 12.8.0、IsaacSim和IsaacLab的安装过程。首先从NVIDIA官网下载并安装CUDA Toolkit 12.8.0,然后通过miniforge创建conda环境(env_isaacsim)安装IsaacSim相关Python包,解决了Windows长路径问题。成功运行IsaacSim后,克隆IsaacLab仓库并完成安装验证,最后通过创建空场景测试环境配置。整个安装过程包含详细的命令行操作和问题解决方法,为机器人仿真开发环境搭建提供了完整指导。

拥抱具身智能,昇腾Ascend C 380

CCAR-23《正常类飞机适航规定》和CCAR-25《运输类飞机适航规定》差异分析

通过详细比较CCAR-23和CCAR-25在适用范围、设计标准、性能要求、运行限制、安全冗余和环境适应性方面的差异,我们可以看出,CCAR-23适用于轻型飞机,开发和运营成本较低,设计要求相对简单。而CCAR-25适用于大规模运输飞机,设计、开发、测试和运营管理都需要更高的复杂性和投入。

qq_41854911的博客 3707

Java常见API快速入门指南

本文介绍了Java中几个常用API的使用方法。主要内容包括:1)Math类用于数学计算;2)System类提供系统相关方法;3)Runtime类管理虚拟机运行环境;4)Object和Objects类的区别,重点讲解了toString()、equals()和clone()方法的使用;5)BigInteger和BigDecimal类处理大整数和高精度小数计算。文章强调这些API不需要死记硬背,使用时查阅文档即可,建议读者理解基本概念,在需要时能快速查找使用方法。内容较为基础但实用,适合Java初学者参考。

ize250917的博客 662

计算机视觉教程2-3:图解双线性插值算法&最近邻插值算法

提出此算法的背景是基于图片的缩放,在图片缩放的过程中,实质上就是将原图像像素矩阵像素值,填到目标图像像素矩阵中,目标图像像素矩阵可能比原图像像素矩阵大(图片放大),也可能小(图片缩小)。我们假设图片的宽(WidthWidthWidth)和高(HeightHeightHeight)是按同比例缩放的,那么 srcXsrcWidth=dstXdstWidth\frac{srcX}{srcWidth}= \frac{dstX}{dstWidth}srcWidthsrcX​=dstWidthdstX​ ...

FRIGIDWINTER的博客 7286

Java常用API汇总

全称应用程序编程接口,就是Java自己写好的程序,给程序员调用的,方便完成一些功能的。使用可查阅API文档。

Achooyo的博客 6887

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Java API使用;Math类;System类;Object类;Objects类;BigDecimal类;基本数据类型包装类;数组的高级操作

1 API的基本使用 API: 应用程序接口,学习API就是学习JDK中给我们提供的类. 这些类在学习的时候需要去查看API文档进行学习,API就是JDK官方针对这些类提供的说明书. 学习某一个类的思路: 查看这个类所在的包,如果是java.lang包在使用的时候不需要进行导包操作 看这个类所对应的继承关系 查看这个类的描述(了解) 查看这个类开始的JDK版本 查看这个类的构造方法 ----->目的: 查看这个类应该如何创建对象 查看这个类的成员方法 2 Math类 Math类所在包就是java.

weixin_55800132的博客 359

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

java-常用类

API (Application Programming Interface) :应用程序编程接口

m0_51779342的博客 632

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Java基础语法_14_常用API01

1.API 1.1 API概述【理解】 什么是API ​ API (Application Programming Interface) :应用程序编程接口 java中的API ​ 指的就是 JDK 中提供的各种功能的 Java类,这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可,我们可以通过帮助文档来学习这些API如何使用。 1.2 如何使用API帮助文档【应用】 打开帮助文档 找到索引选项卡中的输入框 在输入框中输入Random

qq_35790439的博客 251

Java 复习笔记 - 常用API 上

Java API是Java语言提供的一组类和接口的集合,用于开发Java应用程序。它包含了各种功能模块,如图形界面、网络通信、数据库访问、多线程、文件操作等,以及一些常用的数据结构和算法。Java API的设计目标是提供一组可靠、高效、易用的工具和功能,以帮助开发人员更快速地构建应用程序。它提供了丰富的类和接口,开发人员可以根据自己的需求来选择和使用这些API。Java API按功能划分为多个包,如java.lang、java.util、java.io等。

梁辰兴的博客 520

java基础之常用的API

Math类 顾名思义,Math类包含一些常用的数学相关的静态方法,全部可以通过Math.方法名()进行调用. abs(int a) 返回参数的绝对值 ceil(double a)返回大于或等于参数的最小double值 floor(double a)返回小于或等于参数的最大double值 round(float a) 按照四舍五入返回最接近参数的int值 max(int a,int b) 返回两个int值中的较大值 min(int a,int b) 返回两个int值中的较小值 pow (double a,dou

weixin_44615454的博客 218

Java学习笔记14:Java_常用API_包装类_递归_数组高级

1.API 1.1 API概述【理解】 什么是API ​ API (Application Programming Interface) :应用程序编程接口 java中的API ​ 指的就是 JDK 中提供的各种功能的 Java类,这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可,我们可以通过帮助文档来学习这些API如何使用。 2.常用API 2.1 Math(应用) 1、Math类概述 Math 包含执行基本数字运算的方法 2、Math中

JasonYangQ的博客 1万+

Java周记|API/Object类/大数类/正则表达式/包装类

本文梳理了 Java 常用工具类核心知识点,涵盖 Math 类数学运算方法及水仙花数判断实现;System 与 Runtime 类的时间获取、数组拷贝、虚拟机运行环境检测等操作;Object 类的 toString、equals 重写及深浅克隆要点,Objects 工具类的空安全方法;BigInteger、BigDecimal 大数类的创建与运算规则;正则表达式基础语法、分组与数据爬取技巧;基本类型包装类的自动装箱拆箱、类型转换及缓存机制。

somebody_wzq的博客 656

Java第十四次笔记(强化部分Day03)---多态、内部类、常用API(Object、Objects、StringBuidder、Math、System、BigDecimal)

一、面向对象三大特征之三:多态 多态是最重要的面对对象的特征!!! 1.1多态的概念,多态的形式 什么是多态? 举例说明:狗和乌龟,两者都是同类对象。同时执行相同行为:比如说跑。狗和乌龟的跑步行为不一样。这就是多态的变现。 ...

xiaoxixicc的博客 324

Java学习之路 —— API篇

其实转语言来说,语法都比较简单,花个三天就会了,但最主要的是熟悉各种API,比如用惯了C++的STL,再来学新的API,就会觉得很不习惯,就拿vector和ArrayList来说,vector就可以直接[]访问,但是Java没有提供操作符重载,就只能用函数来获取了,怪不习惯的。这就好比你之前都是在学一门语言的语法,但是更费时的是去背单词,而往往一门语言学的好不好就是看会的单词多不多。这个比喻不知道恰不恰当,哈哈哈~

JehanRio's Private Blog 373

Java SE进阶(5)API与数组的高级操作

API与数组的高级操作 一、常用API 1、Math类 主要进行数字运算。 Math类不可实例化(构造方法被私有)。 final修饰是最终类。 方法都被static修饰属于静态方法,可以通过类名调用。 ab(int a) 取绝对值 ceil(double a) 向上取整 floor(double a) 向下取整 min(int a,int b) 取最小值 max(int a,int b) 取最大值 round(float a) 四舍五入 pow(int a,int b) 返回a的b次幂 random(

清峰的博客 247

Java学习之路-day15 常用API01

每日一句 Adding manpower to a late software project makes it later. 向进度落后的项目中增加人手,会使进度更加落后。 1.API 1.1 API概述 什么是API ​ API (Application Programming Interface) :应用程序编程接口 java中的API ​ 指的就是 JDK 中提供的各种功能的 Java类,这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可,我们可以通

weixin_43441789的博客 236

Java -- API了解

Java -- API了解

zzzzzzzzzbbb的博客 191
上一篇: Java基础快速入门: 面向对象高级之Lambda表达式深度解析
下一篇: Java基础快速入门:BigDecimal与Integer包装类
Wang's Blog
博客等级 码龄12年 7433粉丝 2421原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值