Java方法传参和可变参数的个别说明,以及foreach的语法和编译后的实现

原创 2017年06月06日 22:32:35

Java中的方法可以传所有数据类型,但是这些传参也是有区别的:(下图是Java所有数据类型)


无论是基本数据类型,还是引用数据类型,作为参数传递的时候都用的是值传递机制
什么是值传递机制?
针对于基本数据类型来说,传递的是基本类型的值的副本
针对于引用数据类型来说,传递的是引用的地址值的副本


方法的可变参数:Java5的新特性,方法的可变参数,说的是参数的个数可变
语法例如:public double get(double ... arr)

接下来看看方法可变参数编译前和编译后的区别:


方法的可变参数,其实也是一个语法糖,编译器级别的新特性,让开发者写代码更简单。
方法的可变参数,其底层就是一个数组类型
可变参数必须作为方法的最后一个参数,避免参数的歧义性。
推论:方法最多只有一个可变参数


Object:Java语言中的根类,老祖宗类,Object可以表示任意数据类型。
native修饰符(本地方法),表示该方法底层使用了C/C++语言实现了,Java直接调用其他语言编写好的功能。


foreach的语法:
for(数组元素  变量:数组名)
{
循环体
}

foreach编译前和编译后的区别:


通过反编译工具查看字节码,你会发现foreach其实底层依然是使用for循环+索引来操作数组的。(foreach不过是一个语法糖)
for循环功能比foreach更彪悍

如何选择:如果迭代数组元素,而不关心数组的索引的时候,首选使用foreach。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

java基础面试题及答案

题目链接:http://www.jsondream.com/2016/12/04/java-interview-question.html答案: 1. Arrays.sort实现原理和Coll...

foreach和while循环的区别

      两者的不同之处在于它们背后的运作方式。      在while循环里,Perl会读入一行输入,把它存入某个变量并且执行循环主体。然后,它再回头去找其他的输入行。      在foreach...
  • zll01
  • zll01
  • 2008年09月23日 16:07
  • 2206

Java中for与foreach区别

for与foreach在Java中是常用的遍历方法,一般情况下都能够相互通用,但在某些情况下不能进行替换。看下面列子: 实现功能:数组长度为8中循环遍历100以内的随机数。   for方法:    ...

java for/foreach/while 3种循环性能比较

在循环100000次,且循环体中操作都是声明一个局部变量m。 3种耗时如下: foreach风格 :9130 normal for :12314 while :4258 可以看出while 性能最...

几句话弄清楚Java参数传值还是传引用

最近刷题用递归解决关于树的问题的时候,在递归函数调用的时候什么时候传入值,什么时候传入引用有疑问,因为这关系到什么时候我们需要恢复现场,什么时候不需要。在网上搜索了一下,感觉这篇总结的非常简单明了,简...
  • yangliuy
  • yangliuy
  • 2015年01月28日 14:58
  • 16399

java foreach循环为什么不能赋值

直接上代码public class test4 { public static void main(String args[]){ int [] a=new int[3]; ...

Java学习(七)高级for循环、可变参数的使用

Java学习(七)高级for循环、可变参数的使用

Java 使用ArrayList.add() 前面所有值被 覆盖 的问题

ArrayList.add后,前面数据被覆盖的问题多次搜寻,没有讲的很清楚的答案,所有发表本篇文章。 导致这个现象最根本的原因*** * *根源就是ArrayList集合里存的是同一个值,有可能是同一...

安卓删除List里面某些一样的数据为何使用的是迭代器而不是for循环

今天写一个关于为何使用迭代器去删除list里面某一项一模一样的数据。我们知道的是for循环不是可以做到遍历么~那么直接使用list里面自带的remove(i)就可以直接删除里面的某一个项了么?而且还快...

黑马程序员---2015.6.22java基础笔记---Collections---Arrays---方法的可变参数---常用类介绍

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 1.集合框架的工具类         Collections         a.让集...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java方法传参和可变参数的个别说明,以及foreach的语法和编译后的实现
举报原因:
原因补充:

(最多只允许输入30个字)