【详识JAVA语言】方法重载

Java 方法重载 在 上一期 讲到了递归,今天来讲一下方法的重载! Java允许同一个类中定义多个同名方法,只要参数的个数或者类型不同即可。如果符合这种条件,即可称为方法的重载! 文章目录Java方法重载 概念Java方法重载 实例 Java方法重载 概念 在Java中,确定一个方法有三个因素: 调用者(方法所属者),既可以是类,又可以是对象; 方法名,方法的标识; 形参列表,当调用方法时,系统会根据传输入的实... 阅读详情

方法重载

为什么需要方法重载

public class TestMethod {

public static void main(String[] args) {

int a = 10;

int b = 20;

int ret = add(a, b);

System.out.println("ret = " + ret);



double a2 = 10.5;

double b2 = 20.5;

double ret2 = add(a2, b2);

System.out.println("ret2 = " + ret2);

}

public static int add(int x, int y) {

return x + y;

}

}

// 编译出错 Test.java:13: 错误: 不兼容的类型: 从double转换到int可能会有损失

double ret2 = add(a2, b2);

                ^

由于参数类型不匹配, 所以不能直接使用现有的 add 方法.

一种比较简单粗暴的解决方法如下:

public class TestMethod {

public static void main(String[] args) {

int a = 10;

int b = 20;

int ret = addInt(a, b);

System.out.println("ret = " + ret);

double a2 = 10.5;

double b2 = 20.5;

double ret2 = addDouble(a2, b2);

System.out.println("ret2 = " + ret2);

}

public static int addInt(int x, int y) {

return x + y;

}

public static double addDouble(double x, double y) {

return x + y;

}

}

上述代码确实可以解决问题,但不友好的地方是:需要提供许多不同的方法名,而取名字本来就是让人头疼的事 情。那能否将所有的名字都给成 add 呢?

方法重载概念

在自然语言中,一个词语如果有多重含义,那么就说该词语被重载了,具体代表什么含义需要结合具体的场景。

在Java中方法也是可以重载的。

在Java中,如果多个方法的名字相同,参数列表不同,则称该几种方法被重载了。

public class TestMethod {

public static void main(String[] args) {

add(1, 2); // 调用add(int, int)

add(1.5, 2.5); // 调用add(double, double)

add(1.5, 2.5, 3.5); // 调用add(double, double, double)

}

public static int add(int x, int y) {

return x + y;

}

public static double add(double x, double y) {

return x + y;

}

public static double add(double x, double y, double z) {

return x + y + z;

}

}

注意:

1. 方法名必须相同

2. 参数列表必须不同(参数的个数不同、参数的类型不同、类型的次序必须不同)

3. 与返回值类型是否相同无关

4. 编译器在编译代码时,会对实参类型进行推演,根据推演的结果来确定调用哪个方法

// 注意:两个方法如果仅仅只是因为返回值类型不同,是不能构成重载的

public class TestMethod {

public static void main(String[] args) {

int a = 10;

int b = 20;

int ret = add(a, b);

System.out.println("ret = " + ret);

}

public static int add(int x, int y) {

return x + y;

}

public static double add(int x, int y) {

return x + y;

}

}

// 编译出错 Test.java:13: 错误: 已在类 Test中定义了方法 add(int,int)

public static double add(int x, int y) {

                       ^

1 个错误

静态库编写和使用Demo 通过一个静态链接库的例子可以快速地帮助我们建立“库”的概念。对应的文章在我的blog里面,这里是对应的代码,简单的例子。 http://blog.youkuaiyun.com/cau_eric/article/details/9113509 立即下载

相关推荐

java方法重载示例

方法重载是以统一的方式处理不同数据类型的一种手段,这篇文章主要介绍了java方法重载示例,需要的朋友可以参考下

C++语言函数重载详解和示例

C++ 函数重载的概念 在实际开发中,有时候我们需要实现几个功能类似的函数,只是有些细节不同。例如把变量的值写入文件,变量的类型int、long、double、char,需要通过参数把变量传入函数。在C语言中不允许函数同名,程序员只能设计出四个不同名的函数,其函数原型与下面类似: bool writetofile_int(char *filenam...

C语言技术网-码农有道 1658

python 成语接龙-连接数据库

from xpinyin import Pinyin import pymysql while 1: conn = pymysql.connect( host='localhost', #本地连接 user='root', #数据库账户名 password='password', #数据库密码 db='dic',

Hero2902的博客 598

Java——方法的重载(实例解释)

Java——方法的重载(实例解释)

qq_63179750的博客 721

安装Quartus-II 13 和Modelsim

目录一、Quartus-II安装1.Quartus-II 13下载2.Quartus-II 13安装3.Quartus-II 13注册二、Modelsim安装 实验目的:安装Quartus-II 13 和Modelsim 实验环境:Windows10 参考资料:Quartus-II安装及使用 一、Quartus-II安装 1.Quartus-II 13下载 正点原子官方资料下载 百度网盘下载链接: https://pan.baidu.com/s/1a9d-bq9RZmWrRV542X4IEA 提取码:

qqq080的博客 8626

蓝桥杯单片机学习13——NE555方波发生器&频率测量

NE555详解、引脚图介绍、原理图及工作原理讲解、方波产生的原理、定时器测量频率的原理及使用方法、代码实现

weixin_67907028的博客 1万+

方法的重写和多态和类型转换和重载和可变个数形参

package com.rgf.oop.Demo08; //B类是父类,重写都是方法的重写,和属性无关 public class B { public static void test(){ System.out.println("B=>test"); } } package com.rgf.oop.Demo08; //A类是子类, public class A extends B{ public static void test(){ .

超级程序诞生的博客 740

HITS算法详解及代码实现

占坑

蓁蓁尔的博客 7461

Java之方法重载代码举例

针对那些方法的功能相同,参数列表不同的情况, 为了见名知意Java允许它们一样的名字,其实这种情况有一个专业名词:方法重载 方法重载: 在同一个类中,方法名相同 参数列表不同。与返回值无关,只看方法名 参数列表不同: A :参数个数不同 B :参数种类不同 例子: 参数个数不同 class Li{ public static void main(String[] args){ System.out.println(sum(10,20)); System.o

kaszxc的博客 1673

1、工作流介绍

工作流起源于办公自动化,是对软件中业务流程的抽象。通过工作流将各个任务有序组织起来形成一个完整的业务闭环。比如:请假审批流程,网上购物流程,银行贷款流程;!

leyoliu的博客 5108

TSN新技术,让您的设备网络“更实时、更确定、更安全”

近日,工业和信息化部发布了2022年第23号公告,批准发布行业标准YD/T 4134-2022《工业互联网时间敏感网络需求及场景》。该标准是国内首个时间敏感网络(TSN)技术标准,标志着我国TSN技术标准体系建设迈出了坚实的一步,对构建工业互联网网络标准体系具有重要意义。TSN源于Time-Sensitive Networking的缩写,中文译名为时间敏感网络,因其具备的确定性和微秒级交互特性,受到了对实时性要求较高的工业控制领域的关注。TSN与工业数智化。

创龙,嵌入式一体化解决方案商 771

java方法的重载

java中有很多方法是可以通过重载的方式实现的,这是 Java语言的一大特色,但是同时也为开发人员带来了一些麻烦,不知道怎么去调用这些方法,而且还容易出现一种情况就是:明明已经调用过了一个方法,但为什么又要去调用另一个方法?在上面的例子中,`Calculator`类中定义了三个名为`add`的方法,它们的参数列表分别为`(int, int)`、`(double, double)`和`(int, int, int)`。Java方法的重载指的是在同一个类中,方法名相同但参数列表不同的多个方法。

花生日记 5216

华为OD机试新系统真题 【LLM推理批次最大化】

华为OD机试 新系统真题【LLM推理批次最大化】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【LLM推理批次最大化】多语言题解。

qq_45776114的博客 569

java中的方法重载

一、简介 (一)定义 方法重载:如果同一个类中包含了两个及两个以上方法名相同,方法参数的个数、顺序或者类型不同的方法,则称为方法的重载。 二、 ...

qq_44801116的博客 1万+

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Java方法重载

方法重载 如果一个类中有多个具有相同名称但参数不同的方法,则称为方法重载。如果只需要执行一个操作,具有相同的方法名称将增加程序的可读性。 假设必须执行给定数值的添加操作(求和),但是参数的数量不固定,如果为两个参数编写add1(int,int)方法,为三个参数编写add2(int,int,int)方法,可能对其他程序员来说很难理解这样的方法的行为,因为它的名称不同。 正确的方式可以用重载: 两个参...

benhz的博客 3万+

深度学习工具包 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方法的重载是指同一个类中可以有多个同名方法,但这些方法的参数列表(参数类型、参数个数或参数顺序)必须不同,以便在调用时能够根据参数列表区分具体调用哪个方法。有些时候我们需要用一个函数同时兼容多种参数的情况, 我们就可以使用到方法重载.

qq_74013365的博客 2262

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

java语言中方法的重载

小时候,我们学会了十以内的加法,却对十以外的加法感到害怕,但从现在来看,它们都属于加法,只是计算方法略有不同。方法的重载也一样,同样的方法名,通过增减参数,改变参数的顺序,改变参数的数据类型来应对各种情况。以上就是java中方法的重载,本文仅简单介绍了方法的重载,怎么利用这个性质,还要靠咱们程序员的想象力和项目经理的天马行空了。

weixin_74141222的博客 5503

什么叫java方法重载?

方法重载是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数的类型或参数的个数。调用重载方法时,Java编译器能通过检查调用的方法的参数类型和个数选择一个恰当的方法。方法重载通常用于创建完成一组任务相似但参数的类型或参数的个数不同的方法。 Java的方法重载,就是在类中可以创建多个方法,它们可以有相同的名字,但必须具有不同的参数,即或者是参数的个数不同,或者是参数的类型不同。调...

陈小哥cw 9977

Java中什么是方法的重载

方法的重载 含义 Java中方法的重载,就是在一个类中,有相同的方法名称,但形参不同的方法。 方法重载的规则 方法名称必须相同 参数列表必须不同(参数个数不同、或参数类型不同、参数排列顺序不同等)。 方法的返回类型可以相同也可以不相同。 仅仅返回类型不同,不足以称为方法的重载。 同一个类中,不允许两个方法的方法名称和参数列表都相同 示例 如下,代码中定义了三个max方法(即方法重载),在...

遇见0和1的博客 1万+

Java语言中方法重载与方法覆盖的异同

Java语言中方法重载与方法覆盖的异同1方法重载与方法覆盖的特点1.1方法重载的特点1.2方法覆盖的特点2方法重载与方法覆盖的异同2.1方法重载与方法覆盖的相同点2.2方法重载与方法覆盖的不同点 JAVA的重载和覆盖是同一回事 导语:在Java语言的学习过程中,初学者经常分不清重载与覆盖,实际上,方法重载(Overload)和方法覆盖(Override,也叫重写)都是Java多态性的体现,只是形式不同,在此,笔者简单地谈—谈两者的异同。下面就由小编为大家介绍一下Java语言中方法重载与方法覆盖的异同,欢迎大

qq_26139541的博客 1609

Java的方法的重载

Java的方法的重载 开发工具与关键技术:工具:myeclipse 技术:overload ,static 作者:吴东梅 撰写时间:2019-05-02 方法用来实现类的行为。在Java语言中,每条指令执行,都是在某个特定方法的上下文中完成的。方法定义在类中,它和类的成员属性(数据成员),一起构建一个完整的类。构成方法有四大要素:返回值类型、方法名称、参数、方法体。修饰符(public pr...

weixin_44547708的博客 1611

Java方法及方法重载的详解

在Java中,如果多个方法的名字相同,参数列表不同,则称该几种方法被重载了

shixiong_的博客 1542

Java为什么要支持方法重载?

,为什么要使用重载?而不是把一个方法名字换成不同的。

JavaEdge全是干货的技术号 2609
上一篇: 【详识JAVA语言】交换两个整型变量
下一篇: 【详识JAVA语言】方法签名
CaojunjiaOnly
博客等级 码龄4年 799粉丝 80原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

CaojunjiaOnly

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

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

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

打赏作者

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

抵扣说明:

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

余额充值