Java面向对象—this关键字

【Java】还不懂this关键字?一分钟彻底弄懂this关键字 在上一篇【JavaSE】一文看懂构造器/构造方法(Cunstructor)中,我们已经在构造器中初步窥得this关键字的冰山一角了。大家有没有考虑过,在一个类的构造器中,我们为什么要使用this.属性而不直接使用属性呢?毕竟一个类中,不管属性被什么关键字修饰,在类中都可以访问。随着这个问题,今天瑶瑶子带大家深入分析一下Java中this关键字,让大家彻底理解this关键字. 阅读详情

this关键字


this关键字的作用:

(1)this在方法中表示正在调用该方法的当前对象

(2)this可以在方法内部调用到对象的属性信息

(3)this可以区分成员变量和局部变量,this调到的是成员变量

(4)this可以调用当前类中的其他普通方法,通常在一个类中,一个方法中调用另一个方法可以直接通过方法名调用,也可以使用this调用,效果一样,语法不一样而已

(5)this可以在构造方法中调用其他的构造方法,但是调用时必须写在构造方法中的第一句,语法:this(被调用构造方法的参数列表);

1、this表示当前调用该方法的对象

不同的对象在调用方法时,this分别代表不同的对象,但是这个过程是自动的

2、this可以在方法内部获取到对象中的属性信息

3、this还可以区分局部变量和成员变量

4、this调用本类中的普通方法

5、this在构造方法中调用其他构造方法

【Java】面向对象:构造方法、方法重载、this关键字 1.什么是对象 程序是为了模拟现实世界,解决现实问题而使用计算机语言编写的指令集和。 现实世界是由无数个"对象"组成。 万物皆对象。任何对象,都由自己的特征和行为。 特征:称之为属性,一般为名词,代表对象有什么。 行为:称之为方法,一般为动词,代表对象能做什么。 分析一个对象有什么?(手机:属性) 颜色、品牌、价格、星号... 阅读详情

相关推荐

史上最全的Logisim运算器实验教程(基于华中科技大学计算机组成原理实验)

本博客是实现了Logisim的运算器设计,有具体的运算器设计的思路和运算器设计的电路,适合一步一步的按照思路做。

qq_62325622的博客 4万+

this关键字、static关键字(静态变量、静态方法、静态代码块)、代码块、包

4、注意:在一个类的定义中,方法或代码块中等号左边的变量如果加了this,则该变量为成员变量,等号左边如果没有加this,则该变量如果在该方法或代码块的作用域中定义,则该变量为局部变量,否则为成员变量。(3)第三级:表示项目的名称,如bcms(业务连续性管理系统),oa(办公自动化),erp(企业资源计划),cms(内容管理系统)等。(1)静态成员信息与类信息(类对应的class文件/类的静态代码)一样,在内存中只有一份,都在类模版中,而类模版在JVM的方法区中。(1)第一级:表示项目类型。

Watermelon_Mr的博客 983

通用定时器脉冲计数实验(STM32CubeMx配置)

通用定时器脉冲计数实验

a1169511636的博客 5509

《JavaSE》---14.<面向对象系列之(附:this和super关键字)>

本篇文章详解this和super关键字:为什么要使用this、有this和无this的区别、this的深度理解、this为什么是引用、this的用法、用this访问对象的属性、用this调用构造方法、用this调用成员方法、super的用法、面试题:super和this的区别。有关super关键字在继承的文章中也有说明。

m0_73456341的博客 1454

Unity轻量级框架QFramework:四层架构与命令事件驱动的实战指南

在Unity游戏开发中,软件架构是确保项目可维护性和可扩展性的核心。通过分层架构(如MVC、DDD)和事件驱动设计,开发者能够有效管理代码复杂度,实现模块间的解耦与高效通信。QFramework作为一个轻量级框架,精准地运用了这些原理,通过严格定义的四层架构(表现层、系统层、数据层、工具层)和命令/事件通信规则,为中小型项目提供了“约束下的自由”。其核心价值在于以极简的代码(不足1000行)强制实施清晰的职责分离,如使用命令模式集中管理状态变更,并通过事件驱动实现响应式更新。这种设计特别适用于解决项目规模扩

weixin_42521032的博客 262

YOLOv8的Anchor-Free革新:从中心点预测到动态IoU匹配的全面解析

本文深入解析了YOLOv8采用Anchor-Free(无锚框)设计的核心优势与实现机制。通过摒弃预设锚框,模型直接预测目标中心点与宽高,结合解耦头、动态IoU匹配及Varifocal Loss等创新,显著简化了训练流程并提升了检测精度,尤其在小目标检测和模型泛化能力上表现突出。

weixin_29094301的博客 356

Java面向对象-this关键字

this关键字

weixin_58016347的博客 366

实战指南:彻底清除TIA Portal卸载后遗留的SQL Server WinCC实例

本文详细介绍了如何彻底清除TIA Portal卸载后遗留的SQL Server WinCC实例,解决重新安装时的冲突问题。通过控制面板排查、注册表验证、安全卸载操作流程和注册表深度清理等步骤,确保完全移除残留组件,避免系统崩溃。文章还提供了安装环境重建策略和预防措施,帮助工程师高效管理西门子自动化软件。

weixin_30482181的博客 404

Java面向对象中 this关键字的详解

一、this关键字的使用: this可以用来修饰:属性,方法,构造器 this修饰属性和方法: this理解为:当前对象 或当前正在创建的对象 2.1在类的方法中,我们可以使用“this.属性”或者“this.方法”的方式,调用当前对象属性或者方法,但是通常情况下,我们都选择省略“this.”。特殊情况下,如果方法的形参和类的属性同名时,我们必须显示的使用"this.变量"的方式,表示此变量是属性,而非形参。 2.1在类的构造器中,我们可以使用“this.属性”或者“this.方法”的方式,调用当前正在

路宇的博客 1428

飞牛NAS+Docker打造私人IPTV直播源:手把手教你部署iptv-api

本文详细介绍了如何在飞牛NAS上通过Docker部署iptv-api,打造私人IPTV直播源。从SSH配置到Docker容器部署,手把手教你实现自动更新直播源、多终端支持的解决方案,适用于Kodi、PotPlayer等播放器,提升家庭娱乐体验。

earth的博客 5557

物料主数据管理难在哪?基于AI算法的数据清洗工具了解一下

企企通打造的一套以AI模型和算法为核心的产品及服务,可针对各类企业的不同主数据痛点难点,提供多种解决方案,能够快速完成物料主数据清洗、识别、匹配、梳理,满足一物一码、分类梳理、一品多商、多维度比价、精准寻源选品、建立标准物料库、供应商及客户主数据清洗等业务场景需求。随着AI技术的快速发展,智能算法在数据清洗领域的应用越来越广泛,越来越多的数据清洗工作已经开始交由智能算法完成,通过自动化的方式处理大量数据,识别和纠正错误,填补缺失值,检测异常值,以及执行其他数据预处理任务,并提高效率并减少人为错误。

QQT_qqt的博客 1364

java面向对象this,static关键字

修饰符 class 类名 {// 1.成员变量(属性) // 2.成员方法 (行为) // 3.构造方法 (初始化类的对象数据的) }// 1.成员变量// '男' '女'// 成员变量// '男' '女'// 无参数构造方法// 有参数构造方法我们已经知道面向对象中,存在类和对象的概念,我们在类中定义了一些成员变量,例如name,age,sex ,结果发现这些成员变量,每个对象都存在(因为每个对象都可以访问)。

m0_58975186的博客 863

Vue3 - Arco Design Vue 表格组件 table 隐藏鼠标移入时 hover 高亮背景色,el-table 组件去除鼠标悬停在表格行的 hover 高亮效果(改变鼠标移入时的背景色)

vue3,arcodesignvue,arcodesign,表格,a-table,hover,表格hover的class类名是什么,class,hover,在arcodesignvue项目中,表格组件如何去掉鼠标移入时的hover效果,vue3arco.design表格组件修改鼠标移入行的背景颜色,table表格,取消表格行row移入高亮效果,去掉鼠标移入行时的hover效果,取消a-table的hover状态,取消高亮显示,隐藏表格鼠标hover效果,去除鼠标触摸变色效果,如何取消arco表

🏆 前端领域优质创作者 3768

Java面向对象中的this关键字的作用

家人们,今天关于 Java 的 this 关键字就跟你们唠到这儿啦。从区分变量、实现方法链,到助力构造器,this 关键字无处不在,发挥着关键作用。它就像一位贴心的向导,在对象的世界里为我们指引方向,确保代码准确无误地操作每一个对象。刚开始接触可能觉得有点绕,但多写几次代码,多琢磨琢磨,就能熟练掌握啦。要是之后我又学到啥好玩的编程知识,一定再回来跟大伙分享,祝家人们生活愉快,拜拜!

潜意识Java的博客 1415

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Java面向对象之方法重载、重写和关键字this、super

认识方法重载、方法重写,它们的区别。认识关键字this和super,并了解其用法。

qq15035899256的博客 1897

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Java面向对象程序设计——this关键字

本文以Person对象比较为例,深入讲解Java中this关键字的核心用法。this代表当前对象的引用,主要用于:区分成员变量与局部变量(解决命名冲突)、调用本类其他构造方法(`this()`实现代码复用)、返回当前对象实现链式调用、将当前对象作为参数传递。文章强调this不能在静态方法中使用,并对比了this与super的区别。通过构造方法、compareTo方法及setter中的实际应用,展示了this在对象初始化、比较和方法链中的关键作用。最后给出多个练习链接,适合初学者彻底掌握this

SBTI666的博客 658

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

4.Java面向对象-匿名对象、封装、private关键字、this关键字

4.Java——面向对象 一、面向对象思想概述 A:面向过程思想概述 我们来回想一下,这几天我们完成一个需求的步骤:首先是搞清楚我们要做什么,然后在分析怎么做,最后我们再代码体现。 一步一步去实现,而具体的每一步都需要我们去实现和操作。这些步骤相互调用和协作,完成我们的需求。 在上面的每一个具体步骤中我们都是参与者,并且需要面对具体的每一个步骤和过程,这就是面向过程最直接的体现。 那么什么是面向过程开发呢? 面向过程开发,其实就是面向着具体的每一个步骤和过程,把每一个步骤和过程完成,然后由这些功能方

qq_39004315的博客 199

Java-面向对象-this关键字

System.out.println(this.name+"喜欢"+name);//不加this则是唱歌喜欢唱歌。是什么:this就是一个变量,可以用在方法中,来拿当前对象;哪个对象调用哪个方法。//目标:认识this关键字,搞清楚this关键字的应用场景。//this是一个变量,现用方法中,用于拿到当前对象。//哪个对象调用这个方法,this就拿哪个对象。s3.printHobby("唱歌!this应用场景:主要解决:变量名称冲突问题。

qq_39279000的博客 257

Java面向对象私有化和this关键字

Java面向对象JavaBean规则、私有化、权限修饰符,this关键字 ...

Zhangt_1024的博客 533

Java笔记7:面向对象继承、this与super关键字详解

摘要: 本文系统讲解Java继承的核心概念与特性,包括单继承、成员访问权限及关键字的用法。继承通过extends实现代码复用,子类可调用父类非私有成员。this和super分别用于访问本类与父类资源,子类构造方法默认首行调用super()。方法重写需遵循严格规则(同名、同参、同返回类型,权限不更严格),私有/静态/final方法不可重写。继承是多态的基础,合理使用能提升代码复用性与扩展性。(150字) 关键词: 继承、this/super、方法重写、单继承、多态

2601_96363441的博客 7319

Java SE:面向对象(上):this引用+new关键字

面向对象(上)

gdswsj的博客 902

Java面向对象——封装以及this关键字

封装是面向对象编程(OOP)的三大特性之一,它将数据和操作数据的方法组合在一个单元内部,并对外部隐藏其具体实现细节。在Java中,封装是通过类的访问控制修饰符(如)和访问方法(getter 和 setter)来实现的。

Best_Basic的博客 286

【Java】面向对象基础(创建类,认识构造器,this关键字)

学习Java面向对象的基础。一、创建类1、在创建class文件的时候,文件夹名称跟第一个创建出来的类名是一样的。二、面向对象的基础(认识构造器)1、类的构造器:什么是构造器?构造器相当于是一种特殊的方法,作用是:有了这个构造器才能把类进行实例化对象。如果没有就不行。这个概念如果对比Python,就是Python中的__init__()函数的初始化赋值,在Python中,进行实例化对象的时候,那么就要给对象赋值,同理在Java中构造器也是起了这个作用。构造器分类:(1)有参数构造器。

weixin_45272371的博客 356

Java基础(面向对象一——理解、匿名函数、封装、构造函数和this关键字的使用)

对于我们学习Java的人来说,面向对象是一大难关,因为它需要我们去理解并试着转变自己以前写代码的思维。也可就不是像前面的函数那样只需要闷头敲代码就行了,”对象“么,肯定是要牵扯到堆内存,所以对于堆内存还不是太了解的,要下功夫了。 一、面向对象该概念 理解面向对象 学习面向对象最重要的还是理解,理解了代码也就有了,用毕老师的话说就是“学习了十年C语言的人,Java对他们来说是最难的”,

4338

Java面向对象(封装、getter/setter、构造器、this关键字)

Java面向对象(封装)1 封装1.1 什么是封装1.2 封装一问1.3 解决方法1.4 如何封装1.5 代码释义:StudentTest.java2 getter 和 setter 方法2.1 eclipse 快速添加 1 封装 1.1 什么是封装 封装举个例就像在小卖铺买的零食一样,零食都有包装,将零食与外界隔离开来,避免零食污染不可食用,这就是封装的思想。 1.2 封装一问 在文章 Java面向对象(方法、方法重载,方法可变参数) 说到的 “值类型(基本)和引用类型(类,数组)作为方法参数的区别” 中

weixin_44387652的博客 1485

java基础学习(七):面向对象中的关键字 - static、this、final

本文摘要:Java中三个关键字的用法解析。1)static关键字:修饰属性时共享所有对象,修饰方法可直接通过类调用,修饰代码块用于初始化;2)this关键字:代表当前对象,可调用属性和方法,在构造方法中可调用其他构造方法;3)final关键字:修饰基本类型不可二次赋值,修饰引用类型不可改变指向,修饰类不可继承,修饰方法不可重写,并能防止命令重排序。这些关键字各有特定使用场景和限制条件。

m0_64928156的博客 703
上一篇: Java面相对象—方法重载
下一篇: Java面相对象—static关键字—静态
得闲饮茶呃
博客等级 码龄4年 303粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值