java数组作为参数传入函数怎么让他不变化

java数组作为参数传入函数怎么让他不变化,第1张

您不能使数组的元素不变。但是方法中也可用来传递和返回数组。如果要向方法中传递一个数组,则方法的接收参数处必须是符合其类型的数组。而且数组属于引用数据类型,所以在把数组传递进方法之后,如果方法对数组本身做了任何修改,修改结果都是会保存下来的。
向方法中传递数组
在java中,所有对象都是通过引用进行 *** 作的。而数组也是一种对象,当把数组作为参数传递给方法时,传递的实际上就是数组对象的引用。在方法中对数组的所有 *** 作,都会映射到原数组中。而所谓的"引用",就是java对象在堆内存的地址赋给了多个"栈内存"的变量既然方法可以接收一个数组,那么方法也就可以返回一个数组,则此时,只需要在返回值类型声明处明确的写出返回的数组类型即可。
数组可以作为方法的参数。
当调用方法的时候,向方法的小括号进行传参,传递进去的其实是数组的地址值返回值类型:只是进行打印而已,不需要进行计算,也没有结果,用void
但是javautilCollections类的unmodifiableList()方法接受List接口的一个对象(实现其类的对象),并返回给定对象的不可修改形式。用户仅对获得的列表具有只读访问权限。
ArrayList类的asList()方法接受一个数组并返回一个List对象。
因此,要转换一个不可变的数组-获得所需的数组。
使用asList()方法将其转换为列表对象。首先给出结论:Java 程序设计语言对对象采用的不是引用调用,实际上,对象引用是按值传递的。(出自java核心技术卷一,第4章对象与类)
在刷leetcode时看到这样一道题:
给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。
不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。在编程语言中调用函数时的参数传递分为值传递和引用传递,在学习Java的时候一般会见过这样一句话:基本数据类型使用值传递、对象使用引用传递。
对于值传递自然好说,传入方法的是变量的值,拥有可变参数的方法可以被重载,在调用方法的时候,如果能够和固定参数的方法匹配,也能够与可变长参数的方法匹配,则选择固定参数的方法。一个方法只能有一个可变长参数,并且这个可变长参数必须是该方法的最后一个参数编译器虽然知道怎么调用,但人容易陷入调用的陷阱及误区第一个能编译通过,这是为什么呢?事实上,base对象把子类对象sub做了向上转型,形参列表是由父类决定的,当然能通过。再看看子类直接调用的情况,这时编译器看到子类覆写了父类的print方法,因此肯定使用子类重新定义的print方法,尽管参数列表不匹配也不会跑到父类再去匹配下,因为找到了就不再找了,因此有了类型不匹配的错误。
这是个特例,重写的方法参数列表与父类不相同,这违背了重写的定义,并且会引发莫名其妙的错误。在这里,我们再复习下重写必须满足的条件:
1)重写方法不能缩小访问权限;
2)参数列表必须与被重写方法相同(包括显示形式);
3)返回类型必须与被重写方法的相同或是其子类;
4)重写方法不能抛出新的异常,或者超过了父类范围的异常,但是可以抛出更少、更有限的异常,或者不抛出异常。

新闻附件、公告附件、通知附件三个类继承同一个抽象类或实现同一个接口,
比如三个类都继承Attachment类;
新闻、公告、通知三个基类继承同一个抽象类或实现同一个接口,
比如三个类都实现Informable接口,在这个接口中定义一个抽象方法
public void inform(Attachment att);//就是你说的公共方法
然后在新闻、公告、通知三个基类中各自实现该方法,具体地限制参数是相应附件。
-------------------------------------------------------
不向上继承,你怎么实现 新闻调用该方法……、公告调用该方法……、通知调用该方法…… 啊?
不是限定了就是一个公共方法吗?还要被三个不同类调用

你好,很高兴回答你的问题。
这就是java可变参数的传参方式,可以直接传一个符合参数数据类型的数组,也可以是用逗号分割的多个符合参数数据类型变量。
如果有帮助到你,请点击采纳。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/yw/12698928.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-27
下一篇 2023-05-27

发表评论

登录后才能评论

评论列表(0条)

保存