猛虎出山: Java 5.0的新语言特性

华为海思2026届数字IC秋招笔试真题解析与实战技巧(2025最新版) 本文深度解析华为海思2026届数字IC秋招笔试真题,涵盖高频考点如后端设计、低功耗设计、SystemVerilog语法等核心内容。提供时序违例修复、时钟树综合等实战技巧,帮助考生高效备考。特别关注UPF低功耗设计规范等最新考点,助力考生在秋招笔试中脱颖而出。 阅读详情
2004年下半年,Sun公司发布了开发代号为“Tiger”的J2SE 5.0,揭开了Java发展的一个重要里程碑。在过去的Java升级中更多的是进行一些库函数的改进,而这次则直接从语法层面上进行了增强。直接从1.4跳到5.0(Sun本来是打算用1.5.0这个版本号的),单从版本号的变化上就可以看出这次升级的力度是如此之大。那么,到底有些什么改变呢?下面就请随我窥视一二(其中所举的代码例子均摘自于《J2SE 5.0 in a Nutshell》): 

范型(Generics)

  在以前,我们需要为不同的数据类型分别建立相对应的方法、类或接口,例如一个加法方法add可能需要分别定义int add(int a, int b),String add(String a, String b),MyClass add(MyClass a, MyClass b)等多个方法,即便这些方法中的处理逻辑完全相同(只是数据类型不同)也是这样。
  跟C++中的模板(template)一样,范型使程序员能创建通用的方法、类和接口,这种情况下他们所操作数据的类型是通过参数指定的。通过使用范型,使得只创建一个类就能自动工作于不同数据类型。因此,范型扩展了程序员复用代码的能力。另外,范型也增加了类型安全。使用范型以后,我们不再需要显式的强制转换(cast),这样能在编译时就发现类型不符,避免到运行时出现类型转换错误。
  下面是使用范型前后的代码对比:
  使用范型前:
  1. ArrayList list = new ArrayList();
  2. list.add(0, new Integer(42));
  3. int total = ((Integer)list.get(0)).intValue();

  使用范型后(下面还有进一步利用自动装箱/拆箱特性以后更简洁的代码):
  1. ArrayList<Integer> list =  new ArrayList<Integer>(); 
  2. list.add(0, new Integer(42));
  3. int total = list.get(0).intValue();


  顺便提到一点,非常遗憾,运算符重载没有能够跟范型一起被加入进来。如果Java能够支持运算符重载的话,在使用范型的时候感觉就更好了(不过,那样Java就越来越像C++了)。

元数据(Metadata)
  新的元数据工具更多是为未来考虑而增加的,它让你能够在程序中嵌入注解(annotation),这些注解能够被不同的编程工具处理。例如,工具可以根据注解(annotation)的要求生成Java源代码,这样只要程序员指定一种动作,然后就可以将实际提供代码的事情留给工具了,从而大大降低了程序员必须手工输入的重复代码的数量。
  下面是使用元数据前后的代码对比:
  使用前:
  1. public interface PingIF extends Remote {
  2.       public void ping() throws RemoteException;
  3. }
  4. public class Ping implements PingIF {
  5.      public void ping() {
  6.           ……
  7.      }
  8. }

  使用后:
public class Ping {
     public @remote void ping() {
          ……
     }
}
 

自动装箱(Autoboxing)和自动拆箱(Auto-Unboxing)
  从Java诞生以来,简单数据类型(int,long,float等)和其对应的包装类型(Integer,Long,Float等)之间一直不能自动转换,这为我们带来了很多麻烦。现在Java终于添加了自动装箱(Autoboxing)和自动拆箱(Auto-unboxing),为我们解决了这个问题。自动装箱(Autoboxing)特性让Java自动包装一个简单数据类型(例如int)到对应的包装类型中(例如Integer)中。自动拆箱(Auto-unboxing)是相反的过程,即将一个包装类型(例如Integer)自动转换为它所对应的简单数据类型(例如int)。举例如下:
  以前:
  1. ArrayList<Integer> list = new ArrayList<Integer>();
  2. list.add(0, new Integer(42));
  3. int total = (list.get(0)).intValue();

  以后(请对照范型部分使用范型前的例子代码):
  1. ArrayList<Integer> list = new ArrayList<Integer>();
  2. list.add(0, 42);
  3. int total = list.get(0); 


枚举(Enumeration)
  很多编程语言中都是有枚举类型,而在Java诞生的时候, Java的创造者没有把这个东东包含Java中来,这导致我们在程序中写了许多public static final。现在枚举终于被加入到Java中来了。
  本质上,一个枚举是一个命名常量的列表。枚举类型通过新的关键字enum来支持。下面是定义一个枚举的例子代码:
  1. public enum StopLight { red, amber, green };

  再顺便提到一点,非常遗憾,常量没有能够跟范型一起被加入进来,这意味着使用public static final的命运还没有终结。
 

增强的for循环
Java 5.0中添加了“for-each”形式的循环。这个增强为大量集合、数组等的循环处理提供了便利,并为我们防止数组越界提供有益的帮助,还避免了原来必需的强制类型转换(case),让我们能在编译时就发现类型不符,避免到运行时出现类型转换错误。
  下面是在使用新的for循环前后的代码对比:
  使用前:
  1. ArrayList<Integer> list = new ArrayList<Integer>();
  2. for (Iterator i = list.iterator(); i.hasNext();) {
  3.          Integer value=(Integer)i.next();
  4.          ……
  5. }

  使用后:
  1. ArrayList<Integer> list = new ArrayList<Integer>();
  2. for (Integer i : list) {
  3.        ……
  4. }
 

不定参数(Varargs)
  在实际开发过程中,有时候会遇到方法参数不固定的情况。在过去,为了解决问题,我们经常采用将参数包装到一个数组或者集合中的方式。现在有Varargs帮助我们解决这个问题了。Varargs让一个方法可以带有可变数目参数。Varargs的加入使得创建带有可变数目参数的方法变的更加容易。下面是使用不定参数的例子:
  1. // 方法定义
  2. void argtest(Object ... args) {
  3.       for (int i=0;i <args.length; i++) {
  4.       }
  5. }
  6. // 调用方式
  7. argtest("test", "data");


静态导入(Static Import)
  过去使用静态成员通常我们需要进行这种形式的调用:YourClassName.staticMember,在每次使用静态成员的时候我们都要把这个静态成员所属类的名字写一遍。现在静态导入可以让我们不必每次都去写类的名字了,可以直接通过静态成员的名字来访问它们。下面是使用静态导入的例子:
  1. // 静态导入
  2. import static java.awt.BorderLayout.*; 
  3. // 调用静态成员
  4. getContentPane().add(new JPanel(), CENTER); 



其它改变
  上面所列的主要是一些Java 5在语言层面的升级,Java 5在基础类库、用户界面、虚拟机、执行效率等其它方面也进行了大量的升级。例如在基础类库方面,为范型的出现更新了集合框架,为方便多线程开发对线程同步进行了改进,为方便输入输出增加了新的Formatter和Scanner 类。
  对于这些方面我在这里就不再列举了,如果需要你可以查找相应的文档进行学习.

作者:公飞 

079、镜头阴影校正(LSC)精讲:径向衰减模型、增益矩阵生成与产线标定技巧 《镜头阴影校正(LSC)实战精要》 本文从实际案例出发,深入解析镜头阴影校正的核心技术与产线应用。作者通过一个典型故障案例(0.05mm镜片偏移导致LSC失效)揭示了LSC不仅是数学问题,更是光学-机械-工艺耦合系统。 【关键技术点】 模型优化:提出"径向+切向"双分量模型替代传统cos⁴θ模型,采用5阶多项式拟合径向衰减,1阶线性补偿切向误差 增益矩阵生成:采用自适应网格技术,在边缘区域加密网格,结合中值滤波与高斯平滑消除噪声干扰 产线标定:强调光源均匀性校准(积分球vs平板光源)、坏点预处理、温度补偿等 阅读详情

相关推荐

《通信工程施工与管理》

制作馈线接头必须使用专用的工具,专用工具包括:馈线切割刀、馈线安全刀、小金属丝毛刷、固定尺寸或大号活动扳手、小号扁锉刀、细齿小手锯、接头扩孔器、3M防水胶或防水接头盒;如图所示,详情如表所示。

2302_78710464的博客 1654

标签的 break 和 continue 语句

带标签的 break 和 continue 语句边城狂人 2002 年 12 月   Java 中有 goto 关键字,但这个关键字没有任何作用,换句话说,我们不能使用 goto 来进行跳转到某行。实际上,结构化程序设计完全不需要 goto 语句即可完成各种流程,而 goto 语句的使用往往会使程序的可读性降低,所以 Java 不允许 goto 跳转。  Java 中同

iamfancy的专栏 1378

RJ45以太网接口EMC设计方案

RJ45以太网接口EMC设计方案 一、 接口概述 RJ45以太网接口是目前应用最广泛的通讯设备接口,以太网口的电磁兼容性能关系到通讯设备的稳定运行。赛盛技术应用电磁兼容设计平台(EDP)软件从接口原理图、结构设计,线缆设计三个方面来设计以太网口的EMC设计方案。 二、 接口电路 原理图的EMC设计 百兆以太网接口2KV防雷滤波设计 图1 百兆以太网接口2KV防雷滤波设计 接口电路设计概述: 本方案从EMC原理上,进行了相关的抑制干扰和抗敏感度的设计;从设计层次解决EMC问题;同时此电路兼容了百兆以太网接

兰陵笑笑生SD的博客 1万+

Java中的Break语句

在结构化编程中一再告诫编程者不要使用GoTo语句,并将其作为程序结构化的大敌加以讨伐。然而仔细分析了一下Java中的Break语句,发现它大有GoTo语句的风采。而它的用法也摒弃了结构化编程中对于跳出多个循环所采用的接力做法,而是通过标签直接跳出标签指示的循环,大大降低了空间和时间复杂度。于是得悟,Goto语句并不是一个一无是处的语句,真正引起大家群起而攻之的是随处乱放的标签。...

weixin_34409822的博客 168

2.设置Salesforce开发环境

Salesforce DX:salesforce Developer Experience (salesforce开发人员体验)LWC:Lightning Web Component(注意首字母是大写的,是一个概念,小写的话有组件本身的含义)CLI:Command Line Interface(命令行界面)version control system (VCS):版本控制系统。

nihaixiao的博客 2200

Proteus 8.17安装部署全指南:避坑、汉化与STM32库配置

Proteus是一款广泛用于单片机仿真与电路设计的EDA工具,其核心价值在于支持嵌入式系统原型验证与教学实践。Proteus 8.17版本重构了许可证机制(LIC Engine)、依赖环境(VC++ 2019/NET 4.8)及路径加载逻辑,导致传统安装方法失效。掌握正确安装部署流程,是保障原理图绘制、VSM仿真(如51/STM32/ESP32)及外设波形观测(OLED、SPI、ADC)稳定运行的前提。本文聚焦Windows平台下零失败安装路径选择、权限配置、汉化实施与高频器件(如STM32F103)元件库

weixin_33377602的博客 403

猛虎出山 —— Java 5.0的新语言特性

作者:公飞 2004年下半年,Sun公司发布了开发代号为“Tiger”的J2SE 5.0,揭开了Java发展的一个重要里程碑。在过去的Java升级中更多的是进行一些库函数的改进,而这次则直接从语法层面上进行了增强。直接从1.4跳到5.0(Sun本来是打算用1.5.0这个版本号的),单从版本号的变化上就可以看出这次升级的力度是如此之大。那么,到底有些什么改变呢?下面就请随我窥视一二(其中所举

思考的虾米——公飞 868

鱼眼相机矫正实战:除了棋盘格,试试横向展开和经纬度法(OpenCV4/C++实现对比)

本文对比了鱼眼相机矫正的三种主流方法:棋盘格标定法、横向展开法和经纬度法,通过OpenCV4/C++实战代码解析,帮助开发者在自动驾驶、VR全景拼接和安防监控等场景中选择最适合的技术方案。重点分析了各方法的精度、处理速度和适用场景,为工程实践提供实用指导。

weixin_29032489的博客 285

25级阶梯,每次走一步或两步,问最多有多少种走法

分析:共有25个阶梯,每一步走法共有两种,走一级,或是走两级。分两种情况:如果第一次走两级的话,那么还有25-2=23级阶梯要走。再求剩下23级阶梯共有多少走法。如果第一次走一级的话,那么还有25-1=24级阶梯要走,于是走完25级阶梯的方法总数,就等于爬完23级阶梯总共方法+爬完24级阶梯的方法总数。而23极又可再分为(23-1)、(23-2)级阶梯。依次类推,可见这是一个典型的递归类型。我们可

starsinsky's JAVABLOG 1509

(十)安卓开发中的Activity之间的通信使用详解

下面将结合代码和具体在 Android 开发中,Activity 之间的通信是非常常见且核心的功能之一使用场景,详细讲解这几种方式。

cuijiying的博客 1281

详细指南:如何在TI C2000基于C28x的微控制器上部署FreeRTOS_C语言实现

FreeRTOS是一个小型、开源、实时的嵌入式操作系统内核。它为多种微控制器和处理器提供了支持,包括ARM、AVR、MSP430和PIC等。小型和轻量级:适合资源受限的嵌入式系统。实时性:可以满足严格的实时要求。多任务支持:支持多任务并发执行。内存管理:提供了多种内存管理策略。模块化设计:用户可以根据需要选择所需的功能模块。TI C2000系列微控制器是专为实时控制应用设计的。高性能C28x核:提供了高速的浮点运算能力。丰富的外设:包括PWM、ADC、DAC、通信接口等。低功耗。

qq_38334677的博客 1607

Java内存泄露问题分析

Java内存泄露问题分析   作者:csdn  来源:csdn很多人在谈论内存泄露问题,当然对于c/c++来说,这个应该是老掉牙的问题,但是很多Java人员也越来越多得讨论这个问题,我这里写个小结,希望对大家有一定的参考价值。  内存泄漏的慨念  1.c/c++是程序员自己管理内存,Java内存是由GC自动回收的。  我虽然不是很熟悉C++,不过这个应该没有犯常识性错误吧。  2.什么是内存泄露?

starsinsky's JAVABLOG 1433

Codex 100个真实案例 - 用AI生成游戏场景地图(随机地形+建筑)

本案例使用 Codex 从零构建一个游戏场景地图生成器!我们会用 Perlin 噪声算法生成自然逼真的随机地形(山脉、平原、河流、海洋),实现瓦片地图渲染系统,智能放置建筑物和资源点,最终在浏览器中提供可缩放、可拖拽的交互式地图预览,并支持一键导出高清 PNG 图片。整个过程完全用自然语言驱动 Codex 完成!

yueyeguzhuo的专栏 159

Java学习推荐书籍

书名:Java编程思想URL: http://www.china-pub.com/computers/common/info.asp?id=7241评论:其实这本书并不适合作为Java入门使用,有位道友人为:看这种书有种看马克思选集的感觉,车轱辘话来回说,本来很简单的概念, 看过他的复杂的例子后,就云山雾绕了。当然,治疗失眠的效果是不错的。我本人读这本书也是读了N多遍吧,总是感觉无法掌握其中一些概

starsinsky's JAVABLOG 1274

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

【转载】学不可以已——我一年Java之路的回顾,反思以及展望(下)

在暑假的学习中情况也是像我以前计划的那样发展,首先看的一本书就是《Java Network Programming》,Bruce确实推荐了一本好书,这本书循序渐进并且讲的非常的透彻,学完这本书然后再学习新的net的API以及NIO是非常轻松的,这本书我花了10天看完了,自我感觉好极了^_^。与此同时也每天练习《Java Cookbook》中的代码,这个假期我把那本书的代码全部亲自实践了一遍,正因为

starsinsky's JAVABLOG 1254

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

最好的Java程序员免费学习材料(English)

最好免费的Training 和Tutorials资源:Java Programming Resources 19 Free Java Courses from IBM Introduction to Programming Using Java -Full TOC  -PDF version Studying for Java Certification on the Web Thinking I

starsinsky's JAVABLOG 1216

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

【转载】Java学习从入门到精通

Java Learning Path (一)、工具篇一、 JDK (Java Development Kit)JDK是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库(rt.jar)。不论什么Java应用服务器实质都是内置了某个版本的JDK。因此掌握JDK是学好Java的第一步。最主流的JDK是Sun公司发布的JDK

starsinsky's JAVABLOG 1111

Java桌面应用程序设计新贵:SWT 简介

Java语言的声望和它在桌面应用程序(GUI程序)所取得的成就显然极不相符,至今仍然很少能看到非常成功Java桌面程序。虽然有JBuilder,Netbean,JProbe等大型软件作为代表,但这仍不能证明Java的GUI程序是成功的:它们的外观总是和同一操作系统平台下的其它软件显得格格不入。对机器配置的需求也似乎永无止境,这使得它们只能被一些总是拥有当前最高性能PC的程序员们所容忍,或是那些不在

starsinsky's JAVABLOG 1107

【转载】学不可以已——我一年Java之路的回顾,反思以及展望(上)

大约就是在去年的这个时候吧,Java这个字眼就开始占据了我学习计划中的重要席位,从那时候那杯冒热气的咖啡一直陪伴我到今天。也不知道当时为什么要学习Java,又是为什么选择了Java。因为我记得当时的我,心中所想和现在可谓是大相径庭!那时我曾天真的想着,我将来学管理,你们这些学计算机的人出来也难逃给管理界人士做下属的命运,现在想来,那时是多么的无知和幼稚,我怕现在的很多大学生,更确切的说很多像我们专

starsinsky's JAVABLOG 1092

好的JAVA风格(英译)

介绍作为一个已经工作了很多年的软件开发者和咨询师,我看过大量形形色色的程序语言代码。其中有文雅的也有丑陋的,但是不幸的是,它们中大多数代码都是丑陋的。 我希望能够说服你们,我的开发伙伴们,我们应该足够的重视我们的代码风格,尤其是那些在应用程序中提供用户接口和其他可视化部分的代码。在这两部分系列的第一部分, 我会解释为什么我们应该关心我们的代码外观,然后阐述一些好的JAVA风格的一般要素。为

starsinsky's JAVABLOG 1073

【转载】Java虚拟机类装载:原理、实现与应用

Java虚拟机类装载:原理、实现与应用作者:刘学超一、引言Java虚拟机(JVM)的类装载就是指将包含在类文件中的字节码装载到JVM中, 并使其成为JVM一部分的过程。JVM的类动态装载技术能够在运行时刻动态地加载或者替换系统的某些功能模块, 而不影响系统其他功能模块的正常运行。本文将分析JVM中的类装载系统,探讨JVM中类装载的原理、实现以及应用。二、Java虚拟机的类装载实现与应用2.1  装

starsinsky's JAVABLOG 1068

【转载】Java虚拟机的深入研究

Java虚拟机的深入研究作者:刘学超 1  Java技术与Java虚拟机说起Java,人们首先想到的是Java编程语言,然而事实上,Java是一种技术,它由四方面组成: Java编程语言、Java类文件格式、Java虚拟机和Java应用程序接口(Java API)。它们的关系如下图所示:图1  Java四个方面的关系运行期环境代表着Java平台,开发人员编写Java代码(.java文件),然后将之

starsinsky's JAVABLOG 1066

初識JAVA

Java告诉我说:世间万物皆为对象!于是,我不断的在互联网Search,以更新我的QQ列表;然后以代码复用技术重复着那一经典:Hello!终于,当我在QQ的多线程间频繁切换时,我以为,我已经持有了对象。但一天,某Class对我说:你不是我的对象!这一刻,我心头只有一种形态:这种异常应该在执行期前得以清理。所以,我至今仍象没有分配到执行权饥饿的线程,苦苦思索生活与设计的模式;直到我领悟到Java的通

starsinsky's JAVABLOG 1047

【转载】java新手必读,一些入门知识

                          java新手必读,一些入门知识              文章很好,我初学JAVA时,也是在这篇文章的指导下进行的,在此不妨推荐给广大将要学习JAVA的朋友!   1、jdk就是j2se,jdk1.1.8版本以后改成为j2se,   下载地址:http://java.sun.com/j2se/downloads.html   2、jre是java

starsinsky's JAVABLOG 1023
上一篇: J2SE5.0新特性之范型编程
下一篇: 实现Java与C语言接口
start_java
博客等级 码龄22年 5粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值