写点什么

强哥说 Java--Java 方法,kafka 视频

用户头像
极客good
关注
发布于: 刚刚

return str;


}


public static void main(String[] args) {


// 实例化 MethodDemo2


MethodDemo2 methodDemo2 = new MethodDemo2();


// 调用 getStr 方法,并且使用 result 变量接收返回值


String result = methodDemo2.getHelloStr();


// 打印返回值


System.out.println(result);


}


}


运行结果:


Hello World

[](

)3.3 带参数无返回值方法


带参数无返回值方法,即带有参数列表,返回值为void的方法。


参数列表可能有一个或多个参数,多个参数使用逗号(,)隔开。定义方式为:DataType 参数名1, DataType 参数名2,DateType 为参数的类型。


下面是一个根据长和宽求长方形面积的方法实例:


实例演示


package com.caq.method;


public class TestDemo {


public static void main(String[] args) {


TestDemo test = new TestDemo();


test.pristr(1.22f,3.8f);


}


public void pristr(floa


【一线大厂Java面试题解析+核心总结学习笔记+最新架构讲解视频+实战项目源码讲义】
浏览器打开:qq.cn.hn/FTf 免费领取
复制代码


t width, float height){


float cube = width * height;


System.out.println(cube);


}


}


运行结果:


长方形面积为:246.0


长方形面积为:25.5

[](

)3.3.1 传参方式


在调用带参数方法时,有两种传参方式:


  1. 先初始化变量,再将变量传递给方法:


float a = 12.3f;


float b = 20f;


methodDemo3.printArea(a, b);


  1. 直接传入对应类型字面量:


methodDemo3.printArea(10.2f, 2.5f);


当调用方把参数传递给方法时,调用时传递的值会按参数位置一一绑定,这也比较符合我们正常的思维逻辑。因此,对于有多个参数的方法,一定要注意每个参数的位置。

[](

)3.4 带参数带返回值方法


package com.caq.method;public class TestDemo { public static void main(String[] args) { TestDemo test = new TestDemo(); int a = test.pristr(5); System.out.println(a); } public int pristr(int n){ int sum = 0; for (int i = 0; i < n; i++) { sum += i*i; } return sum; }}


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0Pyl12oT-1629443164261)(E:\Typora\Image\image-20210817173421155.png)]


上面有参方法的例子,参数都是简单的基本数据类型,当参数为数组时,我们再来看一个实例:


package com.caq.method;import com.caq.exception.Test;public class TestDemo { public boolean meetArray(int[] a,int element) { boolean b = false; for (int v : a) { if (v == element) { b = true; break; } } return b; } public static void main(String[] args) { TestDemo testDemo = new TestDemo(); int[] intArray = {1,2,3,7,5}; int element = 5; boolean meetArray = testDemo.meetArray(intArray,element); System.out.println(meetArray); }}


代码解析:


上述代码定义了一个查找数组中是否包含指定元素的方法,它将数组指定元素作为方法参数,并且返回了一个布尔型的结果,方法体内部首先声明了一个待返回的布尔变量,默认为false,然后对数组参数进行迭代,只要找到与元素参数相同的元素,即更新返回变量为true,跳出循环;如果数组迭代完成后依旧未找到指定的元素,那么待返回变量依然是false,最后返回这个变量。在方法调用时,以一个布尔变量来接收结果,后续代码根据这个布尔变量做了逻辑判断,以执行不同的语句块。


[](


)4. 方法传值




调用方和方法之间有参数的传递时,要注意方法传值问题。

[](

)4.1 基本类型的传值


基本数据类型指的是简单的数据段,引用数据类型指的是有多个值构成的对象。


基本类型参数的传递,是调用方值的复制。双方各自的后续修改,互不影响。简单来讲,方法内部对参数变量的任何操作,都不会影响到方法外部的变量。


我们看一个实例:


实例演示


class Car { public void speedUp(int speed) { System.out.println("小汽车加速前,速度为:" + speed); speed ++; System.out.println("小汽车加速后,速度为:" + speed); } public static void main(String[] args) { // 定义小汽车初始速度变量 int speed = 10; // 实例化 Car 类,创建一个 car 对象 Car car = new Car(); // 调用 car 对象下的 speed 方法 car.speedUp(speed); // 打印调用方法后速度参数的值 System.out.println("调用 speedUp 方法后,调用方的 speed 参数为:" + speed); }}


运行结果:


小汽车加速前,速度为:10 小汽车加速后,速度为:11 调用 speedUp 方法后,调用方的 speed 参数为:10 代码块 123


我们根据输出的结果验证了以上给出的结论。整型参数speed是一个基本数据类型,在speedUp方法内部进行了自增,但主方法中的speed变量的值并不会受到其影响。

[](

)4.2 引用类型的传值


引用类型参数的传递,调用方的变量,和接收方的参数变量,地址指向的是同一个对象。双方任意一方对这个对象的修改,都会影响对方。


我们来看一个实例:


实例演示


package com.caq.method;//引用类型的传值 public class TestDemo { //定义一个代替球员的方法,并传入字符串类的数组和字符串 Playname public void replacePlays(String[] temas, String Playame) { temas[0] = Playame; } public static void main(String[] args) { System.out.println("引用前:"); String[] teams = {"康熙", "雍正", "乾隆"}; for (String test : teams) { System.out.println(test); } TestDemo plays = new TestDemo(); plays.replacePlays(teams, "张三"); System.out.println("引用后:"); for (String test2 : teams) { System.out.println(test2); } }}


运行结果:


引用前:康熙雍正乾隆引用后:张三雍正乾隆


由运行结果可见:方法replaceFirstPlayer的参数players是数组类型,也就是引用类型。当我们在方法内部对players进行操作,其方法外部(即主方法中)的players变量也受到了影响。不只是数组,对象也是引用类型,其参数传递同样遵循以上结论。我们在日常的编码中,请注意区分基本类型和引用类型的方法传值区别。


[](


)5. 可变参数




我们可以使用可变参数列表声明方法的参数。可变参数列表的语法:


参数类型... 参数名


我们可以结合可变参数来实现一个求和方法sum,请阅读下面实例:


实例演示


package com.caq.method;//可变参数 public class TestDemo { public void TestDemo(int... n) { int sum = 0; for (int i : n) { sum += i; } System.out.println(sum); } public static void main(String[] args) { TestDemo test = new TestDemo(); test.TestDemo(1); test.TestDemo(22,33); test.TestDemo(1,2,3,4,5); }}


运行结果:


15515


上述实例中,在主方法中给sum方法传参时,可选择一个或多个参数传递。方法体内对可变参数n进行迭代,也可以将可变参数n改为数组:int[] n,得到的效果是相同的。


当方法的参数列表有两个或两个以上参数时,可变参数一定要放在最后,请查看如下实例:


public void search(int element, int... elements) { boolean existed = false; for (int e: elements) { if (e == element) { existed = true; break; } } if (existed) { System.out.println("找到元素:" + element); } else { System.out.println("未找到元素:" + element); }}


另外,也可以将数组传递给可变参数列表,例如,在主方法中调用上面的search方法:


实例演示


public class VariableParameter1 { public void search(int element, int... elements) { boolean existed = false; for (int e: elements) { if (e == element) { existed = true; break; } } if (existed) { System.out.println("找到元素:" + element); } else { System.out.println("未找到元素:" + element); } } public static void main(String[] args) { // 创建对象 VariableParameter1 obj = new VariableParameter1(); // 调用方法 obj.search(2, 1,2,3,4); // 定义数组参数 int[] arr = {1,2,3,4}; // 将数组传递给可变参数列表 obj.search(2, arr); }}


运行结果:


找到元素:2 找到元素:2


上述两种传参方式都是合法的。


[](


)6. 方法重载




方法重载是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数的类型或参数的个数。


方法重载通常用于创建完成一组任务相似但参数的类型或参数的个数或参数的顺序不同的方法。


免去取名字的烦恼

[](

)6.1 自定义方法的重载


例如,在Student类中,有多个study方法:


实例演示


public class Student { public void study() { System.out.println("同学真好学!"); } public void study(String name) { System.out.println(name + "同学真好学!"); } public void study(String name, int age) { System.out.println(name + "同学真好学!" + "他今年" + age + "岁了"); } public static void main(String[] args) { // 实例化学生对象 Student student = new Student(); // 调用无参数方法 student.study(); // 调用单参数方法 student.study("Colorful"); // 调用双参数方法 student.study("小蔡", 20); }}


运行结果:


同学真好学!Colorful 同学真好学!小蔡同学真好学!他今年 20 岁了


代码中的三个study都是重载方法。通常来说,方法重载的返回值类型都是相同的。


如果我们在Student类中再增加一个方法:


public String study() { return "学习 Java 语言";}


注意,上述的方法不是重载方法,因为我们已经在Student类中定义了无参方法study


判断一个方法是否是重载方法的原则:方法名相同,参数类型或参数个数不同。

[](

)6.2 JDK 中的方法重载


Java语言本身的类也定义了很多方法重载的例子,例如String类的substring方法,用于字符串截取:

用户头像

极客good

关注

还未添加个人签名 2021.03.18 加入

还未添加个人简介

评论

发布
暂无评论
强哥说Java--Java 方法,kafka视频