Java 方法的重载及引用数据类型(类)
方法的重载
我们假设要在程序中实现一个对数字求和的方法,由于参与求和数字的个数和类型都不确定,因此要针对不同的情况去设计不同的方法。
Java允许在一个类中定义多个名称相同的方法,但是参数的类型或个数必须不同,这就是方法的重载。
下面的三个方法互为重载关系
l public static int add(int x,int y) {逻辑} //两个整数加法
l public static int add(int x,int y,int z) {逻辑} //三个整数加法
l public static int add(double x,double y) {逻辑} //两个小数加法
public class MethodDemo03 {
public static void main(String[] args) {
// 下面是针对求和方法的调用
int sum1 = add(, );
int sum2 = add(, , );
double sum3 = add(1.2, 2.3);
// 下面的代码是打印求和的结果
System.out.println("sum1=" + sum1);
System.out.println("sum2=" + sum2);
System.out.println("sum3=" + sum3);
} // 下面的方法实现了两个整数相加
public static int add(int x, int y) {
return x + y;
}
// 下面的方法实现了三个整数相加
public static int add(int x, int y, int z) {
return x + y + z;
}
// 下面的方法实现了两个小数相加
public static double add(double x, double y) {
return x + y;
}
}
运行结果:
上述代码中定义了三个同名的add()方法,它们的参数个数或类型不同,从而形成了方法的重载。
在main()方法中调用add()方法时,通过传入不同的参数便可以确定调用哪个重载的方法,如add(1,2)调用的是两个整数求和的方法。
值得注意的是,方法的重载与返回值类型无关,它只有两个条件,一是方法名相同,二是参数个数或参数类型不相同。
重载的注意事项
重载方法参数必须不同:
参数个数不同,如method(int x)与method(int x,int y)不同
参数类型不同,如method(int x)与method(double x)不同g
参数顺序不同,如method(int x,double y)与method(double x,int y)不同
重载只与方法名与参数类型相关与返回值无关
如void method(int x)与int method(int y)不是方法重载,不能同时存在
重载与具体的变量标识符无关
如method(int x)与method(int y)不是方法重载,不能同时存在
参数传递
在这里,定义方法时,参数列表中的变量,我们称为形式参数 调用方法时,传入给方法的数值,我们称为实际参数
public class ArgumentsDemo01 {
public static void main(String[] args) {
int a=5;
int b=10;
change(a, b);//调用方法时,传入的数值称为实际参数
System.out.println("a=" + a);
System.out.println("b=" + b);
} public static void change(int a, int b){//方法中指定的多个参数称为形式参数
a=200;
b=500;
}
}
运行结果
另一段代码:
public class ArgumentsDemo02 {
public static void main(String[] args) {
int[] arr = { 1, 2, 3 };
change(arr);// 调用方法时,传入的数值称为实际参数 for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
} public static void change(int[] arr) {// 方法中指定的多个参数称为形式参数
for (int i = 0; i < arr.length; i++) {
arr[i] *= 2;
}
}
}
运行结果
参数传递图解与结论
当调用方法时,如果传入的数值为基本数据类型(包含String类型),形式参数的改变对实际参数不影响
当调用方法时,如果传入的数值为引用数据类型(String类型除外),形式参数的改变对实际参数有影响
引用数据类型分类
第一种,Java为我们提供好的类,如Scanner类,Random类等,这些已存在的类中包含了很多的方法与属性,可供我们使用。
第二种,我们自己创建的类,按照类的定义标准,可以在类中包含多个方法与属性,来供我们使用。
自定义数据类型概述
我们在Java中,将现实生活中的事物抽象成了代码。这时,我们可以使用自定义的数据类型(类)来描述(映射)现实生活中的事物。
类,它是引用数据类型,与之前学习的所有引用数据类型相同,自定义类也是一种数据类型。
只是自定义类型并非Java为我们预先提供好的类型,而是我们自己定义的一种引用数据类型用来描述一个事物。
类的定义格式
创建java文件,与类名相同
public class 类名{
数据类型 属性名称1;
数据类型 属性名称2;
…
}
例:
public class Phone {
/*
* 属性
*/
String brand;// 品牌型号
String color;// 颜色
double size; // 尺寸大小
}
类的使用格式
Phone类定义好后,我们就可以使用这个类了,使用方式和使用引用数据类型Scanner类相似。格式如下:
导包:我们将所有的类放到同一个文件夹下,可以避免导包。
创建对象:数据类型 变量名 = new 数据类型();
调用方法:目前我们定义的自定义类不涉及方法,只是属性(自定义类中的方法部分在面向对象部分讲解)
访问属性:变量名.属性 (这是当前的方式,后期会采取调用方法的方式替代掉直接访问的方式来完成对属性的访问。)
Java 方法的重载及引用数据类型(类)的更多相关文章
- java方法的重载
java方法的重载 public class Person1 { private String name; //姓名 private int age; //年龄 priva ...
- Java方法之重载
Java方法之重载 本篇探究Java中的方法重载.那么,什么是重载呢?先上一串代码: package com.my.pac06; /** * @author Summerday * @date 201 ...
- 068 01 Android 零基础入门 01 Java基础语法 08 Java方法 06 参数传递问题——基本数据类型传值
068 01 Android 零基础入门 01 Java基础语法 08 Java方法 06 参数传递问题--基本数据类型传值 本文知识点:参数传递问题--基本数据类型传值 说明:因为时间紧张,本人写博 ...
- JAVA方法的重载(overload)和覆盖(override)
方法的重载(overload)和覆盖(override) 有的时候,类的同一种功能有多种实现方式,到底采用哪种实现方式,取决于调用者给定的参数.例如我们最常用的System.out.println() ...
- java 方法参数-值调用,引用调用问题
(博客内容来自于core java卷一) 1. xx调用:程序设计语言中方法参数的传递方式: 引用调用(call by reference):表示方法接收的是调用者提供的变量地址. 值调用(call ...
- java 方法的重载
方法的重载:一个类中允许出现一个以上的同名方法,必须保证同名方法的参数列表不同 好处:方便阅读,优化程序设计 重载规则:重载方法名相同,但每个重载方法都必须有一个独一无二的参数类型列表,方 ...
- Java方法的重载和重写
重载与重写对比: 重载: 权限修饰符(public private 默认):无关 方法名:重载的两个方法的方法名必须相同 形参的个数不同 形参的类型不同 三者至少满足一个 返回值类型: 重载与返回值 ...
- java方法重写规则 重载
方法的重写规则 参数列表必须完全与被重写方法的相同: 返回类型必须完全与被重写方法的返回类型相同: 访问权限不能比父类中被重写的方法的访问权限更低.例如:如果父类的一个方法被声明为public,那么在 ...
- 详解java方法的重载
1.方法的重载: 方法名相同,参数列表不同就叫做方法的重载.
随机推荐
- Java应用服务器之tomcat部署
一.相关术语简介 首先我们来了解下tomcat是什么,tomcat是apache软件基金会中的一个项目,由apache.Sun 和其他一些公司及个人共同开发而成.主要作用是提供servlet和jsp类 ...
- C#/VB.NET 在Word中添加条码、二维码
本文介绍如何通过C# 和VB.NET代码实现在Word文档中添加条码和二维码.代码中将分为在Word正文段落中.页眉页脚中等情况来添加. 使用工具:Free Spire.Office for .NET ...
- [Qt插件]-02创建应用程序插件(插件化开发的一种思路)
本篇是学习Qt Creator快速入门,插件开发的笔记 分为两部分 创建插件 使用插件的应用程序(测试插件) 插件是被使用的应用程序加载使用的. 是使用插件的应用程序定义接口,插件按照接口来实 ...
- Python Ethical Hacking - Malware Analysis(3)
Stealing WiFi Password Saved on a Computer #!/usr/bin/env python import smtplib import subprocess im ...
- 004.Nginx日志配置及状态监控
一 Nginx请求简介 1.1 请求头部 对于HTTP而言,客户端负责发起request请求,服务端负责response响应. request:包括请求行.请求头部.请求数据: response:包括 ...
- OFDM通信系统的MATLAB仿真(2)
关于OFDM系统的MATLAB仿真实现的第二篇随笔,在第一篇中,我们讨论的是信号经过AWGN信道的情况,只用添加固定噪声功率的高斯白噪声就好了.但在实际无线信道中,信道干扰常常是加性噪声.多径衰落的结 ...
- 自动化不知如何参数化?xlrd来帮你解决
平时在做自动化测试的时候,一直都是要求数据与业务逻辑分离.把测试数据都写在业务里面的话,比较混杂.为了方便管理测试数据,所以引入了python的一个扩展库--xlrd.该库使用简单,能满足自动化测试的 ...
- MySQL中change与modify的用法与区别
浅析MySQL中change与modify的区别 MySQL版本 show variables like 'version'; 表结构 desc student; 修改表 例如:修改表studen ...
- 搭建vue项目的步骤
新建vue脚手架 vue-element-cms步骤: 1. vue create ……………(文件名)---这里取为vue-element-cms 2. 命令行工具进入这个文件夹,安装路由依赖包 n ...
- 第十章 函数式接口&Stream流
10.1.函数式接口 10.1.1.概述 有且仅有一个抽象方法的接口,并且可以通过在类上标注@FunctionalInterface注解进行检测,建议自定义的函数式接口都加上这个注解 10.1.2.函 ...