Java基础 1. Java开发环境搭建

Java基础 1. Java开发环境搭建

1.1. 常用的DOS命令

1.1.1. 常用的Windows组合键:

  • win+D
    • 回到桌面
  • win+E
    • 打开文件资源管理器
  • win+R
    • 打开运行窗口
  • win+L
    • 锁屏
  • alt+tab
    • 应用之间的切换

1.1.2. 常用的DOS命令:

  • 打开DOS命令窗口

    • win+R
    • 输入cmd(command)
  • 在DOS命令窗口完成复制和粘贴

    • 在DOS中, 用鼠标左键拖动选中想要复制的内容, 然后点击右键, 就复制好了, 如果想要粘贴在DOS中, 再点击右键或者在键盘上按下ctrl+v即可粘贴
  • 在DOS命令窗口删除未执行的命令

    • ctrl+backspace
  • 什么是当前路径? 假设进入DOS命令窗口时显示的是: C:\Users\lenovo>, 那么当前的路径就是C:\Users\lenovo

  • dir

    • 列出当前路径下的所有目录和文件
  • cls

    • 清屏
  • exit

    • 退出
  • 切换盘符

    • c:
    • d:
    • e:
  • del [文件名]

    • 删除一个文件

    • del *.java

      • 删除多个.java文件
  • ipconfig

    • 查看电脑的IP地址

    • ipconfig /all

      • 查看详细信息
  • ping IP地址

    • ping 192.168.1.1
    • ping www.baidu.com
    • 测试两台计算机是否能够通信
    • ping www.baidu.com -t
      • 一直ping
  • ctrl+c

    • 强制终止命令的执行
  • 上下箭头可以翻出历史命令

  • help

    • 查看命令帮助信息
  • cd [路径]

    • 切换目录, change directory
    • 路径包括
      • 绝对路径: 在Windows当中, 路径开始的时候, 是以盼复开始的, 都是绝对路径, 例如: cd C:\Users\lenovo/a/b/c
      • 相对路径: 相对于当前所在的位置开始的路径, 例如: C:\Users\lenovo> cd a/b/c
      • cd …
        • 回到上级目录, …代表上级目录, .代表当前目录
      • cd /
        • 回到根目录, \和/都行
      • 注意, 路径自动补全, 使用tab键
  • 直接进入某个位置的小妙招

    • 在文件资源管理器当中的路径当中输入cmd, 回车之后, 直接进入当前位置的DOS命令窗口
    • image-20240807100737868
    • image-20240907134406864
    • image-20240807100833888
  • mkdir [目录名]

    • 创建目录
  • rd [目录名]

    • 删除名录
  • ren a b

    • 将a目录重命名为b
  • copy con [文件名]

    • 新建并编辑文件
    • ctrl+z
      • 保存
  • type [文件名]

    • 查看文件内容
  • shutdown -s

    • 关机

1.1.3. 批处理文件

  • 批处理文件: 可以批量执行DOS命令的文件

  • 是以**.bat**为后缀名的文件

  • 新建my.bat文件, 并编写大量的DOS命令

  • 双击my.bat文件来完成批处理

    • my.bat, 删除文件下的所有.java文件

    • cd C:\Users\lenovo\test
      
      del *.java
      
    • 新建image-20240807104104966

    • 鼠标右击编辑image-20240807104157571

    • 编辑并保存image-20240807104216220

    • 双击, 会一闪而过, 说明执行完毕了image-20240807104104966

1.2. 通用文本编辑快捷键

1.2.1. Sublime Text文本编辑器的安装与使用

  • 记事本也是文本编辑器, 但是它的功能太弱

  • Sublime Text则是一款功能强大且轻量的文本编辑器

安装

image-20240807120307094

image-20240807120403282image-20240807120625884

image-20240807121053095

image-20240807121233580

image-20240807121659054

image-20240807121752365

image-20240807121814810

image-20240807122135481

中英文

image-20240807135930466

image-20240807140132145

image-20240807140222901

image-20240807140656591

image-20240807140737920

image-20240807140917851

打开方式
  • 设置好之后, 以后的.java文件都是用SublimeText来打开的, 这个是可以改的.

image-20240807143855142

image-20240807143956782

调整字体大小

image-20240807144341190

文件扩展名

image-20240807145045641

1.2.2. 文本快捷键

快捷键作用
ctrl+c复制
ctrl+v粘贴
ctrl+x剪切
ctrl+s保存
ctrl+a全选
ctrl+z撤销
ctrl+y重做, 和撤销相对应
home ( 笔记本上的home是fn + 向右箭头 )光标回到行首
end ( end是fn + 向左 )光标回到行尾
ctrl+home ( 注意: 笔记本上的应该为ctrl+fn+向右箭头 )回到文章开头
ctrl+end ( 同理 )回到文章末尾
鼠标三击shift+home或end选中一行
鼠标双击或shift+ctrl+向左或向右选中一个单词
shift+向左或向右选中一个字母
ctrl+f查找
ctrl+h替换
backspace向左删除
delete向右删除

1.3. 计算机概述

1.3.1. 计算机组成

  • 硬件

    • 中央处理器(CPU) : 计算机的核心部件, 决定着计算机的计算能力

      image-20240807151805837

    • 内存 : 计算机的临时存储器, 断电后数据会消失

      image-20240807151829637

    • 硬盘 : 计算机的永久存储器, 但是硬盘当中的数据不会消失

      image-20240807151851523

    • 显卡 : 计算机的图形处理器, 负责显示

      image-20240807151935869

    • 主板 : 安装上面的这些东西的一块板子, 板子上面有凹槽

      image-20240807152049254

  • 软件

    • 系统软件
      • 操作系统, 驱动程序, 系统工具等
      • Windows, MacOS, Linux, HarmonyOS…Android, iOS…
    • 应用软件
      • 各种办公软件, 微信, qq, 支付宝…
      • 应用软件要想和计算机硬件交互, 必须通过操作系统.

image-20240807152424913

1.4. 计算机语言概述

1.4.1. 计算机语言发展史

  • 机器语言
    • 20世纪50年代初期, 计算机只能使用二进制代码进行操作, 这被称为机器语言, 机器语言非常难以理解和编写, 因为它们是由0和1组成的
  • 汇编语言
    • 为了简化编写机器语言的过程, 汇编语言被发明出来了, 它使用助记符号来代替二进制代码, 这使得编写程序变得更加容易
  • 高级语言
    • 20世纪60年代, 高级语言开始出现, 高级语言使用更接近自然语言的语法和结构, 使得编写程序变得更加容易, 比如Fortran, C语言( 面向过程 )
  • 面向对象编程语言
    • 20世纪80年代, 面向对象编程语言开始流行, 这些语言允许程序员创建对象, 这些对象可以封装数据和方法, 并与其他对象进行交互, 比如Java, C++, Python.
    • C语言是面向过程的, C++一半是面向过程一半面向对象, Java全部面向对象
    • Java是由C++写出来的, C++是C语言的发展

1.5. Java语言概述

1.5.1. Java语言概述

  • Java是一种面向对象的编程语言, 它的底层是C++实现的, 由Sun Microsystems( 太阳微电子公司 )公司于1995年推出, 它是一种通用的, 高级的, 并发性强的, 安全的, 可移植的, 解释性的, 动态的, 编译性的, 跨平台的编程语言. Sun公司于2010年1月被甲骨文( Oracle )公司以74亿美元的价格收购, Oracle成为了Java语言的主要维护者和开发者之一.

1.5.2. Java之父

  • 詹姆斯 高斯林( James Goslig ), 外号高司令, 在20世纪80年代末和90年代初, 与Sun公司的一些工程师一起开发了Java语言

1.5.3. Java名字来历和logo

  • 在1990年代初, Sun公司的研发团队正在开发一种新的软件平台, 该平台可以在各种不同的计算机系统上运行, 并且能够处理各种多媒体文件, 这种平台最初被称为"Oak", 以纪念Sun公司的高司令喜欢的一棵橡树.
  • 然而, 在1995年, Sun公司发现该名称已经被一家电视机制造商使用了.
  • Java这个名字来源于印度尼西亚的爪哇岛, 因为该岛是印尼咖啡的主产区, Sun公司的营销团队认为这个名字可以带来一些特殊的品牌价值, 并且可以与咖啡文化关联, 因此它们决定将这个名字用于新的软件平台.
  • Java的logo是一个冒着热气的咖啡

image-20240807160454992

1.5.4. Java发展史

  • 1995 年初,Sun 公司发布 Java 语言,Sun 公司直接把 Java 放到互联网上,免费给大家使用,甚至连源代码也不保密,也放在互联网公开。几个月后,Java 成了互联网上最热门的宝贝。各种各样的小程序层出不穷,Java 终于扬眉吐气,成为了一种广为人知的编程语言。

  • 1996年 : JDK1.0诞生.

    • 什么是JDK?
      • Java Development Kit
      • Java开发工具箱【Java开发必备】
      • 可以从Oracle的官网上下载。http://www.oracle.com
      • 目前2016-08-30最高版本Java8【Java SE 8u101 / 8u102】
      • 下载JDK的时候需要注意:JDK的版本,不同的操作系统需要安装不同版本的JDK。
  • 1996 年底,Flash 问世了,这是一种更加简单的动画设计软件:使用 Flash 几乎无须任何编程语言知识,就可以做出丰富多彩的动画。Flash 逐渐蚕食了 Java 在网页上的应用。

  • 1997 年 2 月 18 日,Sun 公司发布了 JDK1.1,增加了即时编译器 JIT。

  • 1995 年 Java 诞生到 1998 年底,Java 语言虽然成为了互联网上广泛使用的编程语言,但它没有找到一个准确的定位。

  • 1998 年 12 月,Sun 发布了 Java 历史上最重要的 JDK 版本:JDK1.2。并将 Java 分成了 J2EE(提供了企业应用开发相关的完整解决方案)、J2SE(整个 Java 技术的核心和基础, 基础,无论是以后走EE还是ME,SE是必须要精通的)、J2ME(主要用于控制移动设备和信息家电等有限存储的设备)三个版本。

  • 2002 年 2 月,Sun 发布了 JDK 历史上最为成熟的版本,JDK1.4。

  • 2004 年 10 月,Sun 发布了万众期待的 JDK1.5。JDK1.5 增加了诸如泛型、增强的 for 语句、可变数量的形参、注释、自动拆箱和装箱等。

  • 2005年,java诞生十周年的时候,以上的三大模块改名了:

    • JavaSE : 标准
    • JavaEE : 企业
    • JavaME : 微型
  • 2006 年 12 月,Sun 发布了 JDK1.6。

  • 2009 年 4 月 20 日,Oracle 甲骨文公司宣布将以每股 9.5 美元的价格收购 Sun。Oracle 通过
    收购 Sun 获得了两项资产:Java 和 Solaris。

  • 2007 年 11 月,Google 宣布推出一款基于 Linux 平台的开源手机操作系统:Android。Android使用 Java 语言来开发应用程序。Android 平台的流行,让 Java 语言获得了在客户端程序上大展拳脚的机会。

  • 2011 年 7 月 28 日,Oracle 发布了 Java SE7,这次版本升级耗时将近 5 年时间。引入二进制整数、支持字符串的 switch 语句等。

  • 2014 年 3 月 18 日,Oracle 发布了 Java SE8 LTS ( Long-Term Support, 长期支持 )

  • 2017 年 7 月,Oracle 发布了 JavaSE 9。

  • 2018 年 3 月 20 日,Oracle 发布了正式版 JavaSE 10。同一年 9 月 25 日发布了 Java11 LTS

  • 2019 年 3 月 19 日,Oracle 发布了 Java12。

  • 2019年在9月17日,JDK 13 发布,这个版本主要通过改善Java SE平台和JDK的性能,稳定性和安全性来提高开发人员的生产力。

  • 2020年3月17日,JDK 14发布,这个版本主要是对JDK历史版本的一些增强,也引入了一些新增的功能.

  • 2020年9月15日,JDK 15发布,按照规划路线,JDK 14也停止更新,JDK 15虽然不是LTS版本,但也引入了一些开创性的功能和对早期版本功能的一些优化。

  • 2021年3月16日,JDK 16发布,这部分依旧是一些功能的优化升级。

  • 2021年9月14日,JDK17 LTS 发布,这也是在JDK 11之后的下一个LTS版本,JDK 17也是Java六个月发布节奏下的最新的长期支持(LTS)发布,主打安全、性能、稳定为特性,并且官方计划支持到2029年9月。

  • 2023年9月, JDK21 LTS 发布.

1.5.5. Java的三大分支

  • JavaSE( Java Standard Edition ) : 标准版, 不管以后学EE还是ME, SE都是必学的, 这里面包含了Java的核心部分
  • JavaEE( Java Enterprise Edition ) : 企业版, 以后大部分都是走的是这个方向
  • JavaME( Java Micro Edition ) : 微型版, 做嵌入式开发

1.5.6. Java特点

  • 关键术语:

    • JDK【Java开发工具箱】
    • JRE【Java的运行时环境】
    • JVM【Java虚拟机】
    • 三者之间的关系:JDK 中包含JRE,JRE中包含JVM。
  • 跨平台/可移植

    • java程序可以做到一次编译, 到处运行 ( 可以在windows和linux系统上运行, 但是这两个系统的内核不同, 执行程序的方式也不同, 所以java程序是不能直接和操作系统打交道的. 于是, SUN团队想了一个办法, 他们让java程序运行在一台虚拟的计算机上, 也就是所谓的java虚拟机, 简称JVM, java程序运行在JVM上, JVM再和底层操作系统进行交互).
      • 有一种特殊的机制:JVM, C++模拟的一个虚拟的计算机
      • 但是有一个前提:不同的操作系统中必须安装不同版本的JVM
      • 在可移植性方面表现非常好,一次编译,到处运行。
      • 但是为了达到可移植,必须提前在操作系统中安装JRE,JRE有了之后才会有JVM。【JVM不能单独安装】
  • Java号称:开源、免费、跨平台、纯面向对象。

    • 开源:开发源代码,SUN公司编写的java类库的源代码普通程序员能看到。众人拾柴火焰高。这样java程序会很健壮。很少的BUG

    • 免费

    • 跨平台:依靠JVM机制【java程序不和操作系统交互,java程序运行在JVM中,JVM和操作系统交互。】不同的操作系统有不同版本的JVM。

    • 面向对象:人类在认识现实世界的时候多数是以面向对象的方式认知的

  • 简单性:

    • 这里的简单说的是相对于C语言来说的
    • 例如:C语言当中有指针,C++中多继承
      • java取消了指针的概念,取消了多继承,只支持单继承。
  • java支持多线程

    • 一个线路上可以执行多个任务, 效率高.
  • 健壮性 :

    • java中还有一种特殊的机制:自动垃圾回收机制. GC机制.【java运行过程当中有一个“垃圾回收器”一直在守护着。】不需要手动释放内存空间, 防止内存泄漏.

1.6. Java的加载与运行

1.6.1. 编译阶段

  • 检查Java源文件 ( .java ) 是否符合java语法, 符合的则生成正常的字节码文件 ( .class ) , 否则无法生成.

  • 程序员需要使用JDK当中自带的javac.exe ( 是一个java编译工具/命令 ) 进行java程序的编译.

  • javac语法 : javac + java源文件路径

    • 在DOS命令窗口中使用
    • 比如: javac C:\Users\lenovo\a.java
  • 一个java源文件可以编译生成多个.class文件.

  • class文件是最终要运行的文件, 所以说class文件生成后, java源文件删除不会影响java程序的运行 ( 但是不建议删除 ).

  • 编译结束后, 可以将.class文件拷贝到其它操作系统上运行.( 跨平台 )

1.6.2. 运行阶段

  • JDK安装后, 自带javac.exe ( 编译 ), 还有一个java.exe ( 运行 ).

  • java.exe语法 : java + 类名

    • 也是在DOS窗口中使用

    • 例如 : 硬盘上有一个A.class, 使用 : java A

      image-20240807172055719

      image-20240807171706764

  • 所以Java既是一种编译型语言也是解释型语言, 是一种混合型语言

1.7. 第一个Java程序

1.7.1. JDK的下载与安装

image-20240808213215745

image-20240808213407740

image-20240808213648990

image-20240808214519289

image-20240808214838803

image-20240808214907057

image-20240808215017767

image-20240808215858063

1.7.3. JDK的重点目录介绍

  • bin (binary)

    • 存放命令

      image-20240809074702110

    image-20240809074908215

  • lib (library)

    • 存放类库
  • lib/src.zip

    • JDK源码文件

    image-20240809100255308

  • 使用之前, 得先确保javac和java命令可以使用

    image-20240809080720656

    • 但是现在这两个命令是不能用的, 所以接下来就要提到环境变量PATH

1.7.2. 环境变量PATH的配置

  • PATH环境变量不是java的, 它是隶属于Windows操作系统的

  • PATH环境变量的作用

    • 在PATH中有很多路径, 路径和路径之间采用分号隔开
    • 在DOS命令窗口中输入一个DOS命令之后, Windows会先从当前路径下找到这个命令, 如果没找到, 则会去PATH当中找, 找到则执行, 找不到则报错
    • PATH实际上就是给Windows指路的
  • 配置PATH
    image-20240809081043141

    image-20240809081128583

    image-20240809081223705

    image-20240809094614662

    image-20240809094640335

    image-20240809081937856

    image-20240809094901469

    • 然后要把每一个页面的确定键都点上, 然后把cmd窗口关闭并重新开启, 这样javac和java命令就可以使用了

    image-20240809095136474

1.7.4. 第一个Java程序的编写

  • 在硬盘的任何位置, 新建一个java源文件, 起名HelloWorld.java
public class HelloWorld{
    public static void main(String[] args){
        System.out.println("HelloWorld!");
    }
}

1.7.5. 第一个Java程序的编译

  • 使用javac 命令来编译, 首先确保javac命令能用
  • javac命令怎么用, 语法是什么
    • javac java源文件的路径( 绝对和相对路径都可以 )

1.7.6. 第一个Java程序的运行

  • 使用java命令来运行, 首先确保java命令能用
  • java语法格式
    • java 类名
    • 注意: java命令后面跟的不是文件路径, 而是类名
  • 类名
    • A.class, 类名是A
    • HelloWorld.class, 类名是HelloWorld
  • 要使用java命令, 首先DOS命令窗口中的当前路径必须切换到.class文件所在的位置

1.7.7. 环境变量classPATH

  • classPATH环境变量是隶属于Java的, 不是Windows, 这和PATH环境变量是完全不同的
  • classPATH是给ClassLoader( 类加载器 )指路的
  • java A, 执行后, 先执行JVM, JVM启动ClassLoader, ClassLoader去硬盘上通过classPATH找A.class文件, 找到则执行, 找不到则报错
  • 如果classPATH没有配置的话, 默认从当前路径下找.class字节码文件. 如果classPATH配置了, 比如配置到了桌面上, 那么ClassLoader以后就只会去桌面上( classPATH )找字节码文件, 不再从当前路径下找了
  • 注意, 如果classPATH配置为: classPATH = .;C:\Users\lenovo\Desktop是什么意思
    • 先让ClassLoader从当前路径下找, 如果找不到的话, 去C:\Users\lenovo\Desktop找
  • 但是对于目前来说, 我们还没有必要这样配置, 所以先可以不配置

1.7.8. 关于编译时的乱码问题

  • 当java源文件中有中文时, 采用某种文本编辑器写代码, 最后会出现中文乱码问题
    • JDK21的javac编译器采用的是UTF-8的编码方式进行编译, 而JDK17是采用的GBK
    • Sublime Text4编码方式是UTF-8
    • 编码不一致, 所以乱码了, 所以可以下载最新的LTS版本的JDK21
  • 解决
    • 第一种方案
      • javac -encoding UTF-8 HelloWorld.java
    • 第二种方案
      • 下载最新的LTS版本的JDK21, 最好选择这个, 要不然每次都得敲上面多出来的命令
    • 不管是哪一种解决方案, 都是为了让两边的字符编码方式一致
  • 编码方式
    • GBK

      • 只支持简体中文
    • UTF-8

      • 支持全球国家所有的语言

1.8. 注释

  • 注释用于解释说明, 帮助程序员快速解读程序

  • 注意: 注释只会在源文件当中, 编译之后.class文件里面是没有注释的

  • 三种注释方式

    • 单行注释

    • 多行注释

    • javadoc注释

      • javadoc命令的位置

      image-20240808095647739

  • 写法

    • 不是越多越多好
    • 应该在合适的位置写注释, 简单明了, 起到点睛之笔
    • 注释能力的提升需要在开发过程中不断地训练来加以提升
  • javadoc命令的简单使用

    • javadoc的标记: 作者@author, 版本号@version, 方法参数@param
    • javadoc -d docs -author -version -encoding UTF-8 HelloWorld.java

    image-20240808100517315

    image-20240808100542554

image-20240808100609830

//单行注释

/*
    多行注释
    多行注释
    多行注释
*/

/**
* javadoc注释
* javadoc注释
* javadoc注释
* 编写在这里的注释信息, 可以被javadoc命令解析提取并生成到帮助文档当中.
*/

public class HelloWorld{
    public static void main(String[] args){
        System.out.println("HelloWorld!");
    }
}
/**
 * HelloWorld程序是一个问世程序, 这个程序中演示了中文乱码问题
 * @author 区区一散修
 * @version 1.0
 * @since 1.0
 */

public class HelloWorld{

    /**
     * 这是main方法, 程序的入口, 程序就是从这里进来开始执行的
     * @param args 这个是main方法的参数
     */

    public static void main(String[] args){
        System.out.println("区区一散修!");
    }
}
  • 解释HelloWorld程序
// public表示公开的
// class表示一个类
// HelloWorld是给这个类起个名

public class HelloWorld{

    // 类体

    // 1.这是main方法, 也叫做主方法
    // 2.main方法是JVM规定的, 固定写法, 照抄就行了, 程序就是从这个位置进来执行的, 这是程序的入口
    // 3.对于main方法来说能修改的就是args这个变量名, 但是一般就这样写, 因为args是arguments(参数)
    // 4.static表示静态的
    // 5.void表示main方法执行结束之后不返回任何数据
    public static void main(String[] args){

        // 方法体
        // 方法体当中由一行一行的java语句组成
        // 任何一条java语句必须以";"结尾, 且每一条java语句当中的标点符号都是英文半角标点
        // 方法体当中的代码是有执行顺序的, 遵循自上而下的顺序依次逐行执行

        // 这行代码的作用: 将字符串"区区一散修!"打印输出到控制台, 并且输出之后还会换行
        System.out.println("区区一散修!");

        // 没有ln是不换行的
        System.out.print("区区一散修!");
    }

    // 类体
    // 编译报错, 类体当中不能直接编写java语句
    System.out.println("这里能写这样的Java语句吗");
}

1.9. public class和class的区别

  • 一个java源文件中可以定义多个class
  • 一个class会编译生成一个class文件
  • public的类可以没有, 有的话, 只能有一个, 并且public的类名要和源文件名保持一致
  • 任何一个class中都可以有main方法
  • 但在实际开发中, 对于一个软件来说, 一般入口只有一个
public class a{
	public static void main(String[] args){
		System.out.println("a");
	}
}

class X{
	public static void main(String[] args){
		System.out.println("X");
	}
}

class Y{
	public static void main(String[] args){
		System.out.println("Y");
	}
}

class Z{
	public static void main(String[] args){
		System.out.println("Z");
	}
}

1.10. Test

/*
	1. 打印你的个人信息
		包括: 姓名, 年龄, 性别, 家庭住址, 联系电话

	2. 打印一个菱形
			*
		   ***
		  *****
		 *******
		*********
		 *******
		  *****
		   ***
		    *

	3. 打印商品列表
		product price stack
		aplle	3.5		10
		banana	2.5		20
		orange	4.0 	15
*/

// 第一题
class one{
	public static void main(String[] args){
		System.out.println("姓名: 区区一散修");
		System.out.println("年龄: 未知");
		System.out.println("性别: 男");
		System.out.println("家庭住址: 深山老林");
		System.out.println("联系电话: 111");
	}
}

//第二题
class two{
	public static void main(String[] args){
		System.out.println("    *    ");
		System.out.println("   ***   ");
		System.out.println("  ******  ");
		System.out.println(" ******** ");
		System.out.println("**********");
		System.out.println(" ******** ");
		System.out.println("  ******  ");
		System.out.println("   ***   ");
		System.out.println("    *    ");
	}
}

//第三题
class three{
	public static void main(String[] args){
		System.out.println("product\tprice\tstock");
		System.out.println("aplle\t3.5\t10");
		System.out.println("banana\t2.5\t20");
		System.out.println("orange\t4.0\t15");
	}
}
  • 21
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值