Java面试基础问题之(三)—— Java的默认构造方法

面试高频考点!关于构造方法的那些事儿 在Java中,构造方法是一个特殊的方法,它的主要作用就是在创建对象的时候初始化对象的状态。构造方法的名字和类名相同,没有返回值类型。无论是有参构造还是无参构造,Java在新对象创建时会自动调用构造方法,这也是构造方法的核心特点之一。举个栗子在这里,Person类中定义了一个构造方法Person(String name, int age)。每当我们创建一个Person类的实例时,这个构造方法就会被调用,初始化name和age。默认构造方法:如果没有定义任何构造方法,Java会提供一个无参的默认构造方法。 阅读详情

一. 构造方法不用加返回类型,首字母大写

这与类的一般方法有所区别:必须要有返回类型,方法名推荐使用小驼峰法。

二. 默认构造方法的访问修饰符继承自类的访问修饰符

但是一旦你重载了,就是你写的那个权限,当然地,如果上面都没加,就是default,包权限。注意,如果类的访问修饰符是public,那么四种访问修饰符构造方法都可以使用(只能缩小权限)。

这里另注意一个问题:

修饰类的访问符就两个:public和default。

 

都会报错:Modifier ‘xxx’ not allowed here

并且,default是隐式使用的,不能加default关键字修饰,这和方法/变量的修饰符是一样的。

三. 如果重载了构造方法,则一定要重写一下默认的构造方法

不然使用这个默认构造方法时(无论是显式调用——new Xxx()或者super(),还是隐式调用——子类创建对象时)就会报找不到这个方法的错误,即Java设计者的逻辑是:如果你不写我就帮你实现一个默认的即无参空方法体的构造方法,但是一旦你自己实现了构造方法--------无论重载(即写其他有参的构造方法),还是覆写,原来那个空我就不提供了,如果你要用,那么你自己重新写一个,这也是及其推荐的做法:都加一个无参方法——特别是考虑到子类在自己构造方法的第一行会默认调用父类的无参构造方法。

四.构造方法不能继承,对于子类的可见性满足一般方法的访问修饰符原则

构造方法不能被继承,故也无从谈起覆写,只能重载,并且不要忘记加默认的无参构造方法。

一般方法/变量在其他类(包括子类)的可见性满足四种访问修饰符的作用域原则,构造方法同样如此、一般而言,构造方法的使用有两处:

① 子类的构造方法第一行。

② new对象时使用。

这两处均满足四种访问修饰符原则,看下面实验:

结构:

father:

这里将构造方法设置为private

Son:

Daughter:

从结果来看,这符合private不能被其他类方法的访问的原则。

可以看到,虽然我们在子类Son和Daughter类体中没有写构造方法,但是系统还是报错了,这是因为子类有个默认的构造方法,而且在构造方法的第一行默认调用父类无参构造方法,类似于这样:

 

换成default:

可以看到报错情况:

满足default为包可访问的原则。

protected:

满足protected为包内及其他包子类可访问的原则

public就不写了。

 

了解了子类构造方法的默认调用规则和构造方法也满足四种访问修饰符原则后,看下面的小实验,有助于我们更深刻理解:

结构照旧:

Father:

Son:

Daughter:

可以看到有趣的是,同包下的Son报错,另外一个包下的Daughter却没有报错。

原因在于,Father中两个构造方法,一个是private,一个是protected。Son虽然与Father同包,但是默认调用的访问是Father的无参构造方法(系统实现),类似这样:

private不能被任何外类访问,故报错。

而Daughter虽然在外包,但是由于自己写的构造方法显式调用了Father的有参构造方法:

而protected是本包及外包子类可用的,故不会报错。这里有个背景知识:不写子类构造方法或者写了子类构造方法却没有显式调用哪一个父类构造方法,则默认调用父类无参构造方法,但是如果显式调用了某一个构造方法(如本例中Daughter调用super(100)),则系统不再自动调用任何其他构造方法。

 

 

 

JAVA常见基础面试问题汇集 4.==和equals()的区别①关于==解读:②关于equals解读:补充源码: 9.HashMap与ConcurrentHashMap的区别?10.列举10个常见异常NullPointerException 空指针异常 、 ClassNotFoundException 类找不到异常ArithmeticException 数学运算异常、 IndexOutOfBoundsExcept 下标越界异常IllegalArgumentException 非法参数异常 、 FileNotFoundException 阅读详情

相关推荐

Java基础面试题

装箱就是自动将基本数据类型转换为包装器类型(int-->Integer)。调用方法:Integer的valueOf(int)方法拆箱就是自动将包装器类型转换为基本数据类型(Integer-->int)。调用方法:Integer的intValue方法。

weixin_70730532的博客 1790

默认构造方法总结

默认构造方法定义:无参数的构造方法称为默认构造方法。作用:java每个类至少定义一个构造方法,当一个类没有构造方法,编译程序自动提供一个默认构造方法。格式如下<与类相同的访问控制符><类名>(){       super();}解释:super()作用是调用父类的默认构造方法,java.lang.Object类是所有java类祖先。易错:当一个类有一个构造方法(无论有无参数...

qq_39064700的博客 6765

2024年Java基础反射---并没那么难系列【三】,这些细节在Java面试上要注意了

在开头跟大家分享的时候我就说,面试我是没有做好准备的,全靠平时的积累,确实有点临时抱佛脚了,以至于我自己还是挺懊恼的。(准备好了或许可以拿个40k,没做准备只有30k+,你们懂那种感觉吗)如何准备面试?1、前期铺垫(技术沉积)程序员面试其实是对于技术的一次摸底考试,你的技术牛逼,那你就是大爷。大厂对于技术的要求主要体现在:基础,原理,深入研究源码,广度,实战五个方面,也只有将原理理论结合实战才能把技术点吃透。

2401_84558452的博客 965

java 局部变量不能加访问权限修饰和static,能加final

在局部变量的前面,例如{}代码快,或者方法的{}内加如上修饰符。 Java报错: Modifier ‘private‘ not allowed here Modifier ‘protected‘ not allowed here Modifier ‘public‘ not allowed here Modifier ‘static‘ not allowed here 原因: 访问局部变量的过程:对象-> 方法->局部变量。访问局部变量就已经有了访问权限的设定了。由此加修饰符也成了摆设。 对应st

weixin_44893955的博客 3194

Java的五个基础面试题

1.将一个float或double类型转换为整型时,会四舍五入吗? 2.如果已经定义了构造方法(无论是否有参数),编译器还会创建缺省的构造方法吗? 3.this关键字可以在方法外边用吗? 4.java中的垃圾回收器只能释放有new分配的内存,对吗? 5.用final修饰的变量,如果该变量在定义时没有被初始化,还是否可以对它进行赋值?...

MCO_CTO的博客 452

Java 面试必问!线程构造方法和静态块的执行线程到底是谁?

这是因为我们在主线程中创建了 MyThread 类的实例。无论你创建多少个线程,线程的构造方法本身是在当前线程中执行的,即在 new MyThread() 这一行代码执行时,构造方法就是在当前线程(此时是主线程)中被调用。虽然我们之后通过调用 thread.start() 启动了新的线程,但是这个启动过程本身是由主线程来发起的。所以,在此之前的构造过程,线程的构造方法自然是由主线程来执行。今天的文章我们通过一个简单的 Java 面试题,详细地讲解了线程类的构造方法和静态块是由哪个线程调用的。

孤芳不自赏 669

Java面向对象2--构造方法

定义:每一个class中都有构造方法。当创建一个对象时,我们所调用的是默认的构造方法。使用构造方法的作用是,初始化一个实例对象。 默认构造方法 默认的构造方法属于无参构造方法。调用默认的构造方法时,需要调用对应参数的set方法,不然实例的内部状态是不正确的。 默认的构造方法的形式: class 类名称 { public 类名称() { } } 例如: class Person { private String name; private int age; .

weixin_48067630的博客 656

面试题精讲系列12之Java中父类的构造方法能不能重写?

[TOC] 一. 面试题及剖析 1. 今日面试题 在上一篇文章中,壹哥 带各位详细的讲解了方法重载与重写的各自特点及区别,但是我们去面试的时候,面试官有时候并不会直接问我们”说说方法重载与重写的区别“,而是会间接的拐弯来问我们,比如: Java中父类的构造方法能不能被重写? 2. 题目剖析 其实上面这个题目,考察的还是我们对方法重写的掌握情况,只要我们把上一篇文章的内容熟悉的记下来,这个问题就可以得出很明确的答案。 二. 参考答案 1. 方法重写特点 为了方便各位查阅,壹哥 再次把方法

一一哥 1953

Java程序设计入门教程--默认构造方法

在缺省的情况下,编译器提供缺省的构造方法,也称为默认的构造方法,该构造方法是无参构造方法,并不需要在类中显式定义,将实例变量初始化为其缺省值。值得注意的是,在一个类中,如果我们已经显示地声明了一个构造方法,那么程序编译时就不会再生成默认的构造方法了。类的默认构造方法将对象的属性初始化为缺省值,成员变量如果是基本数据类型,其初始化是缺省的。所以在定义类时,若要显示地写出有参数的构造方法,最好写上无参数的构造方法。成员变量如果是引用类型,其缺省的初始值是。变量其缺省的初始值是。

潇笙 1333

基于MYD-YT153与AD7616的16通道高速ADC采集系统实战指南

在嵌入式系统与工业数据采集领域,模拟信号采集是连接物理世界与数字系统的关键技术。其核心原理是通过模数转换器(ADC)将连续的模拟电压信号转换为离散的数字码值,供处理器处理。这项技术的价值在于实现了对温度、压力、振动等关键物理量的精确感知与数字化,是工业自动化、设备监测、科学实验等场景的基石。本文聚焦于**多通道**、**高精度**采集这一常见需求,深入剖析如何利用全志T153处理器的LocalBus并行总线接口,高效驱动ADI的16位、16通道同步采样ADC芯片AD7616,构建一个稳定可靠的高速数据采集系

weixin_30335353的博客 443

Webug4.0 打靶笔记

一、Webug 的安装 (1)基本信息 WeBug 名称定义为”我们的漏洞”靶场环境 ,基础环境是基于 PHP/mysql 制作搭建而成,中级环境与高级环境分别都是由互联网漏洞事件而收集的漏洞存在的操作环境。部分漏洞是基于Windows操作系统的漏洞所以将WeBug的web环境都装在了一个纯净版的Windows 2003的虚拟机中。在 webug3.0 发布后的四百多天 226安全团队终于在大年初二发布了 webug 的 4.0 版本。 (2)虚拟机的安装 最新超详细VMware虚拟机下载与安装_隐

m0_60716947的博客 6127

教妹学Java(三十五): final 关键字的用法

final 关键字有哪些用法?

沉默王二 3241

时钟门控ICG单元的timing问题

本文探讨了数字IC设计中门控时钟(ICG)的时序收敛问题,重点分析了ICG单元在setup时序检查中易出现违例的原因及优化方法。文章指出,由于ICG单元不在时钟树平衡范围内,其时钟路径延迟通常小于后续寄存器,导致setup时序难以满足。提出的解决方案包括:1)将ICG尽量靠近受控寄存器放置;2)使用set_clock_gating_check命令加强时序约束;3)在布局阶段设置负时钟延迟;4)CTS阶段设置插入延迟。同时强调set_clock_gating_check命令对ICG单元同样有效,并介绍了ICG

u011075954的专栏 1104

Java有参构造方法和无参构造方法详解

一:有参数构造方法 在之前我们要为一个对象赋值,先要创建好对象之后然后“对象名.属性名”或者调用属性的setter为属性赋值。但是在很多时候觉得这样做很麻烦,最好的做法是在创建对象的时候完成属性的初始化操作,此时需要使用到有参数构造方法方能完成该功能(有人把构造方法叫做构造器)。 DEMO:定义有参数构造方法 上面定义了四个有参数构造方法,发现了构造方法可以重载, 书写的习惯是重载的构造方法按照参数的个数进行升序排序。但是如何去调用有参数的构造方法呢? DEMO:调用...

java9875的博客 6万+

XDS110 USB Debug Probe连接错误-260:CCS Theia环境下的诊断与修复指南

本文详细解析了CCS Theia环境下XDS110 USB Debug Probe连接错误-260的诊断与修复方法。从硬件连接到驱动状态、固件更新到软件配置,提供了全面的排查指南,帮助开发者快速解决这一常见的调试器通信障碍问题,确保嵌入式开发工作流畅进行。

hope8的博客 281

【无标题】ReaxFF拟合参数以及算法安装

ReaxFF拟合参数以及算法安装

zmzyzm的博客 1418

Java面试基础篇

Java 月入过万,就是干

dahuabao的博客 3055

halcon3d点云补全方法

属于halcon实例中的内容,后面还接了一部分的匹配

Tianwen_running的博客 1231

面试题分享之Java基础篇(三)

哈喽,小伙伴们,昨天我们学习了==和equals的区别以及hashcode等等,我们今天继续来分享几道Java基础的面试题。🌈

小杰不秃头的博客 1204

2026保姆级:1小时搞定C# OPC UA客户端开发——PLC与上位机全量数据交互零基础教程

本文介绍了使用C#开发OPC UA客户端的核心流程和关键代码实现。文章首先指出工业上位机开发中OPC UA的重要性,并针对新手常见问题提出了1小时掌握核心功能的解决方案。重点内容包括:选择官方.NET Standard库的优势、5分钟搭建开发环境的步骤、OPC UA客户端架构与通信流程的图解说明,以及完整的客户端基础类代码实现,涵盖了连接管理、证书配置、安全认证等关键功能。通过本文提供的代码模板,开发者可快速实现与PLC等工业设备的稳定数据交互。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 799

35、使用 Geo 创建 GitLab 的分布式只读副本

本文详细介绍了如何使用GitLab Geo功能创建分布式只读副本,涵盖数据库主从配置、SSH密钥查找方式更改、通过Web UI添加从节点、激活哈希存储及状态检查等关键步骤。同时提供了常见问题解答和配置流程图,帮助用户快速部署并维护Geo集群,实现跨地域的高效数据同步与高可用架构。

chair的专栏 80

Java基础(三)——类和对象、构造方法

本篇文章中我们学习Java基础中的类和对象及构造方法...

HuoZhiyan 的博客 1123

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

JAVA 三大框架基础面试题

一、Spring面试题1、Spring 在ssm中起什么作用? Spring:轻量级框架作用:Bean工厂,用来管理Bean的生命周期和框架集成。两大核心: 1、IOC/DI(控制反转/依赖注入) :把dao依赖注入到service层,service层反转给action层,Spring顶层容器为BeanFactory。 2、AOP:面向切面编程2、Spring的事务? 编程式事务管理:编程方式管理...

weixin_34247032的博客 2020

假人有限元模型

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

深度学习工具包 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 面试相关问题(上)——基础问题&集合问题

Java面试相关问题——基础问题&集合问题

良木 1254

计算机控制技术及应用

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

上一篇: Java面试基础问题之(二)—— Java的四种访问修饰符
下一篇: Java刷题常用API(二)————String
ProLayman
博客等级 码龄10年 105粉丝 192原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值