Java基础语法——方法

news2024/11/27 2:47:04

目录

方法概述

方法定义及格式

方法重载 

•方法重载概述

•方法重载特点

 方法中基本数据类型和引用数据类型的传递

方法概述

——假设有一个游戏程序,程序在运行过程中,要不断地发射炮弹(植物大战僵尸)。发射炮弹的动作需要编写100行的代码,在每次实现发射炮弹的地方都需要重复地编写这100行代码,这样程序会变得很臃肿,可读性也非常差。为了解决代码重复编写的问题,可以将发射炮弹的代码提取出来放在一个{}中,并为这段代码起个名字,这样在每次发射炮弹的地方通过这个名字来调用发射炮弹的代码就可以了。上述过程中,所提取出来的代码可以被看作是程序中定义的一个方法,程序在需要发射炮弹时调用该方法即可。

方法定义及格式

        •简单的说:方法就是完成特定功能的代码块

                –在很多语言里面都有函数的定义

                –函数在Java中被称为方法

        •格式:

                –修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2…) {

                                函数体;

                                return 返回值;

                }

方法格式解释

            –修饰符 目前记住 public static

            –返回值类型 用于限定返回值的数据类型(return)

            –方法名 一个名字,为了方便我们调用方法

            –参数类型 用于限定调用方法时传入的数据的类型

            –参数名  用于接收调用方法时传入的数据的变量

            –方法体 完成功能的代码

            –return 结束方法,把返回值带给调用者

方法案例

        •写一个方法首先有两点需要明确

                –返回值类型 明确功能结果的数据类型

                –参数列表 明确有几个参数,以及参数的类型

        •按照格式和两个明确来完成如下功能

                –求两个数据之和的案例

package com.demo01;

import java.util.Scanner;

public class MethodDemo {
	public static void main(String[] args) {
		Scanner Sc = new Scanner(System.in);
		System.out.println("请输入第一个数据:");
		int i = Sc.nextInt();
		System.out.println("请输入第二个数据:");
		int j = Sc.nextInt();
		System.out.println("两个数据之和为:");
		int d = sum(i,j);
		System.out.println(d);
	}
	
	/*
	 * 两个明确
	 * 		返回值类型:int
	 * 		参数列表:int a,int b
	 */
	public static int sum(int a,int b) {
		int c = a + b;
		
		return c;
	}
}

       •有明确返回值的方法调用:

                –单独调用,没有意义

                –输出调用,有意义,但是不够好,因为我不一定非要把结果输出

                –赋值调用,推荐方式  int d = sum(1,2)

有明确返回值的方法练习:

  1. 键盘录入两个数据,返回两个数中的较大值
  2. 键盘录入两个数据,比较两个数是否相等
  3. 键盘录入三个数据,返回三个数中的最大值

练习1:键盘录入两个数据,返回两个数中的较大值

package com.demo01;

import java.util.Scanner;

public class MethodDemo {
	public static void main(String[] args) {
		Scanner Sc = new Scanner(System.in);
		System.out.println("请输入第一个数据:");
		int i = Sc.nextInt();
		System.out.println("请输入第二个数据:");
		int j = Sc.nextInt();
		System.out.println("输出两个数据最大值为:");
		int d = max(i,j);
		System.out.println(d);
	}
	
	/*
	 * 两个明确
	 * 		返回值类型:int
	 * 		参数列表:int a,int b
	 */
	public static int max(int a,int b) {
		if(a>b) {
			int c = a;
			return c;
		}
		else {
			int c = b;
			return c;
		}
		
	}
}

练习2: 键盘录入两个数据,比较两个数是否相等

package com.demo01;

import java.util.Scanner;

public class MethodDemo {
	public static void main(String[] args) {
		Scanner Sc = new Scanner(System.in);
		System.out.println("请输入第一个数据:");
		int i = Sc.nextInt();
		System.out.println("请输入第二个数据:");
		int j = Sc.nextInt();
		System.out.println("输出为:");
		boolean d = bijiao(i,j);
		System.out.println(d);
	}
	
	/*
	 * 两个明确
	 * 		返回值类型:int
	 * 		参数列表:int a,int b
	 */
	public static boolean bijiao(int a,int b) {
		if(a==b) {
			return true;
		}
		else {
			return false;
		}
		
	}
}

练习3: 键盘录入三个数据,返回三个数中的最大值

package com.demo01;

import java.util.Scanner;

public class MethodDemo {
	public static void main(String[] args) {
		Scanner Sc = new Scanner(System.in);
		System.out.println("请输入第一个数据:");
		int i = Sc.nextInt();
		System.out.println("请输入第二个数据:");
		int j = Sc.nextInt();
		System.out.println("请输入第三个数据:");
		int k = Sc.nextInt();
		System.out.println("输出最大值为:");
		int d = getMax(i,j,k);
		System.out.println(d);
	}
	
	/*
	 * 两个明确
	 * 		返回值类型:int
	 * 		参数列表:int a,int b
	 */
	public static int getMax(int a,int b,int c) {
		if(a > b) {
			if(a > c) {
				return a;
			}else {
				return c;
			}
		}else {
			if(b > c) {
				return b;
			}else {
				return c;
			}
		}
	}
}

 没有明确返回值的方法定义和调用

        写一个方法,在控制台输出10次HelloWorld案例。

        没有明确返回值的函数调用:

                –其实就是void类型方法的调用

                –只能单独调用

没有明确返回值的方法练习

  1. 写一个方法,传递一个整数(大于1),在控制台打印1到该数据的值。
  2. 写一个方法,把所有的水仙花数打印在控制台

练习1:写一个方法,传递一个整数(大于1),在控制台打印1到该数据的值。

package com.demo02;

import java.util.Scanner;


public class MethodTest {
	public static void main(String[] args) {
		System.out.println("请输入一个整数:");
		Scanner Sc = new Scanner(System.in);
		int i = Sc.nextInt();

		printNumber(i);
	}
	

	public static void printNumber(int n) {
		for(int x=1; x<=n; x++) {
			System.out.println(x);
		}
	}
}

练习2:写一个方法,把所有的水仙花数打印在控制台

package com.demo02;
public class MethodTest2 {
	public static void main(String[] args) {
			printFlower();
	}
	

	public static void printFlower() {
		for(int x=100; x<=999; x++) {
			int ge = x%10;
			int shi = x/10%10;
			int bai = x/10/10%10;
			
			if((ge*ge*ge+shi*shi*shi+bai*bai*bai) == x) {
				System.out.println(x);
			}
		}
	}
}

方法重载 

方法重载概述

        –在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。

方法重载特点

        –与返回值类型无关,只看方法名和参数列表

        –在调用时,虚拟机通过参数列表的不同来区分同名方法

方法重载练习:比较两个数据是否相等。参数类型分别为两个byte类型,两个short类型,两个int类型,两个long类型,并在main方法中进行测试

package com.demo03;
/*
比较两个数据是否相等。参数类型分别为两个byte类型,两个short类型,两个int类型,两个long类型,并在main方法中进行测试

 */
public class MethodTest {
	public static void main(String[] args) {
		System.out.println(compare(10, 20));
		
		System.out.println(compare((byte)10, (byte)20));
		
		System.out.println(compare((short)10, (short)20));
		
		System.out.println(compare(10L, 20L));
	}
	
	//byte
	public static boolean compare(byte a,byte b) {
		System.out.println("*******************");
		System.out.println("byte");
		return a == b;
	}
	
	//short
	public static boolean compare(short a,short b) {
		System.out.println("*******************");
		System.out.println("short");
		return a == b;
	}
	
	//int
	public static boolean compare(int a,int b) {
		System.out.println("*******************");
		System.out.println("int");
		return a == b;
	}
	
	//long
	public static boolean compare(long a,long b) {
		System.out.println("*******************");
		System.out.println("long");
		return a == b;
	}
}

 方法重载练习:不同浮点型数据类型和整型数据类型求和

package com.demo03;

public class MethodDemo {
	public static void main(String[] args) {
		float c = sum(1.2f,2.3f);
		System.out.println(c);
		int d = sum(1,2,3);
		System.out.println(d);
		int f = sum(1,2);
		System.out.println(f);
	}
	

	
	public static float sum(float a,float b) {
		return a + b;
	}
	

	public static int sum(int a,int b,int c) {
		return a + b + c;
	}
	

	public static int sum(int a,int b) {
	
		return a + b;
	}
}

 方法中基本数据类型和引用数据类型的传递

看程序写结果,并总结基本类型和引用类型参数的传递问题(代码在备注部分)

什么是基本数据类型?像我们简单的int char short等数据类型。

什么是引用数据类型?引用数据类型是传递的地址

形参和实参的理解?形式参数:用于接收实际参数的变量。实际参数:实际参与运算的变量。

package com.demo04;


public class ArgsDemo {
	public static void main(String[] args) {
		int a = 10;
		int b = 20;
		System.out.println("a:"+a+",b:"+b);//a:10,b:20
		change(a,b);
		System.out.println("a:"+a+",b:"+b);//??? a:10,b:20

	}

	public static void change(int a,int b) {//a=10,b=20
		System.out.println("a:"+a+",b:"+b);//a:10,b:20
		a = b;//a=20
		b = a + b;//b=40
		System.out.println("a:"+a+",b:"+b);//a:20,b:40
	}

}

如果参数是引用数据类型——形式参数的改变直接影响实际参数,引用数据类型传递过去的是一个地址。

package com.demo04;

/*
 * 如果参数是引用数据类型
 * 		形式参数的改变,直接会影响实际参数
 */
public class ArgsDemo2 {
	public static void main(String[] args) {
		int[] arr = { 1, 2, 3, 4, 5 };
		for (int x = 0; x < arr.length; x++) {
			System.out.println(arr[x]);
		}
		System.out.println("-------------------------");
		change(arr);
		for (int x = 0; x < arr.length; x++) {
			System.out.println(arr[x]);
		}
	}

	public static void change(int[] arr) {
		for (int x = 0; x < arr.length; x++) {
			if (arr[x] % 2 == 0) {
				arr[x] *= 2;
			}
		}
	}

}

 方法的练习:

  1. 把遍历数组改进为方法实现,并调用方法
  2. 把获取数组最值改进为方法实现,并调用方法
  3. 写一个方法,用于对数组进行求和,并调用方法。

练习1:把遍历数组改进为方法实现,并调用方法

package com.demo05;
/*
 * 把遍历数组改进为方法实现,并调用方法
 */
public class MethodTest {
	public static void main(String[] args) {

		int[] arr = {11,22,33,44,55};
		

		printArray(arr);
	}
	

	
	public static void printArray(int[] arr) {
		System.out.print("[");
		for(int x=0; x<arr.length; x++) {
			if(x==arr.length-1) {
				System.out.println(arr[x]+"]");
			}else {
				System.out.print(arr[x]+", ");
			}
		}
	}
}

练习2: 把获取数组最值改进为方法实现,并调用方法

package com.demo05;
/*
 * 把遍历数组改进为方法实现,并调用方法
 */
public class MethodTest {
	public static void main(String[] args) {

		int[] arr = {11,22,33,44,55};
		

		printArray(arr);
	}
	

	
	public static void printArray(int[] arr) {
		int max = arr[0];
		for(int x=1; x<arr.length; x++) {
			if(max<arr[x]) {
				max = arr[x];
			}
			
		}
		System.out.println(max);
	}
}

练习3:写一个方法,用于对数组进行求和,并调用方法。

package com.demo05;
/*
 * 把遍历数组改进为方法实现,并调用方法
 */
public class MethodTest {
	public static void main(String[] args) {

		int[] arr = {1,2,3,4,5};
		

		printArray(arr);
	}
	

	
	public static void printArray(int[] arr) {
		int sum = 0;
		for(int x=0; x<arr.length; x++) {
			sum += arr[x];
			
		}
		System.out.println(sum);
	}
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/180798.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

五、在测试集上评估图像分类算法精度(Datawhale组队学习)

文章目录配置环境准备图像分类数据集和模型文件测试集图像分类预测结果表格A-测试集图像路径及标注表格B-测试集每张图像的图像分类预测结果&#xff0c;以及各类别置信度可视化测试集中被误判的图像测试集总体准确率评估指标常见评估指标混淆矩阵PR曲线绘制某一类别的PR曲线绘…

密码学的100个基本概念

密码学的100个基本概念一、密码学历史二、密码学基础三、分组密码四、序列密码五、哈希函数六、公钥密码七、数字签名八、密码协议九、密钥管理十、量子密码2022年主要完成了密码学专栏的编写&#xff0c;较为系统的介绍了从传统密码到现代密码&#xff0c;以及量子密码的相关概…

C语言函数声明以及函数原型

C语言代码由上到下依次执行&#xff0c;原则上函数定义要出现在函数调用之前&#xff0c;否则就会报错。但在实际开发中&#xff0c;经常会在函数定义之前使用它们&#xff0c;这个时候就需要提前声明。所谓声明&#xff08;Declaration&#xff09;&#xff0c;就是告诉编译器…

《网络编程实战》学习笔记 Day9

系列文章目录 这是本周期内系列打卡文章的所有文章的目录 《Go 并发数据结构和算法实践》学习笔记 Day 1《Go 并发数据结构和算法实践》学习笔记 Day 2《说透芯片》学习笔记 Day 3《深入浅出计算机组成原理》学习笔记 Day 4《编程高手必学的内存知识》学习笔记 Day 5NUMA内存知…

【论文翻译】Non-local Neural Networks

摘要 卷积运算和循环运算都是每次处理一个局部邻域的构建块。在本文中&#xff0c;我们将非局部操作作为一组用于捕获长期依赖关系的构建块。受计算机视觉中经典的非局部均值方法[4]的启发&#xff0c;我们的非局部运算将一个位置的响应计算为所有位置特征的加权和。这个构建块…

「自控原理」5.2 频域稳定判据、频域分析

本节介绍奈奎斯特稳定判据、对数稳定判据&#xff0c;并引入稳定裕度 本节介绍频率特性法分析系统性能 本节介绍通过开环频率特性得到闭环频率特性的方法 文章目录频域稳定判据奈奎斯特稳定判据ZP−2NZP-2NZP−2N奈奎斯特稳定判据的推导对数稳定判据容易判断出错的情况临界稳定…

第九层(4):STL之duque类

文章目录前情回顾deque类deque类的功能deque和vector的区别deque容器的内部图deque类内的构造函数deque类内的赋值操作deque类内的大小操作deque类内的插入操作deque类内的删除操作deque类内的单个访问下一座石碑&#x1f389;welcome&#x1f389; ✒️博主介绍&#xff1a;一…

设计模式 - 创建型模式_原型模式

文章目录创建型模式概述Case场景模拟⼯程Bad ImplBetter Impl &#xff08;原型模式重构代码&#xff09;创建型模式 创建型模式提供创建对象的机制&#xff0c; 能够提升已有代码的灵活性和可复⽤性。 类型实现要点工厂方法定义⼀个创建对象的接⼝&#xff0c;让其⼦类⾃⼰决…

AcWing蓝桥杯AB组辅导课08、数论

文章目录前言一、数论例题例题1&#xff1a;AcWing 1246. 等差数列&#xff08;最大公约数&#xff0c;第十届蓝桥杯省赛CB第7题&#xff09;分析题解&#xff1a;最大公约数例题2&#xff1a;AcWing 1295. X的因子链&#xff08;算数基本定理、欧拉筛选&#xff0c;多重集合排…

打工人必知必会(四)——股票期权属于劳动争议吗

目录 参考 一、核心概览 二、 注意 三、更多案例 参考 案例评析:股票期权纠纷是否属于劳动争议 股票期权&#xff08;限制性股票&#xff09;相关劳动争议问题 北上广深杭案例 一、核心概览 二、 注意 结合双方股权激励协议的签署背景、目的等因素来综合考量并作出相对准…

【数据结构】8.1 排序概述

文章目录排序的基本概念排序方法的分类存储结构排序的基本概念 什么是排序&#xff1f; 排序&#xff1a;将一组杂乱无章的数据按照一定规律顺次排列起来。 即&#xff0c;讲无序序列排成一个有序序列&#xff08;有小到大或由大到小&#xff09;的运算。 如果参加排序的数据…

MicroPython开发ESP8266——环境搭建

MicroPython开发ESP8266——环境搭建0.前言一、固件烧写1.使用乐鑫官方的烧写工具2.使用python中的esptool工具烧写3.使用uPyCraft烧写4.测试二、IDE工具安装1.windows环境搭建2.Linux环境搭建3.测试1&#xff09;软件设置2&#xff09;测试程序3&#xff09;烧录0.前言 最近刷…

NLP 语种检测 API 数据接口

NLP 语种检测 API 数据接口 180 语言检测&#xff0c;语种全称与缩写&#xff0c;返回置信度。 1. 产品功能 基于 NLP 分析文本的语种支持 180 多语种检测&#xff1b;语种缩写遵循 ISO 639-1 标准&#xff1b;包含检测到的语种置信度&#xff1b;毫秒级响应性能&#xff1b;…

Java 代码ccflow 代码分析

流程属性目录概述需求&#xff1a;设计思路实现思路分析1。代码流程参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;skip hardness,make a better result,wait for change,challenge Survive. ha…

Linux中详解编译原理每一步

引言&#xff1a; 时间过的飞快&#xff0c;可以看出我们已经开始学习Linux了&#xff0c;但是我们学习Linux过程中&#xff0c;依然会涉及到很多的以前的知识&#xff0c;比如编译原理&#xff0c;我们的代码如何从一个源文件逐步变成一个可执行文件&#xff0c;当初我记得我…

流批一体计算引擎-8-[Flink]的Table API连接器

参考官方文档Table API连接器 1 Table API连接器概述 Flink的Table API和SQL程序可以连接到其他外部系统&#xff0c;用于读取和写入批处理表和流式表。source表提供对存储在外部系统&#xff08;如数据库、键值存储、消息队列或文件系统&#xff09;中的数据的访问。sink表将…

Sentienl学习笔记

PS&#xff1a;本文为作者学习黑马程序员Springcould视频笔记实际技术参考价值不大&#xff0c;文章将持续更新。 文章目录一. 什么是Sentienl1. 介绍2. 与Hystrix对比3. 主要特性二. Sentienl安装配置1. 下载安装包2. 启动三. Sentienl的使用1. Sentienl的整合2. 簇点链路四. …

每日学术速递1.27

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 前沿推介&#xff1a; ICLR 2023 ICLR 全称为国际学习表征会议&#xff08;International Conference on Learning Representations&#xff09;&#xff0c;今年将举办的是第 11 届&#xff0c;预计将于 5 月 1 日至 5 …

Redis实现附近商铺 | 黑马点评

一、GEO数据结构 1、入门 GEO是Geolocation的缩写&#xff0c;代表地理坐标。redis3.2中加入对GEO的支持&#xff0c;允许存储地理坐标信息&#xff0c;帮助我们根据经纬度来检索数据。 常见命令&#xff1a; GEOADD&#xff1a;添加一个地理空间信息&#xff0c;包含&…

springcloud3 Sentinel的服务熔断操作

一 服务熔断 1.1 服务熔断 Sentinel熔断降级会在调用链路中某个资源出现不稳定状态时&#xff08;调用超时或者异常比例升高&#xff09;&#xff0c;对这个资源的调用进行限制&#xff0c;让请求快速失败&#xff0c;避免影响到其他资源进而导致级联错误。 当资源被降级后&…