程序员的基本功

转载于:http://www.cnblogs.com/cuiliqiang/archive/2010/12/12/1903809.html

记得来TW之前看到过一个论坛上有人对TW的一条评价:这是一个奇怪的公司,非常强调代码风格。

  现在已经在TW工作半年多了,回想起这句话,发现自己已经完全融入到这种“奇怪的”代码风格了。简言之,就是要把程序写的清晰易懂,易维护。具体如何达到这种目的。可以参看下面thoughtworks文集中的一篇,对象健身操,中所阐述的“编程规范”。

  1. 方法只使用一级缩进
  2. 拒绝else关键字
  3. 封装所有的原生类型和字符串
  4. 一行代码只有一个"."运算符
  5. 不要使用缩写
  6. 保持实体对象简单清晰
  7. 任何类中的实例变量都不要超过两个
  8. 使用一流的集合
  9. 不使用任何Getter/Setter/Property

  以上的这些标题如果感觉不是很能表意,不妨去网上搜下或者买本thoughtworks文集看看。其中第一条中的具体内容提到“把函数控制在5行”。其他条目中也有一些具体的“变态的”要求。

  我在开头把“编程规范”打上引号的意思是:这不是真正要严格遵守的规范,而是一个方向。以此为方向写出来的程序能够在一定程度上符合前面提到的“清晰易懂,易维护”。我一直认为,标准一定是要定高一些的,这样即使不能完全达到标准的要求,也会为此为努力。比如你的标准是60分,你可以轻松的达到而自我满足;而我的标准是101分,虽然永远都达不到,可是我可以保持在饥饿的状态,从而不断的进步。

  工作的前4,5个月,大部分时候写的是一些新代码。可以开心的按照上述的原则去编码。事实上写出来的代码也能够让自己觉得满意:短方法,表意的名字,测试,清晰简单的结构。并且感觉现代IDE对这种代码风格也是比较支持的。直到从TWU回来,回到原来的项目。项目进入support阶段。其实就是给人家修修bug。关键这些bug不是我们之前做的新功能引入的,而是他们的陈年老bug,两三年前的都有。所以这个阶段写的新代码少,多数是先读懂之前的代码,然后做少许修改。不得不说看这些老代码看起来真是恨痛苦,很慢。很多超过一屏甚至两屏的长函数,在我们24寸的大显示器下。

  在抱怨老代码写的像一坨的同时,突然觉得,还是自己看代码的能力有欠缺。一直工作在相对来说比较简单易懂的代码库上,然后去看这些一坨的代码就好像一个人很整洁很爱卫生的人突然被扔到垃圾堆里,异常难受。而对于常年在垃圾堆里生活的人们早已久闻不觉其臭,甚至还对垃圾堆中的那些病菌产生了抗体。世界没有那么美好,工作中总是会遇到不尽如人意的代码库,无论是做交付还是做咨询。所以除了要有写出清晰漂亮代码的能力外,还要有读复杂,凌乱的代码的能力和改造复杂凌乱代码的能力,也就是我们常说的重构。

  复杂代码可以分成两种:

  一种是受到语言,平台,库的限制,使得代码无法写的非常简短和易懂。比如使用纯c,没有很好的语言特性和可用的sdk,使得实现复杂逻辑的时候不可避免的要写出很长很复杂的代码。有时短的代码也不一定清楚,比如在代码中大量使用组合表达式或者是位运算符,在让代码变短的同时,变得更难懂。这些时候通常是处于效率的考虑。

  一种是我们有了更高级的语言和其上的大量的框架。如java+spring+struts+hibernate,或者是直接用Ruby on rails,Django等更易用的工具。通常在这些框架下写程序,是很容易遵循上面提到的让程序清晰简单的原则的。如果在这样的基础上写出了让人摸不着头脑的代码,那就完全是程序员的责任了。

  现在有种感觉,在层层叠叠的框架下写程序,就像是搭积木,越来越简单。底层封装的越来越严实,程序员都像白痴一样机械的在框架中填写你想实现的业务逻辑。发明框架的原因是为了让程序员不再重新创造轮子。但是长期在框架上工作的结果是,大家都不会做轮子了,真正有一天需要你做点不太一样的轮子的时候,就sb了。

  程序员写代码的能力是凌驾于语言之上的,是思考问题,抽象问题和用另外一种语言简洁,有效,清晰地描述问题的能力。我相信一个能写出优秀c代码的人通过一段时间对java及其上的一些框架的学习,也能写出优秀的java代码。

  目前我正在学习各种各样的框架,平时的工作也是在这些框架上工作,越来越感觉,学习这些新知识的同时,做为一个程序员的基本功也不能放下。框架是很好的东西,在提高生产力方面,但是框架让写程序变得简单的同时也会降低对程序员的要求,久而久之,基本功就被荒废了。如何锻炼这些基本功?个人认为用最简单的语言,如c,去做一些算法题是一个不错的主意;或者不甘做玩积木的小孩儿,看看框架的源码。其实做为一个计算机专业的学生,这些锻炼应该是当学生的时候都好好练习过的东西。如果现在发现有所欠缺了,就赶紧补补吧。

每个程序员都需要掌握的 7 项基本技能 每个 Coder 需要掌握的 7 项基本技能是:1.编程语言:程序员可以学习多种编程语言,最重要的具体语言取决于他们想从事的工作类型。一些最常见的编程语言包括 Java、C++、Python 和 JavaScript。对于编码人员来说,精通至少一种编程语言并在新语言出现时继续学习和了解最新情况非常重要。2.数据结构和算法:理解数据结构和算法对任何编码员来说都是必不可少的。数据结构用于以高效且易... 阅读详情

相关推荐

疯狂Java:突破程序员基本功

疯狂Java:突破程序员基本功的16课 ,增加对Java细节的学习理解和掌握,提高基本知识

程序员最重要的基本功有那些?

1、算法与数据结构2、英语3、正则表达式与文本处理4、分析的能力和方法5、面向对象思想6、测试与调试技术7、C语言8、SQL查询9、操作系统原理10、掌握一条工具链11、快速学习技术的能力12、编译原理13、接口设计14、善于处理人际关系15、C++ 基本知识16、Java 基本知识17、Linux 应用开发18、Win32 编程技术19、Linux 应用的配置和管理

李军舰 1079

翻倍密码系统主图指标-行情买卖以及持股-翻倍密码买点-获利了结,通达信炒股软件指标公式

华森制药,上图案例走势,低位出现“开始潜伏”信号,进场红色K线持股待涨,进入“翻倍密码买点”,开启紫色K线的持续上涨,目前也达到了翻倍行情,还没出现“获利了结”的出场信号。这套操盘系统,即便出现信号没走出翻倍行情,也都是可以全身而退,获利出局,或者微微止损出场,并不代表每一个波段都能翻倍,但是走翻倍行情,你按照信号参与或持仓是不会错过的。用这个操盘系统操作,你也不需要天天的盘中看盘,不需要担心盘中的震荡,只要趋势不变,哪怕是偶尔出现跌停,也不影响行情的继续上涨,这都是上涨途中的正常调整。

weixin_69760830的博客 3681

为什么说 80% 的程序员都缺乏基本功?

loonggg读完需要4分钟速读仅需2分钟昨天我在 InfoQ 上看文章的时候,看到了 InfoQ 对熊节老师的专访。感觉这篇文章说的非常有意思,大致说:有人说:“初级程...

非著名程序员 2317

HOPE:基于强化学习的混合策略路径规划器,适用于多样化停车场景

本文提出了一种混合策略路径规划器(HOPE),用于解决自动停车中的路径规划问题。HOPE结合了强化学习(RL)和Reeds-Shepp(RS)曲线,通过动作掩码机制引导RL智能体的探索,并利用Transformer融合环境感知信息与掩码。该方法在多样且复杂的停车场景中实现了超过97%的成功率,并通过真实实验验证了其泛化能力。此外,本文还提出了基于空间与障碍物分布的停车场景难度分级标准,进一步提升了训练与评估的效率。实验结果表明,HOPE在规划成功率和跨场景泛化能力上均优于传统的基于规则算法和朴素强化学习方法

weixin_42783201的博客 1466

嵌入式开发必备:aarch64-linux-gnu-gcc交叉编译工具链保姆级安装指南(含常见错误解决)

本文详细介绍了aarch64-linux-gnu-gcc交叉编译工具链的安装与配置方法,涵盖从系统软件源安装到Linaro二进制包部署的全流程。针对嵌入式开发中常见的依赖错误、版本冲突等问题提供实用解决方案,并分享性能优化技巧与项目集成经验,帮助开发者高效完成ARM64设备的跨平台开发。

yoga7的博客 1030

程序员软实力

需求文档,设计文档,接口文档,流程图,架构图,思维导图,培训文档,PPT,这些都是日常工作中必须要具备的能力。对于很多普通本科或者非计算机专业的IT从业者来说,入行IT都是靠B站或者网上的一些计算机课程,或者培训机构突击4-6个月,然后入门从事IT行业,尽管刚入行的时候找到一个还可以应付的工作,但是拔苗助长,临时抱佛脚,背诵八股文的新手,实际上基础并不扎实,现在很多培训机构,尤其是打着零基础到精通,包分配的线下培训机构,其实并不是教你如何快速提升编程能力,而是教你如何应付面试,如何背八股文。

littleboy_IT 1649

金蝶云星空-协同开发云-安装开发环境

金蝶协同开发云就是不需要每一个开发都在自己的本机安装开发环境,自己安装可容易出错,包括源代码管理也一并解决了,大大减少了开发人员的工作量和降低了上手的难度。

qq_33881408的博客 5598

程序员入门篇(非常详细)零基础入门到精通,收藏这一篇就够了

如果还有亲朋问你要不要让晚辈学习计算机,可以把这篇文章推荐给他们看看。入门推荐语言:Python、JavaScript。推荐理由:语法简单,有大量已经成熟的库。运行既有结果,特别是JavaScript,作为前端语言,还有页面效果。这种即时反馈更有动力让新人坚持学习。入门推荐工具:操作系统Mac OS(我觉得比windows工作效率高很多),编程工具,Visual Studio Code。入门训练:多动手,哪怕是模仿几个小项目。在写的过程中理解基础知识。正式入门,了解更多的语言比如Java。

liuhyusb的博客 1446

AGV舵轮选型实战:从核心参数到精准计算的完整指南

本文提供了一份详尽的AGV舵轮选型实战指南,强调从经验决策转向数据驱动。文章系统讲解了如何将工况需求转化为核心参数,并通过牵引力、扭矩、功率等关键计算步骤,指导工程师完成精准选型,避免因选型不当导致的运行故障与效率低下。

醉三国 495

2025最新聚合易支付官方完整版 – 全开源

2025聚合易支付5.0全开源版引领下一代智能支付革命,以"开放·智能·可信"为核心理念,成为全球首个通过量子安全认证的开源支付系统。该系统具备三大突破性创新:AI原生风控架构、跨链支付协议和零信任安全体系,支持百万级TPS处理能力。技术亮点包括Rust异步框架、Llama3风控模型、Polkadot跨链方案及IPFS分布式存储。提供量子安全支付、智能路由、元宇宙支付等六大功能,并通过开放原子基金会认证,构建了包含1200+全球开发者的开源生态。

meng1325200的博客 784

程序员的基本功是什么?

前段时间,和在读研究生的同学探望一个老师。我大学专业学的是政治学,老师问,我们专业(政治学)的基本功是什么?我同学说是方法学,而我说是历史。后来我们又谈到计算机专业的基本功,我说是离散数学和形式化的能力。程序员的基本功是什么呢?大家谈谈自己的看法吧!...

weixin_34033624的博客 161

【微服务】Spring AI Alibaba Jmus 从部署到项目实战详解

Spring AI Alibaba Jmus 从部署到项目实战详解

congge 4187

疯狂Java:突破程序员基本功的16课

收藏自用 链接:疯狂Java:突破程序员基本功的16课

ZQ1csdn的博客 1141

Kimodo 入门教程(一)英伟达开源人形机器人动捕数据集训练运动学动作扩散模型

Kimodo是一个基于700小时商用光学动作捕捉数据集训练的运动学动作扩散模型,能够生成高质量的人体和机器人3D动作。该模型支持通过文本提示和多种约束条件(如关键帧、末端执行器位置等)进行控制,并提供数字人类和类人机器人两种模型变体。安装方式包括软件包安装和源代码安装两种,需要配置HuggingFace令牌以访问文本编码器。推荐使用GPU加速,最低需要17GB显存。项目提供命令行生成和交互式演示两种使用方式,演示程序支持时间轴编辑和实时3D可视化。模型分为商用友好版和受限版,其中SMPL-X版本需要额外申请

2506_90492529的博客 1929

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

程序员的基本功-手撕代码

手撕代码是什么

csdn565973850的博客 952

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

python程序员工作怎样-python程序员怎样在面试过程中展现自己的基本功

原标题:python程序员怎样在面试过程中展现自己的基本功当下我国人工智能招聘岗位需求不多,不过后期的发展潜力巨大,而且python程序员的薪资待遇并不比Java程序员的差,Python程序员往往都有自己的主攻方向,不同方向的程序员需要展示的基本功也存在一定的差异,下面按照不同的方向进行说明:第一:Web开发方向。Web开发是Python比较常见的应用领域之一,面试Web开发岗位需要展现三部分内容...

weixin_37988176的博客 241

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

深度学习工具包 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:突破程序员基本功的16课》.pdf

关注“Java后端技术全栈”回复“面试”获取全套面试资料用java语言进行开发的人越来越多了,大量程序员正在涌入java编程领域。在这其中,就有很多“快餐式培训”人员。他们没有什么编程基...

田维常 499

书评-----疯狂Java:突破程序员基本功的16课.李刚

读这本书的时候,看完它的前言,可以说,真的是如坐春风,受益匪浅,可以说对我程序员职业生涯产生不可磨灭的影响,作者的观点对于我来说如雷贯耳,请看: ------------------------------------------------------------------------------------------------------------------------------

纸上得来终觉浅 绝知此事要躬行 1830

这应该是一个Java程序员的基本功

最近在公司代码中看到如下的一段代码,那真的是百感交集呀 ! 大家看一下,觉得写得如何? public static void secondConfirmAction(TradeParam tradeParam) { Map4NotNull<String, String> extraColumns4Trade = tradeParam.getExtraColumns4Trade(); List<String> tradeTypes = new ArrayList<

m0_37607945的博客 280

一名走过弯路的程序员心得 :基本功的重要性

看过身边很多人,包括可能现在在看这篇博客的你,也是一样,开发中调用着各种api,以为自己就特别的牛逼,包括之前我也是哈,所以我觉得有必要要分享我的感悟 :基本功的重要性 我是一名大三学生,以前在学校外包团队写项目,代码就是去网上复制粘贴,然后调用,说好听点,叫Api调用工程师,原理什么的都不知道,框架很容易上手,crud一顿操作,啪的一下很快啊,写项目确实很快,但是半年前我在牛客网看别人的面经,一问三不知,这种情况,怎么有机会去大厂呢?当即决定,在宿舍开始恶补基础,基础超级重要,当然补基础是一个相当漫长的时

weixin_45844836的博客 404

java程序员突破程序员基本功的十六课基本功之总结

1.java程序数组的基本语法        java语言是典型的静态语言,因此java的数组是静态的,即当数组被初始化之后的长度是不可变的。java程序中的数组必须经初始化才可使用。所谓初始化,就是为数组对象的元素分配内存空间,并未每个数组元素指定初始值。       数组的初始化有两种方式。静态初始化:初始化时由程序员显示指定每个数组元素的初始值,由系统决定数组长度; 动态初始化

qq_29211553的博客 814
上一篇: 编程2件事
下一篇: Hibernate快速起步
keithJava
博客等级 码龄16年 2粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值