本贴为持续更新贴!内容附带大量图文和练习,供大家学习时参考。本贴主要内容为方法及更多知识,希望大家阅读后能有不少的了解。更多资料请练习:
码牛云课堂Java技术指导霸牛老师(微信):mnykt8080;
码牛云Java技术交流QQ群:1142264605;
方法:具有特定逻辑的一段代码。
作用:提高代码的复用性。
定义格式:
public static void 方法名 ( ) {
// 方法体;
}
调用格式:
方法名();
注意:
package com.mnyketang;
/*
无参数无返回值的方法练习
定义一个方法判断一个数是否是偶数
*/
public class Demo02 {
public static void main(String[] args) {
//调用方法
isEvenNumber();
}
//定义一个方法判断一个数是否是偶数
public static void isEvenNumber() {
int num = 16;
//判断num是否是偶数
if (num % 2 == 0) {
System.out.println(num + "是偶数");
} else {
System.out.println(num + "不是偶数");
}
}
}
定义格式:
public static void 方法名 (参数1) {
方法体;
}
public static void 方法名 (参数1, 参数2, 参数3...) {
方法体;
}
注意:
参数:和之前定义变量一样,数据类型 参数名
方法定义时,参数中的数据类型与变量名都不能缺少,缺少任意一个程序将报错.
方法定义时,多个参数之间使用逗号( ,)分隔
调用格式:
方法名(参数);
方法名(参数1,参数2);
注意:
方法调用时,参数的数量与类型必须与方法定义中的设置相匹配,否则程序将报错
package com.mnyketang;
public class Demo02 {
public static void main(String[] args) {
//调用方法
isEvenNumber(16);
}
//定义一个方法判断一个数是否是偶数
public static void isEvenNumber(int a) {
// int num = 16;
//判断num是否是偶数
if (a % 2 == 0) {
System.out.println(a + "是偶数");
} else {
System.out.println(a + "不是偶数");
}
}
}
形参:方法定义中的参数。
实参:方法调用时传递的参数。
需求:设计一个方法用于打印两个数中的较大数,数据来自于方法参数
思路:
1.定义一个方法,用于打印两个整数中的较大数
2.为了扩展 性,可以将要比较的两个数定义为方法形参。
3.使用if第二种格式对两个数大小进行判断。
4.在main()方法中调用方法并传递实际参数。
代码:
package com.mnyketang;
/*
需求:设计一个方法用于打印两个数中的较大数,数据来自于方法参数
思路:
1.定义一个方法,用于打印两个整数中的较大数
2.为了扩展 性,可以将要比较的两个数定义为方法形参。
3.使用if第二种格式对两个数大小进行判断。
4.在main()方法中调用方法并传递实际参数。
*/
public class Demo03 {
public static void main(String[] args) {
printMax(7, 8);
}
public static void printMax(int a, int b) {
if (a > b) {
System.out.println("最大值为" + a);
} else {
System.out.println("最大值为" + b);
}
}
}
定义格式
public static 数据类型 方法名 (参数列表) {
return 数据;
}
注意:
方法定义时return后面的返回值与方法定义上的数据类型要匹配,否则程序将报错
调用格式
方法名 (参数);
数据类型 变量名 = 方法名 ( 参数 ) ;
注意:
方法的返回值通常会使用变量接收,否则该返回值将无意义
需求:设计一个方法可以获取两个数之和
代码:
package com.mnyketang;
/*
带返回值方法定义和调用
定义格式
public static 数据类型 方法名 (参数列表) {
return 数据;
}
调用格式
方法名 (参数);
数据类型 变量名 = 方法名 ( 参数 ) ;
*/
public class Demo04 {
public static void main(String[] args) {
//1.常用调用方式
int result = getSum(10,20);
System.out.println(result);
//2.打印调用
System.out.println(getSum(10,20));
//3.有返回值的方法,直接调用没有意义
//getSum(100,200);
}
/*
定义方法,获取两个int数据之和
三要素:
1.方法名称: getSum
2.参数列表: int a,int b
3.返回值类型: int
*/
public static int getSum(int a, int b) {
int sum = a + b;
return sum;//这的return两个作用:返回数据给方法调用者并且结束方法的执行
}
}
方法不能嵌套定义
示例代码:
public class Demo05 {
public static void main(String[] args) {
}
public static void a() {
public static void b() {
//报错
}
}
}
void表示无返回值,可以省略return,也可以单独的书写return,后面不加数据
示例代码:
public class Demo06 {
public static void main(String[] args) {
}
public static void c() {
return;//在没有返回值的方法中也可以使用return语句,此时return语句就仅仅是结束方法的执行。
//System.out.println(1); return语句后面不能有代码
}
}
格式:
修饰符 返回值类型 方法名(参数) {
方法体;
return 数据 ;
}
定义方法时,要做到两个明确
明确返回值类型:主要是明确方法操作完毕之后是否有数据返回,如果没有,写void;如果有,写对应的数据类型
明确参数:主要是明确参数的类型和数量
方法重载概念
方法重载:指的是在同一个类中,方法名相同,参数列表不同(参数数据类型不同、个数不同、顺序不同),和返
回值和修饰符无关的方法。
范例:
package com.mnyketang;
public class Demo07 {
public static void main(String[] args) {
}
public static void a(int a) {
//方法体
}
public static void a(int a , int b) {
//方法体
}
public static void a(int a , double b) {
//方法体
}
public static void a(double a , int b) {
//方法体
}
}
需求:使用方法重载的思想,设计返回两个整数、小数、short类型数据的最大值。
思路:
1.定义一个方法,方法名为getSum
2.定义重载方法,参数分别为int类型、double类型、short 类型
3.调用方法
代码:
package com.mnyketang;
/*
需求:使用方法重载的思想,设计返回两个整数、小数、short类型数据的最大值。
思路:
1.定义一个方法,方法名为getSum
2.定义重载方法,参数分别为int类型、double类型、short 类型
3.调用方法
*/
public class Demo06 {
public static void main(String[] args) {
System.out.println(getInt(1, 2));
System.out.println(getDouble(1.0, 2.0));
System.out.println(getShort((short) 10, (short) 20));
}
//获取两个整数最大值
public static int getInt(int a,int b){
if(a > b){
return a;
}else {
return b;
}
}
//获取两个小数最大值
public static double getDouble(double a,double b){
if(a > b){
return a;
}else {
return b;
}
}
//获取两个short数据最大值
public static short getShort(short a,short b){
if(a > b){
return a;
}else {
return b;
}
}
}
测试代码:
package com.mnyketang;
public class Demo08 {
public static void main(String[] args) {
int a = 100;
System.out.println("调用方法前:" + a);
update(a);
System.out.println("调用方法后:" + a);
}
private static void update(int a) {
a += 200;
}
}
结论:
基本数据类型的参数,形式参数的改变,不影响实际参数
原理:
每个方法都会有独立的栈空间,局部变量存放在各自的占空间当中。
代码:
package com.mnyketang;
public class Demo09 {
public static void main(String[] args) {
int[] arr = {1, 2, 3};
System.out.println("调用方法前:" + arr[0]);
update(arr);
System.out.println("调用方法后:" + arr[0]);
}
public static void update(int[] arr) {
arr[0] = 100;
}
}
结论:
对于引用类型的参数,形式参数的改变,影响实际参数的值
原理:
引用类型变量保存的是地址值,当做参数传递时,传递的是地址值,在方法中通过地址值操作数组后,在访问就是修改后的值
需求:设计一个方法用于数组遍历,要求遍历的结果是在一行上的。例如:[100, 200, 300, 400,500]
思路:
1.静态初始化一个数组,元素为100 200 300 400 500
2.定义一个方法,对数组进行遍历,并按照要求进行打印
3.调用方法
代码:
package com.mnyketang;
public class Demo10 {
public static void main(String[] args) {
//1.静态初始化一个数组,元素为100 200 300 400 500
int[] arr = {100,200,300,400,500};
//调用方法
printArray(arr);
}
//定义一个方法,对数组进行遍历
/*
两个明确:
返回值类型:void
参数:int[] 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.print(arr[x]);
} else {
System.out.print(arr[x]+", ");
}
}
System.out.println("]");
}
}
需求:设计一个方法用于获取数组中元素的最大值
思路:
1.静态初始化一个数组。
2.定义一个方法,获取数组中的最大值。
3.调用方法
4.输出最大值
代码:
package com.mnyketang;
public class Demo11 {
public static void main(String[] args) {
//1.静态初始化一个数组。
int[] arr = {25, 68, 785, 71, 45};
//3.调用方法
int max = getMax(arr);
//4.输出最大值
System.out.println(max);
}
//2.定义一个方法,获取数组中的最大值。
/*
两个明确:
返回值类型:int
参数:int[] arr
*/
public static int getMax(int[] arr) {
int max = arr[0];
for(int x=1; x<arr.length; x++) {
if(arr[x] > max) {
max = arr[x];
}
}
return max;
}
}
是供程序员使用的程序调试工具,它可以用于查看程序的执行流程,也可以用于追踪程序执行过程来调试程序。
如何加断点
debug运行程序
控制台及debug窗口
点哪里
上边从左往右按钮依次为:
F8:执行下一行代码
F7:执行下一行遇到方法调用进入方法中
绿色小三角是运行下一个断点
红色正方形结束debug模式
如何删除断点
选择要删除的断点,单击鼠标左键即可