instanceof操作符

樽海鞘优化算法详解:原理、实现与应用 本文详细介绍了樽海鞘优化算法(SSA)的原理、实现与应用。该算法模拟樽海鞘链式群体行为,将优化问题解空间映射为群体移动空间,通过领导者引导和追随者跟随的协作机制寻找最优解。文章从生物特性、数学模型到Python代码实现进行了系统阐述,包括种群初始化、位置更新公式和收敛因子等核心要素,并展示了算法在函数优化等领域的应用潜力。该算法具有结构简单、参数少、实现容易等特点,在多种优化问题上表现良好。 阅读详情

    在进行强制类型转换的时候为了防止出现ClassCastException,需要进行判断,可以使用instanceof操作符。下面分别介绍instanceof操作符的基本用法、使用的场合以及注意事项。

1、基本用法

    instanceof操作符用于判断某个对象是否是某个类型的对象。

    格式如下:

    o instanceof C

    o表示对象,C表示类型,如果o是C的对象表达式返回true,否则返回false。

    下面的代码用于判断参数是否为整数:

public void f(Object o){

   if(o instanceof Integer){

     System.out.println("参数是整数!");

   }

}

2、使用场合

     在对一个对象进行强制类型转换的时候,如果类型不匹配,就会产生java.lang.ClassCastException异常。例如下面的代码:

      Animal a = new Cat();

      Dog d = (Dog)a;

    上面的代码从语法上看没有问题,但是逻辑上是要把猫强制转换成狗,我们知道它不能转换,事实上也不能转换,程序能够编译通过,但是运行的时候就会报错:java.lang.ClassCastException.

    这个问题很容易发现,有时候却不怎么容易发现,例如下面的代码:

public void f(Animal a){

   Dog d = (Dog)a;

   ...

}

    参数的类型是Animal,能不能强制转换成Dog呢?不一定,所以为了避免因为a不是Dog而转换出错,就需要使用instanceof进行判断了。上面的代码可以改成下面的样子:

public void f(Animal a){

   if(a instanceof Dog){

       Dog d = (Dog)a;

       ...

   }

}

    这样就可以避免ClassCastException异常了。

3、使用时候的注意事项

a)在使用的时候,instanceof前面的类型是已知的(例如上面的例子中a的类型是Animal),instanceof后面的类型应该与声明变量使用的类型有关系,通常应该是子类。例如下面的代码:

  Number x = 0;
  System.out.println(x instanceof Integer);   // 正确
  System.out.println(x instanceof Number);  // 正确
  System.out.println(x instanceof Object);  // 正确
  System.out.println(x instanceof String);  // 错误

第1行声明了x的类型是Number。第2行判断x是不是Integer类型,是合法的,因为Integer是Number的子类。第3行是合法的,就是Number类型本身。第3行也是合法的,因为Object是Number的祖先类。第5行是错误的,因为String类与Number类没有任何关系。实际上第3行和第4行的结果肯定是true。有意义的是第2行。

b)在进行判断的时候指的是实例而不是引用,例如下面的代码将输出false。

  String tt=null;
  System.out.println(tt instanceof String);

使用String定义了引用tt,但是没有指向任何实例,所以要判断它是不是String的实例,返回值就是false,因为他不是实例。

李绪成 优快云 Blog:http://blog.youkuaiyun.com/javaeeteacher
优快云学生大本营:
http://student.youkuaiyun.com/space.php?uid=124362
如果喜欢我的文章,就加我为好友:
http://student.youkuaiyun.com/invite.php?u=124362&c=7be8ba2b6f3b6cc5

海康威视嵌入式最全面试题及参考答案(3万字长文) 主营业务:提供包括前端摄像头、后端存储设备、显示控制设备等在内的全方位视频监控解决方案。市场地位:在全球范围内享有较高的市场份额,在安防领域具有较强的竞争力。技术创新:持续投入研发,拥有多项核心技术和专利,特别是在视频处理算法、人工智能等方面取得了显著成果。社会责任:积极参与公共安全项目,为智慧城市、交通管理等领域提供技术支持和服务。国际业务:除了国内市场外,海康威视的产品和服务也销往全球多个国家和地区。面向对象编程。 阅读详情

相关推荐

(nginx) nginx5 nginx https部署实战

综上所述,相比 HTTP 协议,HTTPS 协议增加了很多握手、加密解密等流程,虽然过程很复杂,但其可以保证数据传输的安全。所以在这个互联网膨胀的时代,其中隐藏着各种看不见的危机,为了保证数据的安全,维护网络稳定,建议大家多多推广HTTPS。SSL 证书费用很高,以及其在服务器上的部署、更新维护非常繁琐HTTPS 降低用户访问速度(多次握手)网站改用HTTPS 以后,由HTTP 跳转到 HTTPS 的方式增加了用户访问耗时(多数网站采用302跳转)

weixin_50382197的博客 1505

Java-用instanceof关键字进行类型判断

判断引用的类是猫还是狗? 如何才能知道一个父类引用的对象,本来是什么子类? 格式: 对象 instanceof 类名称 这将会得到一个boolean值结果,也就是判断前面的对象能不能当做后面类型的实例。 public class Demo02Instanceof { public static void main(String[] args) { Animal animal = new Cat();//本来是一只猫 或 者 狗 animal.eat();//猫吃鱼 //如果希望调用

weixin_46370945的博客 1102

【Flink cdc】Data row is smaller than a column index, internal schema representation is probably xxx

翻译一下:当scan.startup.mode=EARLIEST_OFFSET时,如果在最早的offset之后表结构有过变化就无法支持。原因应该是在binlog 的earliest_offset之后,表结构被修改过。我的解决方案:source配置中使用。mysql source配置使用。,以时间戳为消费依据。

integrity 2085

java中的instanceof 关键字以及作用

java中的instanceof 关键字以及作用

gulang00的博客 975

为什么你的Mac蓝牙总断连?深入解析硬件干扰与系统设置避坑

本文深入解析Mac蓝牙频繁断连的原因,包括硬件干扰(如WiFi同频干扰、USB设备电磁干扰)和系统设置问题,并提供详细的优化方案和诊断工具(如blueutil)使用指南,帮助用户有效解决蓝牙稳定性问题。

ik67890123的博客 682

深入Linux内核:PTP硬件时间戳(HW Timestamp)是如何炼成的?

本文深入探讨了Linux内核中PTP硬件时间戳(HW Timestamp)的实现原理与实战应用。通过分析IEEE 1588协议在网络时间同步中的关键作用,详细解析了硬件时间戳在Linux内核中的架构设计、驱动开发及性能优化技巧,帮助开发者实现纳秒级精度的时间同步。

weixin_30727835的博客 651

细说(java)引用类型的强制转化

父类与子类之间的转换分为向上转型和向下转型 向上变型: 子类的小范围转换为父类的大范围; 相当于把子类当作父类,从而失去了其子类的新增属性; 写法:父类名 对象=new 子类名(); Animal animal2=new Cat(); 向下转型: ...

m0_66460650的博客 665

RK3588 部署 YOLO26 目标检测:从训练到 NPU 推理

如果做垂直场景(工业缺陷、农作物、特定零件),需要自己标数据。采集图像(500+ 张,覆盖不同光照/角度)→ 筛选(删除模糊/无目标)→ LabelImg 标注(选择 YOLO 格式)→ 划分(train:val:test = 7:2:1)labelImg├── train/├── val/├── test/YOLO26 在 RK3588 上的全流程是 PC 端训练 + ONNX 导出 → RKNN 转换(INT8 量化)→ 板端推理。

m0_71589036的博客 110

Java千问:instanceof运算符用法详解

Java语言当中提供了一个叫做instanceof的运算符。很多教科书上对这个运算符的介绍并不详细,只是简单的说这个运算符是用来判断某个对象是不是属于某种类型。我们现在就用一篇短文介绍一下instanceof的运算符的作用和注意事项。请看下面的代码片段 代码中定义了一个接口和两个类。大家记清楚它们之间的关系:Person类实现了Moveable接口,Student类继承了Person类。紧接...

穆哥学堂--Java学习园地 2816

STM32cubemx配置驱动DHT11模块

本篇文章将带大家学习使用DHT11湿温度模块,使用这个模块可以获取当前的温度和湿度数据。DHT11可以用于智能家居,蔬菜大棚等项目当中适用范围广。DHT11 是一种数字式温湿度传感器,由杜邦公司推出。它可以测量环境中的温度和湿度,并将测量结果以数字形式传输给微控制器或其他电子设备,适用于通过数字信号读取环境温湿度的应用场景。DHT11 传感器使用单总线数据交换协议,可以通过一个 I/O 引脚进行控制和数据传输。

m0_49476241的博客 5912

[PCIE5.0] 2.2.8.9 Optimized Buffer Flush/Fill (OBFF) Message

这段文字讲解的是 优化的缓冲区清空/填充(OBFF)消息,它是 PCI Express(PCIe)规范中的一个可选功能,用于向设备报告平台中央资源的状态。简单来说,OBFF 主要帮助设备了解当前平台资源(如缓存或内存)的状态,从而优化数据的处理和传输。这章重点内容如下。

系统固件工程师 538

意外的类型int_有关instanceof及泛型类型信息的探究

在课上学习泛型时,老师提到不能使用instanceof这个运算符来检验泛型类型的信息,因为“运行时泛型消失了”:我有点不太明白这句话该怎么理解:消失的到底是什么东西?instanceof又是什么?而且后面又一次出现instanceof时我们被告诫尽量避免使用这个运算符,这让我感到很奇怪(注:下图中instanceof后面不应该有括号,它是个运算符而不是方法):一方面我不知道这个东西到底怎么使用,另...

weixin_39617685的博客 603

基于STM32L4XX、HAL库的ICM-42607-P姿态传感器驱动程序设计

/ 转换为dps(±1000dps量程)float accel_x = sensor_data.accel_x * (8.0f / 32768.0f);// 转换为g值(±8g量程)#define ICM42607_I2C_ADDR 0x68 << 1 // I2C地址(SA0=0)= 0x40) { // ICM-42607的WHO_AM_I值为0x40。// 读取传感器数据。

zhusl6688的博客 835

JavaScript typeof 操作符和 instanceof 操作符

typeof 操作符可以确定值的原始类型,而 instanceof 操作符用于确保值的引用类型。typeof 操作符最适合用来判断一个变量是否为原始类型。更确切地说,它是判断一个变量是否为字符串、数值、布尔值或 undefined 的最好方式。如果值是对象或 null,那么 typeof 返回 "object"。typeof 操作符在用于检测函数时也会返回 "function"。

jyn15159的博客 888

温度PID控制PLC程序

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

深度学习工具包 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")

Java的instanceof操作符

Java的instanceof操作符

qq_56299755的博客 107

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

教妹学Java(三十八):instanceof 操作符的用法

方法,它的参数类型为 I,在方法体重,通过 instanceof 操作符判断参数 i 到底是 A 还是 B,如果是 A,对 i 向下转型为 A,然后调用。二哥肝了两天两夜,《程序员不可或缺的软实力》第一版强势来袭,纯手敲,足足 20 万字精华文章,贯穿了我十余年的编程生涯,涉及到了生活和工作中的方方面面,“三妹,instanceof 操作符我们就学到这里吧,它的用法我相信你一定全部掌握了。“好的,二哥,我这就去练习去。方法,如果是 B ,对 i 向下转型为 B,然后调用。方法,在 Call 类中,有一个。

2501_90425293的博客 943

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

手写instanceof、手写new操作符

【代码】手写instanceof、手写new操作符。

weixin_45980065的博客 906

鸿蒙中,类型检查typeof 和 instanceof 操作符

摘要: 鸿蒙应用开发中,typeof和instanceof是类型检查的核心操作符,但适用场景不同。typeof用于检测基本数据类型(如"number"、"string"),但对对象仅返回"object";instanceof则验证对象是否为特定类的实例(如数组、自定义组件)。关键区别在于:typeof针对原始类型,instanceof适用于引用类型。鸿蒙开发中建议结合两者实现类型守卫,例如判断API返回数据或组件类型,同时注意typeof null

梦想不只是梦与想的博客 1510

php instanceof操作符

<br /><strong><span style="color: #ff6600;">instanceof </span></strong>操作符是PHP中的一个比较操作符。它接受左右两边的参数,并返回Boolean类型的值。这个操作符是用来确定对象的某个实例是否为特定的类型,或者是否从某个类型继承,又或者是否实现了某个特定的接口。<br /> <hr><br />     说明: “类型”代表的是某个类的运行时定义。PHP在解析类或者接口定义时,会创建一个“类型”。<br /> <hr>

tianyi_lee的专栏 793

关于instanceof操作符

Example:    Class Teacher and Student are subclass of class Person.    Person p;    Teacher t;    Student s;    p, t and s are all non-null.    if(t instanceof Person) {  s = (Student)t; }

1885

JAVA:instanceof操作符使用

public class Quadrangle2 { public static void draw(Quadrangle2 q){ } } class Square extends Quadrangle2{ } class Anything2{ } class Parallelogram extends Quadrangle2{ public static void main(String args[]){ Quadrangle2 q=new Quadran

weixin_44396481的博客 184

Java中instanceof操作符

在程序中执行向下转型操作时,如果父类对象不是子类对象的实例,就会发生ClassCastException异常,所以在执行向下转型之前需要养成一个良好的习惯,就是判断父类对象是否为子类对象的实例。这个判断通常使用instanceof操作符来完成。 可以使用instanceof操作符判断是否一个类实现了某个接口,也可以用它来判断一个实例对象是否属于一个类。 instanceof的语法格式如下: my...

weixin_44798518的博客 281

instanceof是一个二元操作符

instanceof是一个二元操作符,不是方法,不是类方法。

qq_43118674的博客 65

instanceof 操作符

instanceof 操作符用于判断一个引用类型所引用的对象是否是一个类的实例。instanceof 操作符左边的操作元是一个引用类型,右边的操作元是一个类名或接口。 eg: obj instanceof ClassName obj instanceof InterfaceName 一个类的实例包括类本身的实例,以及所有直接或间接的子类的实例。 instance

Fish3812的专栏 884

操作符 instanceof

操作符 instanceofhttp://docs.oracle.com/javase/tutorial/java/nutsandbolts/op2.html判断某个实例对象类型,包括子类与实现 You can use it to test if an object is an instance of a class, an instance of a subclass, or an insta

zwt0909的博客 378

instanceof 操作符 instanceof 操作符 和接口

instanceof 操作符 result =  对象名称 instanceof 类型 参数: result:布尔类型。 对象名称:必选项,任意对象表达式。 类型:必选项,任意已定义的类,可以是api中的类,也可以说自定义的类。 说明:如果对象是这个类型的实例,则instanceof运算符返回true。如果对象不是指定类的一个实例,或者对象是null,则返回false Objec

afuturezww的博客 469
上一篇: 程序是写给人用的
下一篇: instanceof操作符
老李-大连
博客等级 码龄20年 3206粉丝 308原创
评论 13
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值