小白日记之java方法(java复习)

java中的方法分为四个类型,分别是无参无返回值,无参有返回值,有参无返回值,有参有返回值。

怎么看需不需要参数,在我们的最终结果需要被影响,而不是一成不变的情况,就需要我们给一个参数。

怎么看需不需要返回值,得看我们期待的结果需不需要参与后续的代码,如果我们需要返回的结果参与后续的代码,那么我们就可以设置返回值,否则就不需要。

方法的重载看的是参数一不一样,方法名相同,参数不一样就是重载。返回值一不一样不影响这个方法是不是重载。

基本数据类型在被定义的时候是在内存中开辟了一个空间,比如我们定义了一个int类型的数据叫做m,在我们调用方法并使用某一个变量的时候,并没有改变这个内存中的值,仅仅只是把这个变量m的值拿去用了而已。在方法的参数中,并没有传输m的地址,只是传输了m的值,所以在主方法中定义的m的数值并没有发生改变。

public class ExChangeDemo {

public void swap(int a,int b) {

int temp;

System.out.println("交换前a的值为"+a+"b的值为"+b);

temp = a;a = b;b = temp;

System.out.println("交换过后的a的值为:"+a+"b的值为"+b);

}

public static void main(String\[\] args) {

int m=4,n=5;

ExChangeDemo ed = new ExChangeDemo();

System.out.println("交换前:m="+m+",n="+n);

ed.swap(m, n);

System.out.println("交换后:m="+m+",n="+n);

}

交换前:m=4,n=5

交换前a的值为4b的值为5

交换过后的a的值为:5b的值为4

交换后:m=4,n=5

我们可以看到,主方法中的m和n并没有任何变化,有变化的是其他方法中的a和b。

在同一个类中,如果你想在主方法以外的地方调用某一个方法,可以直接写出方法名来进行调用,不用非要用对象来调用方法。

如果是数组进行传值,则大为不同,因为数组是在空间中开辟出了一个空间,数组的下标指向的是这一块内存,所以数组在作为参数的过程中,会被改变自己在主方法中定义好的数值。主方法和一个类中的其他方法中的数组,指向的是同一片内存。

public class ArrayDemo2 {

public void updateArray(int\[\] a) {

a3 = 15;

System.out.println("数组的元素为:");

for(int n:a) {

System.out.print(n+" ");

}

System.out.println();

}

public static void main(String\[\] args) {

ArrayDemo2 ad = new ArrayDemo2();

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

System.out.println("方法调用前为:");

for(int n:a1) {

System.out.print(n+" ");

}

System.out.println();

ad.updateArray(a1);

System.out.println("方法调用后为:");

for(int n:a1) {

System.out.print(n+" ");

}

System.out.println();

}

方法调用前为:

1 2 3 4 5

数组的元素为:

1 2 3 15 5

方法调用后为:

1 2 3 15 5

引用数据类型和基础数据类型不一样,引用的数据类型会产生影响,基础数据类型仅仅只是进行了值的传递,没有影响内存中存储着的基础数据类型本身,我们在主方法中定义出的基础数据类型,所指向的那一块内存,没有发生任何改变。

可变参数列表跟数组很像,都可以使用增强型for循环。并且还可以在可变参数列表作为参数的情况下,使用数组进行传值,但是反之不行,不能将可变参数列表放入到参数类型是数组的方法中。

另外在方法的重载中,如果你的其中一个方法的重载使用的参数是可变参数列表,那么在参数可以代入两个参数不一样的方法中的时候(比如一个方法参数是inta,intb。另外一个是int...a。我带代入的是1,2。明显;两个方法都可以代入),参数为可变参数列表的方法是最后执行的。

public class ArgsDemo3 {

public void plus(int a,int b) {

System.out.println("不带可变参数的方法");

}

public void plus(int... a) {

System.out.println("带可变参数的方法");

}

public static void main(String\[\] args) {

ArgsDemo3 demo = new ArgsDemo3();

int a=1,b=2;

demo.plus(1,2);

}

结果的输出是

不带可变参数的方法

这些代码中,我在调用demo的方法时特意用的带可变参数的方法。

相关推荐
qq_284274055 分钟前
数控铣床与加工中心笔记:铣刀与刀柄系统、G54试切对刀、镜像加工指令、孔加工工艺(钻扩铰镗)与固定循环G73/G83/G81/G76/G87/G84
笔记·学习·自动化·制造
BLUcoding15 分钟前
接口服务公网超时排查记录:SecureRandom 阻塞问题分析与解决
java·linux·springboot·aes·securerandom
yuniko-n31 分钟前
【JUC】Lock 和 synchronzied 锁
java
西柚小萌新38 分钟前
【LLM&&AI应用开发 八股文】--4.3.Agent智能体(下)
java·开发语言·数据库
北极有牛40 分钟前
cpp学习笔记--常量指针
java·开发语言·算法
java资料站1 小时前
二、Spring AI Alibaba · ChatModel
java·windows·spring
Titan20241 小时前
MySQL访问个人学习笔记
笔记·学习·mysql
十年Java程序媛1 小时前
Java 接口和抽象类对比|Java8 新特性,抛弃老旧八股,正确选型
java·spring boot·后端
caoerzhong1 小时前
JeeWMS 开源 WMS 部署避坑指南:Java 仓库管理系统的环境基线、四类根因与可复现交付
java·开发语言·开源
用户3721574261351 小时前
Java 合并 PDF 文件:完整合并、指定页面合并与流合并
java