java基础1dos命令和java基础

cd.    (change directory)当前目录
cd..    (change directory)可以返回上一级目录
cd\    返回到当前盘符根目录
dir    (directory)查看当前路径下的文件夹和文件内容
date    日期设置命令(Ctrl+z)
time    时间设置命令(Ctrl+z)
cls    (clear screen)清屏。
exit    退出命令提示符窗口
F7    查看历史命令,选中之后执行用过的命令
cd /?或cd/?    (/表示命令的功能开关)查看cd命令的具体用法
md /?或md/?    查看md命令的具体用法
————————————————
%temp%    打开临时文件夹    .    C:\DocumentsandSettings\用户名所在文件夹
…    C:\DocumentsandSettings    …    我的电脑
\    C盘    appwize.cpl    添加、删除程序
access.cpl    辅助功能选项    Accwiz    辅助功能向导
cmd    CMD命令提示符    command    CMD命令提示符
chkdsk.exe    Chkdsk磁盘检查    certmgr.msc    证书管理实用程序
calc    启动计算器    charmap    启动字符映射表
cintsetp    仓颉拼音输入法    cliconfg    SQLSERVER客户端网络实用程序
clipbrd    剪贴板查看器    control    打开控制面板
conf    启动netmeeting    compmgmt.msc    计算机管理
cleanmgr    垃圾整理    ciadv.msc    索引服务程序
dcomcnfg    打开系统组件服务    ddeshare    打开DDE共享设置
dxdiag    检查DirectX信息    drwtsn32    系统医生
devmgmt.msc    设备管理器    desk.cpl    显示属性
dfrg.msc    磁盘碎片整理程序    diskmgmt.msc    磁盘管理实用程序
dvdplay    DVD播放器    eventvwr    事件查看器
eudcedit    造字程序    explorer    打开资源管理器
fsmgmt.msc    共享文件夹管理器    firewall.cpl    WINDOWS防火墙
gpedit.msc    组策略    hdwwiz.cpl    添加硬件
iexpress    木马捆绑工具,系统自带    inetcpl.cpl    INTETNET选项
intl.cpl    区域和语言选项(输入法选项)    irprops.cpl    无线链接
joy.cpl    游戏控制器    lusrmgr.msc    本机用户和组
logoff    注销命令    main.cpl    鼠标
mem.exe    显示内存使用情况    migwiz    文件转移向导
mlcfg32.cpl    邮件    mplayer2    简易widnowsmediaplayer
mspaint    画图板    msconfig.exe    系统配置实用程序
mstsc    远程桌面连接    magnify    放大镜实用程序
mmc    打开控制台    mmsys.cpl    声音和音频设备
mobsync    同步命令    ncpa.cpl    网络连接
nslookup    IP地址侦测器    netstartX    开始X服务
netstopX    停止X服务    netstat-an    命令检查接口
netsetup.cpl    无线网络安装向导    notepad    打开记事本
nslookup    IP地址侦探器    narrator    屏幕“讲述人”
ntbackup    系统备份和还原    ntmsmgr.msc    移动存储管理器
ntmsoprq.msc    移动存储管理员操作请求    nusrmgr.cpl    用户账户
nwc.cpl    NetWare客户服务    osk    打开屏幕键盘
odbcad32    ODBC数据源管理器    odbccp32.cpl    ODBC数据源管理器
oobe/msoobe/a    检查XP是否激活    packager    对象包装程序
perfmon.msc    计算机性能监测程序    powercfg.cpl    电源选项
progman    程序管理器    regedit    注册表
rsop.msc    组策略结果集    regedt32    注册表编辑器
regsvr32/?    调用、卸载DLL文件运行    sapi.cpl    语音
services.msc    本地服务设置    syncapp    创建一个公文包
sysedit    系统配置编辑器    sigverif    文件签名验证程序
sndrec32    录音机    sndvol32    音量控制程序
shrpubw    共享文件夹设置工具    secpol.msc    本地安全策略
sysdm.cpl    系统    syskey    系统加密(一旦加密就不能解开,保护windowsxp系统的双重密码)
services.msc    本地服务设置    sfc.exe    系统文件检查器
sfc/scannow    windows文件保护    shutdown    关机命令(详细请在cmd中输入shutdown/?)
taskmgr    任务管理器    telephon.cpl    电话和调制解调器选项
telnet    远程连接程序    timedate.cpl    日期和时间
tourstart    xp简介(安装完成后出现的漫游xp程序)    tsshutdn    60秒倒计时关机命令
utilman    辅助工具管理器    winver    检查Windows版本
winmsd    系统信息    wiaacmgr    扫描仪和照相机向导
winchat    XP自带局域网聊天    wmimgmt.msc    打开windows管理体系结构(WMI)
wordpad    写字板    wuaucpl.cpl    自动更新
wupdmgr    windows更新程序    write    写字板
wscript    windows脚本宿主设置    wscui.cpl    安全中心

系统版本:windows10

Java语言共有十大特点,分别为:简单性、面向对象、分布性、编译和解释性、稳健性、安全性、可移植性、高性能、多线索性、动态性。

1、简单性:Java语言继承了C++语言的优点,去掉了C++中学习起来比较难的多继承、指针等概念,所以Java语言学习起来更简单,使用起来也更方便。

2、面向对象:Java是一种面向对象的编程语言。

3、分布性:Java设计成支持在网络上应用,它是分布式语言。

4、编译和解释性:Java编译程序生成字节码,而不是通常的机器码,这使得Java开发程序比用其他语言开发程序快很多。

5、稳健性:Java刚开始被设计出来就是为了写高可靠和稳健的软件的。

6、安全性:Java的存储分配模型是它防御恶意代码的主要方法之一。

7、可移植性:Java并不依赖平台,用Java编写的程序可以运用到任何操作系统上。

8、高性能:Java是一种先编译后解释的语言,所以它不如全编译性语言快。但Java设计者制作了“及时”编译程序,这样就可以实现全编译了。

9、多线索性:Java是多线索语言,它可以同时执行多个程序,能处理不同任务。

10、动态性:Java语言设计成适应于变化的环境,它是一个动态的语言。  

编译:java到.class,运行:类装载器,jvm【将class文件变二进制文件】,操作系统,硬件平台。

javac编译器工具。

一、JDK
JDK是Java开发工具包,其中包括编译工具(javac.exe)打包工具(jar.exe)等,也包括JRE。

在JDK的安装目录下有一个jre目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib合起来就称为jre。

JDK是整个JAVA的核心,包括了Java运行环境,Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar)

JDK安装目录下面有六个文件夹、一个src类库源码压缩包、和其他几个声明文件。其中真正在运行java时起作用的是 bin、include、lib、 jre这四个文件夹。

bin:最主要的是编译器(javac.exe)
include:java和JVM交互用的头文件
lib:类库
jre:java运行环境
关系:JDK包含JRE,而JRE包含JVM

总结:JDK用于java程序的开发,JRE只能运行class而没有编译的功能。

二、JRE
JRE,即Java运行环境,包含JVM标准实现(Jvm虚拟机)与Java核心类库。

单独有JVM不能执行class,因为在解释class的时候JVM需要调用解释所需要的类库lib(jre里有运行.class的java.exe)。在JRE目录里有bin和lib两个文件夹,可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib和起来就称为jre。所以,当写完java程序编译成.class之后,可以把这个.class文件和jre一起打包发给朋友,这样你的朋友就可以运行你写程序了。

总结:JRE 是运行 Java 程序必不可少的,编写好的Java程序必须要JRE才能运行。如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可。


三、JVM
JVM,即java虚拟机,是java运行时的环境,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行,这就是Java能够“一次编译,到处运行”的原因。

它是整个java实现跨平台的最核心的部分,所有的java程序会先被编译为.class的类文件,该类型文件可以在虚拟机上执行,也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行。

总结:可以把JVM理解为是一个虚拟出来的计算机,具备着计算机的基本运算方式,主要负责将java程序生成的字节码文件解释成具体系统平台上的机器指令。


四、三者的联系
JVM不能单独搞定class的执行,解释class的时候JVM需要调用JRE的类库lib。在JRE目录里有两个文件夹bin和lib,可以认为bin里的就是jvm,lib里的则是jvm工作所需要的类库,而jvm和 lib和起来就称为JRE。

利用JDK(调用JAVA API)开发了JAVA程序后,通过JDK中的编译程序(javac)将java文件编译成JAVA字节码,在JRE上运行这些JAVA字节码,JVM解析这些字节码,映射到CPU指令集或OS的系统调用。


五、三者的区别
JDK和JRE区别:JDK的bin目录里有javac.exe而JRE里面没有,javac指令是用来将java文件编译成class文件的,这是开发者需要的,而用户是不需要的。JDK还有jar.exe, javadoc.exe等用于开发的可执行指令文件。证实了一个jdk是开发环境,而jre是运行环境。

注意: JVM并不代表可以执行class,因为JVM执行.class还需要JRE下的lib类库的支持,尤其是rt.jar。


六、总结
JDK(Java Development Kit)是针对Java开发员的产品,是整个Java的核心,包括了Java运行环境JRE、Java工具和Java基础类库。

JRE(Java Runtime Environment)是运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。

JVM(Java Virtual Machine)即Java虚拟机,是整个java实现跨平台的最核心的部分,能够运行以Java语言写作的软件程序。
 

java Helloworld

classpath=

注释是做源代码的解释说明。

//

javadoc,会生成帮助文档

/**

*

*/

多行注释

/*

*/

public class HelloWorld  
{
    public static void main【方法名】(String[] args【变量名】) //表示定义一个公开的静态的主方法
    {
        System.out.println("Hello World!");//向控制台输出消息
//方法体
//java语句以“;”分号必须是英文的分号终止
    }
}

类体

方法体

类体中不能直接编写java语句【除声明变量之外】

方法 体中可以编写多条java语句

主方法是持续入库,固定编写,sun公司规定。

1. public class 和 class 的区别
一个java源文件当中可以定义多个class
一个java源文件当中public的class不是必须的
一个class会定义生成一个xxx.class字节码文件
一个java源文件当中定义公开的类的话,只能有一个,并且该类名称必须和java源文件名称一致
每一个class当中都可以编写main方法,都可以设定程序的入口,向执行B.class中的main方法: java B,想执行x.class当中的main方法:java x
注意:当在命令窗口中执行java Hello,那么要求hello.class当中必须有主方法。
没有主方法会出现运行阶段的错误:在类B中找不到主方法,请将主方法定义为:
public static void main (string[]args)
案例:定义一个ABC.java

class A{

}

class B{

}

class C{

}
1
2
3
4
5
6
7
8
9
10
11
使用 javac 命令编译之后生成了三个字节码,分别是A.class、B.class、C.class。执行 :javac ABC.java,就会生成三个 .class 文件

通过以上的测试可以得出:一个 java 源文件中可以定义多个 class,并且在编译的时候一
个 class 会对应编译生成一个 class 字节码文件。还有,public 的 class 可以没有。
接下来,在 ABC.java 源代码中继续定义一个“公开的类 D”,请看下图

可以看到,定义公开的类 D 之后,再次编译,编译器报错了。并且提示的错误信息是:
类 D 是公共的,应在名为 D.java 的文件中声明。换句话说在 A.java 文件中定义的公共的类的名字必须是 A,不能是其它名称。也间接说明在同一个 java 文件中公共的类只能有一个(注
意:在同一个 java 文件中类名不能重名)。
通过以上的测试可以得出:如果定义 public class 的类,只能定义一个,并且要求此类名必
须和 java 源文件名保持一致。(这是规则记住就行)。
接下来,在每一个类的类体当中都定义 main 方法,都写上程序的入口,看看是否可以编译和运行:
class A{
    public static void main(String[] args){
        System.out.println("A...");
    }
}

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
javac ABC.java

随便从一个类中进入入口函数:java A 、java B

可以看到,在每一个 class 中都可以编写 main 方法,想让程序从哪个入口进去执行则加载该类即可
2. 总结:
通过以上的测试可以得出:任何一个 class 中都可以设定程序入口,也就是说任何一个 class
中都可以写 main 方法(主方法),想从哪个入口进去执行,则让类加载器先加载对应的类即
可,例如:想让 A类中的 main 方法执行,则执行:java A,想让 B 类中的 main 方法执行,则
执行:java B。但实际上,对于一个完整的独立的应用来说,只需要提供一个入口,也就是说
只需要定义一个 main 方法即可。
还有,在实际的开发中,虽然一个 java 源文件可以定义多个 class,实际上这是不规范的,
比较规范的写法是一个 java 源文件中只定义一个 class。

Java标识符有哪些?

1、标识符:在java语言中,标识符常用来给类、对象、变量、方法、接口、自定义数据类型等命名的。

2、标识符命名规则:标识符由任意顺序的大小写字母(a-z,A-Z),数字(0-9)下划线(_)和美元符号($)组成。

并且标识符不能以数字开头,

标识符是区别大小写的,

没有长度限制,

不能把java关键字作为标识符。

例如:合法的:name,my_name,_21,$money,不合法的:class,2name,name#age,a+b,

3、需遵循的规范:

(1)、包名:所有字母一律小写。如:com.abc.demo。

(2)、类名和接口名:每个单词的首字母大写,其余小写。如:StudentDemo,HelloWorld。

(3)、常量名:所有字母都大写,单词间以下划线(_)连接。如:DAY_OF_MONTH。

(4)、变量名和方法名:第一个单词首字母小写,从第二个单词开始每个单词首字母大写。即驼峰式命名法。如:chineseScore,getTotalMoney()。

(5)、在程序中,应尽量使用有意义的英文单词来定义标识符,即见名知义,这样便于阅读。如:password表示密码,name表示姓名等。

4、java标识符有哪些不合法?

提示:标识符命名时,切记不能以数字开头,也不能使用任何 Java 关键字作为标识符,而且不能赋予标识符任何标准的方法名。

使用标识符时一定要注意,或者使用关键字,或者使用自定义的非关键字标识符。此外,标识符可以包含关键字,但不能与关键字重名。

例如以下合法与不合法标识符。

不合法的标识符:1m、2.com、c*om、for、if 等。

java标识符命名规范之驼峰命名法
1.什么是驼峰命名法?
1.1 前提
大家都知道骆驼有两个驼峰,较高的那一个驼峰有可能靠经头部,也有可能靠近尾部。

因此就提出了大小驼峰命名法

大小驼峰的根本区别就在于首单词的首字母是否大写,若大写,则是大驼峰命名法,

若是小写,则是小驼峰命名法,

1.2 大驼峰命名法
大驼峰在前,首单词的首字母为大写字母,也就是说构成标识符的所有单词的首字母都大写,其余部分(单词的非首字母部分)都小写。

1.3 小驼峰命名法
小驼峰在前,首单词的首字母为小写字母,也就是说构成标识符的首单词的首字母小写,其他单词的首字母都大写,且除了单词的首字母外的其他部分都小写。

2.为啥要用驼峰命名法?
加强代码的可读性
/*在一个学期中,有期中考试,期末考试,如果都像下面这般定义*/
double score1=99,score2=98;
//如何辨别score1和score2中哪个是期中考试成绩的变量还是期末考试的变量呢?显然不好区分
//而用了如下所示的小驼峰命名法,会发现很容易知道它代表的含义及其作用
double midScore=99,finalScore=98;
//mid为中间的意思,final为最终的,那么midScore的含义为中间的成绩即期中成绩,finalScore的含义为最终的成绩即期末考试,这样是不是很容易区分啦!!!
1
2
3
4
5
6
3.如何使用驼峰命名法
a.小驼峰命名法的使用范围
变量名的命名、函数名(方法名)的命名等

b.大驼峰命名法的使用范围
类名的命名、接口名、命名空间等
 

关键字一律用小写字母标识,按其用途划分为如下几组。

(1)用于数据类型。

用于数据类型的关键字有 boolean、byte、char、 double、 float、int、long、new、short、void、instanceof。

(2)用于语句。

用于语句的关键字有break、case、 catch、 continue、 default 、do、 else、 for、 if、return、switch、try、 while、 finally、 throw、this、 super。

(3)用于修饰

用于修饰的关键字有 abstract、final、native、private、 protected、public、static、synchronized、

transient、 volatile。

(4)用于方法、接口、包和异常

用于方法、类、接口、包和异常的关键字有 class、 extends、 implements、interface、 package、import、throws。

还有些关键字,如 future、 generic、 operator、 outer、rest、var等都是Java保留的没有意义的关键字。 [4] 

另外,Java还有3个保留字:goto、const、null。它们不是关键字,而是文字。包含Java定义的值。和关键字一样,它们也不可以作为标识符使用。

关键字

含义

abstract

表明类或者成员方法具有抽象属性

assert

断言,用来进行程序调试

boolean

基本数据类型之一,声明布尔类型的关键字

break

提前跳出一个块

byte

基本数据类型之一,字节类型

case

用在switch语句之中,表示其中的一个分支

catch

用在异常处理中,用来捕捉异常

char

基本数据类型之一,字符类型

class

声明一个类

const

保留关键字,没有具体含义

continue

回到一个块的开始处

default

默认,例如,用在switch语句中,表明一个默认的分支。Java8 中也作用于声明接口函数的默认实现

do

用在do-while循环结构中

double

基本数据类型之一,双精度浮点数类型

else

用在条件语句中,表明当条件不成立时的分支

enum

枚举

extends

表明一个类型是另一个类型的子类型。对于类,可以是另一个类或者抽象类;对于接口,可以是另一个接口

final

用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变,用来定义常量

finally

用于处理异常情况,用来声明一个基本肯定会被执行到的语句块

float

基本数据类型之一,单精度浮点数类型

for

一种循环结构的引导词

goto

保留关键字,没有具体含义

if

条件语句的引导词

implements

表明一个类实现了给定的接口

import

表明要访问指定的类或包

instanceof

用来测试一个对象是否是指定类型的实例对象

int

基本数据类型之一,整数类型

interface

接口

long

基本数据类型之一,长整数类型

native

用来声明一个方法是由与计算机相关的语言(如C/C++/FORTRAN语言)实现的

new

用来创建新实例对象

package

private

一种访问控制方式:私用模式

protected

一种访问控制方式:保护模式

public

一种访问控制方式:共用模式

return

从成员方法中返回数据

short

基本数据类型之一,短整数类型

static

表明具有静态属性

strictfp

用来声明FP_strict(单精度或双精度浮点数)表达式遵循IEEE 754算术规范

super

表明当前对象的父类型的引用或者父类型的构造方法

switch

分支语句结构的引导词

synchronized

表明一段代码需要同步执行

this

指向当前实例对象的引用

throw

抛出一个异常

throws

声明在当前定义的成员方法中所有需要抛出的异常

transient

声明不用序列化的成员域

try

尝试一个可能抛出异常的程序块

void

声明当前成员方法没有返回值

volatile

表明两个或者多个变量必须同步地发生变化

while

用在循环结构中

字面值

/*
    关于字面值:
    
        *字面值:
            -10、100
            -3.14
            -‘a’
            -true\false
        字面值就是数据
        *字面值是java源程序的组成部分之一,包括标识符和关键字都是java源程序的组成部分
        *数据在现实世界当中是分门别类的,所以数据在计算机编程语言当中也是由类型的
            -10、100        属于整型字面值
            -3.14            属于浮点型字面值
            -true、false    属于布尔型字面值
            -“abc”、“中国人”属于字符串型字面值
            -‘A’、‘人’        属于字符型字面值
            
        *注意:
            java语言中当中所有的字符串型字面值必须使用双引号括起来,双引号是半角。
            java语言中当中所有的字符型字面值必须使用单引号括起来,单引号是半角。
            
*/
public class ConstTest01{
    public static void main (String[] args){
        System.out.println("abc");
        System.out.println("最近你过得怎么样");
        System.out.println(10);
        System.out.println(100);
        System.out.println(true);
        System.out.println(3.14);
        System.out.println('3.14');
        System.out.println('ABC');
        //编译报错,应为单引号中只能存放单个字符,属于字符型字面值。
        //100是一个字面值,是一个整数型数值,那么既然是数据储存在内存中,必定会占用一定的内存空间。
        System.out.println(false);
        System.out.println('A');
        System.out.println('人');
        System.out.println(1111100);
        System.out.println(1111100);
        System.out.println(1111100);
        System.out.println(1111100);
    }
}

java变量是程序中最基本的存储单元,其包括变量名、变量类型、作用域。java程序中每一个变量都属于特定的数据类型,在使用前必须对其进行声明。
如:int a = 100;
float f =23.3f;
String 是=“hello”;

一、变量的概念和分类
1、概念:本质上来说变量是内存中的一小块区域,通过变量名来访问这块区域。因此,使用每一个变量前必须要先申请(声明)然后必须对其进行赋值,才能使用

这块区域的大小取决于 声明的数据类型为哪一类
2、分类:


java中没有无符号的数
按照所属的数据类型分:

基本数据类型(在栈stack中):

整数类型:byte(1字节)、short(2字节)、int(4字节)、long(8字节)、float(4字节)、double(8字节)
整数类型默认为int、浮点类型默认为double。
字符型: char(使用Unicode编码、每个字符占两个字节,8个bite一个字节)
布尔型: boolean(与C语言不同,只能取true和false)
引用数据类型(在堆heap中):基础类型之外的
( *若想让基础类型存放在堆中,可以将基础类型包装为一个对象。将会用到基础类型的包装类)

内存分析:基础类型占一块内存,引用类型占两块内存


按照声明的位置来分:

局部变量:方法体内,或者语句块内部定义的变量(局部变量不会默认初始化、必须先声明并赋值)

成员变量:方法体之外,类体中(需要先声明、赋值,若没有先赋值、则默认初始化后再使用)

作用域:在大括号内声明的变量,出了大括号之后就没有人认识了,不能用了。

public class test1 {
     static  double j = 1.23; //j为成员变量
    public static void main (String [] args) {//args为局部变量
        int i = 123;
        String s = "Hello!";//args、i和s为局部变量
        System.out.println("i:" + i);
        System.out.println("s:" + s);
        System.out.println("j:" + j);
        
    }
}//
1
2
3
4
5
6
7
8
9
10
11
二、基础数据类型的转换
容量小的自动转换为容量大的:
byte,short,char -> int -> long -> float -> double
整数类型默认为int、浮点类型默认为double。

容量大的转换为容量小的:强制类型转换

public class Testconvert1 {
    public static void main(String [] args) {
        int i1 = 3;
        int i2 = 54;
        double d1 = (double)(i1+i2);//int被强制转换为double类型
        double d2 = (i1+i2)*1.5;//系统自动转换为double类型
        float f1 = 3.14f;//必须加f
        float f2 = (float)(5.67+d2);//double被强制转换为float
        System.out.println("d1:"+d1);
        System.out.println("d2:"+d2);
        
        byte b1 = 3;
        byte b2 = 6;//系统默认为int类型
        byte b3 = (byte)(b1 +b2);//int被强制转换为byte
        System.out.println("b3:"+b3);
        
        long l1 = 28932087982l;//必须加 l 
        long l2 = 234;
        double d3 = l1+l2; //小变大 系统自动转换为double类型
        long l3 = (long) d3; //强制转换为long类型,会舍去小数部分,而不是四舍五入。
        System.out.println("l3:"+l3);
    }
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

智鹿空间

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

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

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

打赏作者

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

抵扣说明:

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

余额充值