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复习之Foreach循环与可变参数

这篇博客主要是总结Foreach循环和可变参数。
  • BeMoreQuiet
  • BeMoreQuiet
  • 2017年02月11日 13:07
  • 341

MyBatis参数传入集合之foreach动态sql

foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合。foreach元素的属性主要有item,index,collection,open,separator,close。ite...
  • Small____Fish
  • Small____Fish
  • 2012年09月28日 16:23
  • 136562

Java 函数的参数引用,通过传入参数带回函数运行结果

Java没有指针,在需要由参数直接带回结果的情况下,较C语言相比有一点差别,C任何类型可通过指针传递,在Java中,需要自定义一个类,而类可以通过函数的参数返回结果。   public class t...
  • joyous
  • joyous
  • 2013年07月18日 19:36
  • 17401

使用Java、hibernate validator注解校验入参,格式化出参(出参)

很多时候,后台通过ORM框架从数据库拿到表数据,需要对数据进行一些处理才抛给前端,常见的如格式化时间,在业务代码new一个SimpleDateFormat进行时间格式化处理。下面介绍以一种优雅的方式格...
  • qq_19260029
  • qq_19260029
  • 2017年09月12日 10:31
  • 238

Java 中带参无返回值方法和带参带返回值方法的使用

有时方法的执行需要依赖于某些条件,换句话说,要想通过方法完成特定的功能,需要为其提供额外的信息才行。例如,现实生活中电饭锅可以实现“煮饭”的功能,但前提是我们必须提供食材,如果我们什么都不提供,那就真...
  • zgh0711
  • zgh0711
  • 2015年11月25日 10:20
  • 6324

java 传递参数的两种方式

Java中没有指针,所以也没有引用传递了,仅仅有值传递不过可以通过对象的方式来实现引用传递 类似java没有多继承 但可以用多次implements 接口实现多继承的功能   值传递:方法调用时,实...
  • maoyeqiu
  • maoyeqiu
  • 2015年10月19日 15:39
  • 16962

使用代理打印出详细的入参出参

  • 2013年03月28日 16:36
  • 63KB
  • 下载

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

Java学习(七)高级for循环、可变参数的使用
  • w_basketboy
  • w_basketboy
  • 2014年11月13日 14:32
  • 1891

foreach和while循环的区别

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

PHP流程控制替代语法(if\for\foreach\while\switch case)

PHP 提供了一些流程控制的替代语法,包括 if,while,for,foreach 和 switch。替代语法的基本形式是把左花括号({)换成冒号(:),把右花括号(})分别换成 endif;,en...
  • fationyyk
  • fationyyk
  • 2017年04月14日 10:51
  • 331
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java方法传参和可变参数的个别说明,以及foreach的语法和编译后的实现
举报原因:
原因补充:

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