Java5 新特性

2023-11-06

Java 5 语言新特性体验
[ 2006-04-06 22:28:38 | 作者: yuhen ]
1. Boxing & UnBoxing

在1.4及以前的版本,Java并不支持自动装箱。如下面的例子。

Java 1.4
public class program {

  public static void main(String[] args) {
    
    // 1.
    int i = 13;
    Integer o = new Integer(i);
    
    // 2.
    Integer x = new Integer(13);
    int y = x.intValue();
  }
}

在 Java 5 中,自动装箱和拆箱的支持,使得我们可以像 C# 一样方便使用了。
Java 5
public class program {

  public static void main(String[] args) {
    
    // Boxing
    int i = 13;
    Integer o = i;
    
    // UnBoxing
    Integer x = new Integer(13);
    int y = x;
  }
}

不过 Java 5对于Boxing和UnBoxing仅仅是语言层面的封装,并没有得到JVM的支持,因此性能上要比C#差一些。

2. 可变参数(Vararg)
public class program {

  static void test(int... ints){
    for (int i = 0; i < ints.length; i++){
      System.out.println(ints[i]);
    }
  }
  
  public static void main(String[] args) {
    test(10, 20, 30, 40, 50);
  }
}

虽然看上去语法有点奇怪,不过翻译成C#就明白了。
public class program {

  static void Test(params int[] ints){
    for (int i = 0; i < ints.Length; i++){
      Console.WriteLine(ints[i]);
    }
  }
  
  static void Main(string[] args) {
    Test(10, 20, 30, 40, 50);
  }
}

3. For-Each

还是上面那个例子,我们改一下。
public class program {

  static void test(int... ints){
    for (int i : ints){
      System.out.println(i);
    }
  }
  
  public static void main(String[] args) {
    test(10, 20, 30, 40, 50);
  }
}

这个foreach语法好像比C#要简洁几个字母。 [smile]
public class program {

  static void Test(params int[] ints){
    foreach (int i in ints){
      Console.WriteLine(i);
    }
  }
  
  static void Main(string[] args) {
    Test(10, 20, 30, 40, 50);
  }
}

4. Enum

Java 5总算支持枚举了,这么常见的应用,真不知道Javaer这么多年是怎么过来的。
public class program {

  enum Color {
    Red,
    White,
    Yellow
  }
  
  public static void main(String[] args) {
    Color[] cs = Color.values();
    for(Color c : cs){
      System.out.println(c);
    }
  }
}

不过Java的枚举远比C#复杂,C# 的枚举是整数集合,而Java的枚举则是一个标准的类(class),因此支持方法、构造等等。(真的有必要吗? [confused] )
enum Color {
  Red,
  White ,
  Yellow;
  
  public void test() {}
}

在switch中的写法和C#也不大相同,在case语句中不能添加枚举名称。
public class program {

  enum Color {
    Red,
    White ,
    Yellow;
  }
  
  public static void main(String[] args) {
    Color c = Color.Red;
    switch (c){
      case Red: System.out.println("Red");break;
      default: System.out.println("Others"); break;
    }
  }
}

5. Static Import

使用静态导入可以使被导入类的所有静态变量和静态方法在当前类直接可见,使用这些静态成员无需再给出他们的类名。好似以前在C/C++/Delphi中的全局函数,晕~~~~ 这个东西还是尽可能不要用。
public class program {

  public static void main(String[] args) {
    int i = (int)(Math.random()*10);
    System.out.println(i);
  }
}

一旦使用Static Import,上面的代码就可以写成下面这个样子。
import static java.lang.Math.*;

public class program {

  public static void main(String[] args) {
    int i = (int)(random()*10);
    System.out.println(i);
  }
}

还是那句话,尽可能不要用这个。

6. 格式化输入输出

说实话,习惯了C# 的格式化输入输出(Console.WrtieLine / String.Format),再用 Java 的 System.out.println 还真不大习惯。现在好了,看看下面的代码,很像吧。
public class program {

  public static void main(String[] args) {
    System.out.printf("Integer=%d String=%s", 13, "abc");
  }
}

格式化的格式是 "%[argument_index$][flags][width][.precision]conversion"。

其中参数序号从1开始。如: System.out.printf("String=%2$s Integer=%1$d", 13, "abc");
详情请查看JDK5帮助文档中有关"Format String Syntax" 或者 "java.lang.System.out.printf"的说明。

----------------
 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java5 新特性 的相关文章

随机推荐

  • java和C#在嵌套类上的差异

    平时不太用java的inner class 也就知道里面inner class可以访问外部对象的实例成员 今天碰巧试了一下C 和java的嵌套类的区别 感觉java的嵌套类其实更像是嵌套对象的样子 而C 的嵌套类则就是类定义的嵌套的感觉只可
  • 使用supervisor使Laravel的queue保持后台常驻

    我的个人博客 逐步前行STEP 一 安装supervisor 1 yum install python setuptools 2 easy install supervisor 二 配置supervisor 1 echo superviso
  • 离10000小时的差距

    03年之前没有 看到程序就烦 03年 04年 ASP写网站 打下一点程序基础 对目前影响应该在100小时左右 05年下半年 06年上半年 学WIN32程序设计 DX等 折合每天3小时到4小时 大约1000小时 06年工作原因 基本可以忽略
  • windows10上传文件到vmware虚拟机

    网上看了很多的方案 有共享文件夹的 也有安装vmware tools的 都试过了不成功 后来使用的ftp工具上传 先使用 ip addr 看虚拟机的IP地址 第二条ens33下面的地址 我本机安装的filezilla 然后远程 默认端口22
  • ELI5:导数,偏导数

    导数 导数就是描述某个事物的变化速率 举个最常见的例子 当人从某地移动到另一地点的时候 速度就是这个移动的导数 因为它描述了移动的变化速率 再继续看 加速度就是速度的导数 因为加速度描述了速度的变化速率 当加速度恒定的时候 我们可以想到 速
  • href 属性 和 target属性

  • 悟空浏览器——青龙羊毛

    青龙羊毛之元宵特辑 六 今日中青看点又迎来了一波黑号 本菜鸡再次中奖 非酋体质 每次必中招 啥也不说了 发个新毛吧 悟空浏览器之前毛毛很多 有个群友和我说过 现在那位群友都褪裙了 毛毛才有脚本 猴哥 猴哥浏览器也是头条系的 不知道能坚持多久
  • 初等代数不等式2

    表示共有个参数的所有积之和 共有项 第个参数的指数是 第个参数的指数是 故 表示共有个参数的所有积之和 共有项 第个参数的指数是 第个参数的指数是 第个参数的指数是 故 即 表示共有个参数的所有积之和 共有项 第个参数的指数是 第个参数的指
  • 【JDK】二、环境变量从jdk17切换为jdk8后不生效的解决办法

    环境变量从jdk17切换为jdk8后不生效的解决办法 一 问题描述 二 环境变量为java17时的截图 三 修改为java8时的截图 四 解决办法 1 原因分析 2 删除jdk17和jdk8默认的配置或者把默认的下移 统一使用自己的 JAV
  • 浅谈vlan中pvid的作用

    vlan中的pvid其实就是处理标签的一种方式 在端口为access模式的时候pvid access端口本身的vlan 也无法单独配置 在端口为trunk的时候pvid是可以根据需求配置的 默认的pvid vlan1 而在trunk端口模式
  • GIT使用(踩坑)

    1 关于远程路径的设置 双反斜线 和 单斜线 的问题 这样写可以 git remote add origin L BottleCapDetection 这样写也可以 git remote add origin L BottleCapDete
  • 如何将本地文件上传至阿里云ECS中

    本人尝试利用SSH Secure Shell Client软件登录阿里云ECS 发现并无法登录 但尝试后发现WinSCP可以对ECS的文件进行操作 偷懒不想使用ssh命令上传文件 同时可视化操作会安心一些 具体操作如下 第一步 开启阿里云E
  • 在IDEA中配置Git

    文章目录 在IDEA中配置Git 开发中IDEA的Git常见操作 初始化并提交项目到远程仓库 项目leader 1 在GitHub中创建远程仓库 2 将maven工程交给Git管理 3 配置忽略文件 4 提交到本地仓库 5 推送到远程仓库
  • react 之 styled-components

    css样式并不像JavaScript语法有作用域 因此css样式作用于全局很容易造成全局污染 为了防止这类问题发生 我们可以遵循CSS的BEM规范 即 blockName elementName modifierName 模块名 元素名 修
  • 【C++泛型编程】模板偏特化、局部类和型别映射(Int2Type,Type2Type)以及型别选择

    1 模板偏特化 模板偏特化是让你在template的所有可能实体中特化出一组子集 下面是一个模板全特化的例子 假设有一个类模板 名为Widget template
  • STM32CubeMX串口配置及库printf打印

    最新版STM32CubeMXV5 0 0已经上传到了网盘 或者自己通过软件在线升级 STM32CubeMX运行环境搭建包含两个部分 首先是 Java运行环境安装 其次是STM32CubeMX软件安装 Java 软件和STM32CubeMX
  • java 之泛型详解

    1 什么是泛型 引入 关于泛型 先来说几句集合 都知道集合是可以存储任意对象 当我们创建一个集合时如果没有声明它的存储类型 那该集合便自动提升为Object类型 提示 在我们创建对象的时候 如果没有明确指出一种数据类型 那么编译器会默认为O
  • linux磁盘信息文件,linux系统获取硬盘使用信息

    1 df命令 Linux下可以用df命令获取硬盘的使用情况 通过man可以获取df命令的详细情况 df命令经常用的参数为 a 显示全部的档案系统和各分割区的磁盘使用情形 i 显示i nodes的使用量 k 大小用k来表示 默认值 t 显示某
  • Prescan学习笔记:短暂接触

    因为老师的项目需要用到Prescan 来模拟真实的驾驶场景 因此使用它搭了一些模型 这里写下使用心得 注意 Prescan是一个非常注重产品版权的软件 因此我们使用的也是通过正规渠道向其购买的 而且其licence定期更换 需要再次更新或者
  • Java5 新特性

    Java 5 语言新特性体验 2006 04 06 22 28 38 作者 yuhen 1 Boxing UnBoxing 在1 4及以前的版本 Java并不支持自动装箱 如下面的例子 Java 1 4 public class progr