java5的新特性fore和可变参数
更新java5新特性::
Java1.5增加了新特性:
可变参数:
适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理。
注意:可变参数必须位于最后一项。当可变参数个数多余一个时,
必将有一个不是最后一项,所以只支持有一个可变参数。
因为参数个数不定,所以当其后边还有相同类型参数时,
java无法区分传入的参数属于前一个可变参数还是后边的参数,
所以只能让可变参数位于最后一项。
fore:用来迭代数组的,如果在不操作索引的情况下,
就可以使用fore迭代数组.减少代码的书写但是在进行代码反编译的时候,
查看底层是怎么进行运算的.
package com.csdn.jdbcdemo.date2017_11_15;/*** java5的新特性:可变参数和fore* 现在最新是java9* 更新算一个旧的知识点吧* 主要是对一些java版本的特性了解* @author 89155**/
public class ChangArgsDemo {public static void main(String[] args) {NumberDemo(3.4,2,4,3,6,5,7,8,8);NumberDemo2(new int[]{1,23,4,5,6,5});}/** 可变参数是对不确定参数而设计的..* 可变参数作为参数传递,只能放在最后面,不可以到处放* * * fore是java5的新特性.用来遍历数组的,如果不需要操作索引,* (有的人称之为下标)就是用fore迭代数组,* 这样更加方便.减少的代码的数量*/private static void NumberDemo(double d ,int...arr){//对商品进行计算int j = 0;for (int i : arr) {j+=i;}System.out.println("使用fore计算和可变参数商品的价格为"+(j*d));}/** 用来和上面对比的*/private static void NumberDemo2(int[] arr){int j = 0;for (int i = 0 ; i<arr.length ; i++){j+=arr[i];}System.out.println("使用for循环计算商品="+(j));}
}
下面是反编译代码:
package com.csdn.jdbcdemo.date2017_11_15;import java.io.PrintStream;public class ChangArgsDemo
{public ChangArgsDemo(){}public static void main(String args[]){NumberDemo(3.3999999999999999D, new int[] {2, 4, 3, 6, 5, 7, 8, 8});NumberDemo2(new int[] {1, 23, 4, 5, 6, 5});}private static transient void NumberDemo(double d, int arr[]){int j = 0;int ai[];int l = (ai = arr).length;for (int k = 0; k < l; k++){int i = ai[k];j += i;}System.out.println((new StringBuilder("使用fore计算和可变参数商品的价格为")).append((double)j * d).toString());}private static void NumberDemo2(int arr[]){int j = 0;for (int i = 0; i < arr.length; i++)j += arr[i];System.out.println((new StringBuilder("使用for循环计算商品=")).append(j).toString());}
}
由此可以看见.
所谓的可变参数和fore其实只是语法糖而已,
减少代码的书写,让开发更加高效
使用反编译,看到底层还是使用for循环和数组来实现;
java5的新特性fore和可变参数相关推荐
- c++11新特性的使用---可变模板参数、type_traits、function综合使用
DLL帮助类 c++中手动调用dll是比较繁琐的,调用过程是:加载dll后还要定义一个对应的函数指针类型,接着调用GetProAddress获取函数地址,在转成函数指针,最后调用该函数如下例子: #i ...
- Java5~11新特性
Java5~11版本新特性 Java5 Java6 Java7 Java8 Java9 Java10 Java11 Java5 Java5开发代号为Tiger(老虎),于2004-09-30发行 特性 ...
- Oracle 21c 新特性:不可变表 Immutable tables 提高安全
Oracle 21c 的区块链表,是最受关注的特性,但是还有一个小特性,很少有人提及,那就是 Immutable tables - 不可变表. 区块链表是在 21c 中引入的,然后向后移植到 19.1 ...
- ES6新特性(函数默认参数,箭头函数)
ES6新特性之 函数参数的默认值写法 和 箭头函数. 1.函数参数的默认值 ES5中不能直接为函数的参数指定默认值,只能通过以下的变通方式: 从上面的代码可以看出存在一个问题,当传入的参数为0或者 ...
- c++11新特性的使用---可变模板参数、lambda、type_traits、optional综合使用
通过惰性求值类的实现综合采用了可变模板参数.lambda.type_traits.optional进行实现 该类功能是:当初始化某个对象时,该对象引用了一个大对象,这个对象的创建需要较长的时间,同时有 ...
- Jdk1.8新特性(二)——lambda表达式(参数列表)-{}和函数式接口@FunctionalInterface
Jdk1.8新增lambda表达式是为了简化代码,主要用于简化匿名实现类,为其提供一种更加简洁的写法.Lambda表达式在swift语言中被称为代码块,lambda表达式可以认为是一种特殊的接口,是匿 ...
- C# 4.0 新特性dynamic、可选参数、命名参数等
1.dynamic ExpandoObject 熟悉js的朋友都知道js可以这么写 : 1 var t = new Object(); 2 t.Abc = 'something'; 3 t.Value ...
- C++11新特性之变长参数模板详解
本文主要介绍了C++11变长参数模板,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 目录 C++11 变长参数模板 变长函数参数 ...
- ES6新特性之函数优化-参数默认值
函数优化 在ES6中,对函数的操作做了优化,使得我们在操作函数时更加的便捷. 函数参数默认值 在ES6以前,我们无法给一个函数参数设置默认值,只能采用变通写法: function add(a , b) ...
最新文章
- GAN完整理论推导与实现,Perfect!
- NVIDIA Display Container LS 服务意外地终止
- python语言跨平台语言吗_python属于跨平台语言吗?
- 硬件安全系列 逻辑电路基础知识介绍(二)
- 亲身验证切实可行的python项目部署方案
- Head first java chapter 16 集合与泛型(数据结构)
- 利用SpringBoot+RabbitMQ,实现一个邮件推送服务
- Nodejs框架+uniapp前端微商个人相册多端小程序源码
- leetcode - 813. 最大平均值和的分组
- Python使用RSA+MD5实现数字签名
- python 程序块 挂掉的服务_写一个python的服务监控程序
- python int函数的实现_python实现int函数的案例分析
- LOJ6070 基因 分块+回文自动机
- 实训任务4:Hadoop综合操作
- Java8 jdk1.8新特性
- 机器学习导论——机器学习三要素
- 获取最近一年十二月份的月份
- 黑龙江省计算机一级考试科目,黑龙江省2021年3月全国计算机等级考试时间和科目调整...
- 实用食品英语 (餐桌上用的)
- oracle数据库频繁被锁,oracle数据库用户频繁被锁
热门文章
- php include file_PHP Include文件实例讲解
- AI挖掘优质淘宝买家秀 再也不用担心辣眼睛了
- 中国防卫科技学院计算机,2014高考专业介绍:科技防卫
- 在不同位置(客户端的终端设备,服务端,项目代码中)判断设备类型(PC、手机、微信等)
- 缺少编译器要求的成员“System.Runtime.CompilerServices.ExtensionAttribute..ctor” 解决方案
- QCharts随时间流逝
- MFC 子对话框多了任务栏图标?
- 喝豆浆对身体都有哪些好处?
- 小水管也要有尊严 网络限速优化实际案例
- 搜索效果和搜索动画效果