这段时间太忙,更新的频率有点小了!刚解决了一个复杂的算法问题,现在就抽这点时间来讲讲剩下的一部分java新特性。

在上一节中我们学过泛型、自动装箱拆箱、for循环,这一节的内容是可变长参数、枚举类型和静态引用。

我们需要构造一个或多个方法来解决一个实际的问题,而每个方法又包括方法名、方法权限、返回参数、形参类型、形参和方法体等。其中,方法形参可以是一个,也可以是多个。在实际开发中,通常会遇到这样的情况,我们需要向同一个方法中传入类型相同而个数不定的形参,例如现有一个方法sum(int x,int y),通过sum(2,3)调用这个方法,可以返回2+3=5的值,如果现在我有很多类型与之相同的表达式需要计算,比如2+5+6,2+9+7+7...由于表达式太多,我们不可去能重载sum()方法,那么java的新特性可变参数就开始起作用了。

观察下面一段程序:

public class ChangeableVariable

{

/**

* @param args

*/

public static void main(String[] args)

{

System.out.println(sum(1));

System.out.println(sum(1,2));

System.out.println(sum(1,2,3));

}

public static int sum(int...n)

{

int sum=0;

for(int x:n)

{

sum+=x;

}

return sum;

}

}

运行结果:

1

3

6

是不是感觉很惊奇呢?在以上代码中,我们仅仅使用了一个函数就完成了表达式1,1+2,1+2+3的计算,这样的做法在java 1.5之前是不可思议的。现在我们来简单地分析一下以上代码的原理,首先我们观察int sum(int...n),里面的int...n就是所谓的可变参数,我们可以向其中传入任意个参数进行运算(注意:参数的类型必须相同,运算类型可以根据实际情况有所不同)。在对可变参数进行取值时,又要用到前面所学的java新特性for循环,这两种新特性加在一起使用,大大地减轻了程序员的负担。

大家对于枚举类型一点也不陌生,不管是面向过程的C语言,还是面向对象的C++,都存在枚举类型。然而,java在1.5版本前是没有枚举类型的,那么在实际运用中,如果想要达到如C/C++中枚举类型的效果,一般都是声明多个String的静态常量,这样做存在着诸多安全问题,同时,当程序编译完成后如果对其值进行修改,那么程序不得不重新进行编译。所以,java在1.5版本中重新引入枚举的概念。由于枚举的内容很简单,这里只做一下简单的介绍。

枚举的声明格式为:

[权限符]+enum+枚举名{成员1,成员2...}

程序中的调用格式为:

枚举名.成员

至于静态引用的问题,跟C++的内容很相似,并且在前面的内容中已经讲了很多了,这里就不再多讲了。

下节将讲解面向对象编程基础,这节的内容就到这里。

转载于:https://www.cnblogs.com/jeancandoit/archive/2011/10/30/2306699.html

Java新特性(二)相关推荐

  1. java 新特性之 stream 流

    java 新特性之 stream 流 Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据. 这种风格将要处理的元素集合看作一种流, 流在管道中传输, 并且可以在 ...

  2. Java 新特性总结

    Java 新特性总结¶ 总结的这些新特性,都是自己觉得在开发中实际用得上的. 简单概括下就是: JAVA1.3:普通的原始的JAVA,基本语法相信大家都见过了 JAVA1.4:assert关键字 JA ...

  3. 青空の霞光Java新特性笔记

    Java新特性介绍 **注意:**推荐完成此路线所有前置内容后,再来学习本篇. 经过前面的学习,我们基本已经了解了Java 8及之前的所有语法,不过,Java 8是Oracle 公司于 2014 年 ...

  4. Java新特性(二 · JDK1.6)

    本篇文章介绍的JDK1.6的特性,这些特性主要还是了解即可. 1.Desktop类和SystemTray类 每一个Java应用都会包含一个Desktop和SystemTray实例,这个不需要你去实例化 ...

  5. 【JavaSE】JDK新特性(二)————接口新特性,函数式接口(Suppier,Comsumer,Predicate,Function)

    文章目录 1.接口新特性 1.1 接口组成更新概述 1.2 接口中的默认方法 1.3 接口中的静态方法 1.4 接口中的私有方法 2. 函数式接口 2.1 函数式接口概述 2.2 函数式接口作为方法的 ...

  6. 本周推荐 | JDK 11 升级实践 和 Java 新特性浅探

    推荐语:学习java和jdk的新特性并积极应用,以达到优化系统,降本提效的作用,这是我们作为java研发同学的第一节课.本文从"为什么"起手,谈到"怎么做",最 ...

  7. Cay S.Horstmann:从Java新特性看Java的未来

    6月11日,由国内Java技术传播领军机构机械工业出版社华章分社与培生教育集团联合发起的[Java核心技术大会2022]盛大召开!8个专场.24个主题演讲,从6月11日起至6月18日连续8天在线直播, ...

  8. java新特性lambda表达式快速入门

    文章目录 序 常规写法 写法一:新建类并实现该接口 写法二:使用匿名函数 lambda写法 写法一:lambda常规写法 写法二:lambda简写 中场疑问 lambda的方法引用 写法一 写法二 练 ...

  9. Java新特性:数据类型可以扔掉了?

    作者 | 王磊 来源 | Java中文社群(ID:javacn666) 转载请联系授权(微信ID:GG_Stone) 在很久很久以前,我们写代码时要慎重的考虑变量的数据类型,比如下面这些: 枚举:尽管 ...

最新文章

  1. pve rust 能拆家吗_RUST:2020年9月第四周:向上向上再向上!
  2. Windows 7 搭建 Mobile 6 真机调试开发环境
  3. 解决Android studio 非法字符的问题
  4. 2020年球云计算市值或将达4490亿欧元
  5. 【错误记录】反射时调用方法及成员报错 ( 执行反射方法 | 设置反射的成员变量 | 设置方法/成员可见性 )
  6. 批量镜像locator(比如表情模板)
  7. spring-security-oauth2注解详解
  8. 一个基于Spring极度简单的Restful API工具
  9. java使用jeids实现redis2.6的list操作(4)
  10. 科学计算机简单编程_是“计算机科学”还是“编程”?
  11. Facebook提出生成式实体链接、文档检索,大幅刷新SOTA!
  12. 简单 黑苹果dsdt教程_小米Ruby笔记本安装98%完美黑苹果教程
  13. 主成份(PCA)与奇异值分解(SVD)的通俗解释
  14. 【4】测试用例设计-判定表法
  15. 52.网络参数管理者: DHCP
  16. Ubuntu 下 MySQL 数据自执行备份
  17. Mysql批量添加数据
  18. opengl开启垂直同步_应该开启“垂直同步”吗 ?
  19. linux 开机密码忘了,linux系统开机忘记密码
  20. 结巴分词有前空格_结巴分词详细讲解

热门文章

  1. 我的Go语言学习之旅四:各种变量的声明
  2. eclipse 查找
  3. 2016总结 wjwdive
  4. git 解决远程和本地冲突
  5. FineUI 选中多行获取行ID
  6. HDU 1059 Dividing
  7. PHP检查PEAR是否工作
  8. 链表应用——多项式相加
  9. Asp.net序中常用代码汇总(五)
  10. mysql 新增从数据库_从零开始学 MySQL - 创建数据库并插入数据