java1.4升级到java1.5 新特性

前几天和一位腾讯的技术大牛聊天,聊到关于jdk的很多支持,包括jvm的优化,gc的调用机制,1.4-到1.8每次升级版本的新特性等,做软件这行这么多年了,一直在使用java,但是却从来没有细细的研究每个版本新特性到底有什么不同,所以特意编写了这么一篇文档,让自己能了解些他们的新特性,也共享一下新特性的改变,当然我下面的验证并不能当做最官方的,但最起码我是一个一个实验了,如果存在问题或解释的不正确的,也劳烦各位大牛给予指正.

目前我下载的jdk版本,如果大家需要这些版本的话,后期我会上传到百度云上面去,供大家下载,大家在eclipse中一配置就好,不用安装的哦

工程建立的版本编码为UTF-8

好了,上面就是我的系统编码以及工程的详细信息,那么我们就开始测试吧!

==================================================华丽的分割线=======================================

1.4版本,在list中添加string和数字时,比较的麻烦,可以看一下一下例子

在获取值的时候也会出错,1.4对中文支持的不太好,目前我的工程师utf-8的,但是还是出现了中文乱码的情况,这个问题网上很多教程说是由于jdk1.4对中文支持不太好,也有的说是环境的问题,目前这个乱码问题还需要待确定.

以下是在没有改变任何参数时,把原有代码复制了一份,然后我们看到代码出现了黄色的下划线,而且执行后,不会在出现乱码的情况,由此可以验证,1.4对中文确实支持不太好,在1.5版本的时候做了修正

当我们添加泛型后,因为泛型的类型是string的,所以我们只能向list中添加string类型的参数,而不能添加数字类型,如果我们的需求只是一种类型的,使用泛型是可行的,但是我们的需求需要他即能存储string,也能存储int,那么使用泛型就有点力不从心了

因为我们添加了泛型,我们只能存string类型的,所有我们就只能add(string),我们可以看到第12行我们没有对类型进行强转,这就引出了1.4到1.5的另一个新特性 
自动装箱/拆箱

目前我们说了三点1.4到1.5 的特性,总结一下

1.中文支持

2.泛型

3.自动装箱/拆箱

有人说了,1.4到1.5就这点特性吗?当然不是,我们还有没说,那我们继续.

我们可以看到 ,使用1.4版本做list遍历的时候,我们需要写int index=0....之类的,代码偏重

现在我们转换成1.5版本,然后又标黄了,大家应该知道为什么了吧,因为没加泛型,不添加泛型系统不会报错.咱们就用1.5改一下下面的代码,一会的话我们也修改jdk为1.4来运行1.5支持的代码

以下是使用jdk1.5的新特性循环的增强 for-each

我们换做了1.4版本来运行for-each,我们可以看到,报错了,因为1.4不支持呀

我这里改会了1.5 然后添加了泛型,又改了改,我们可以看到最下面的输出,没问题吧,这就是for-each增强

下面是1.4版本使用平方根方法的使用方式,我们得把类也拿过来不是,然后我们看一下1.5是怎么用的

说说看,你看下面的代码,发现了什么我们不在使用Math.sqrt(int),而是直接把Math中的方法引入到了当前类中,这就是1.5的新特性
import static 静态引入方法

我们可以看到引入的方法,但是什么方法可以这么用呢,那么我们就举几个例子来验证一下,我们在test215中添加了一个public 的a 方法,然后我们在315中引入下,看看能不能引入进来

我们可以看到,在315中是无法引入这个public方法的,即使是private,default或者是protected,都无法引入非静态的方法.

那么我们就把a方法改成static方法

然后我们可以看到315已经不再报错了,因为a方法是静态的,而且修饰符是public的,那么如果是其他类型的呢,我们试一下private,default或者是protected

privated修饰符

在调用就报错了,原因是如果修饰符为private类型的,则无法访问import static方法,即使是static类型的方法,其他的default或者是protected在同包下没有此类问题,非同包也会有此类问题,只要大家对public,private,default或者是protected了解,就明白他们的调用方式了

我们在实际开发过程中,可能需要传递多个参数到另一方法,可能我们需要写一下的方法,我们要计算a+b,那就得传a和b,如果我们突然要计算在a+b+c,那么我们得整体修改方法,参数列表得修改,代码也得修改,如果我们使用可变长进行计算,这样我们就可以省去修改的部分

下面是1.5版本支持可变长参数,不过可变长参数这个新特性并不是哪哪都好,在使用时,也需要注意下,例如

(1)重写方法不能缩小访问权限;

(2)参数列表必须与被重写方法相同(包括显示形式);

(3)返回类型必须与被重写方法的相同或是其子类;

(4)重写方法不能抛出新的异常,或者超过了父类范围的异常,但是可以抛出更少、更有限的异常,或者不抛出异常。

以上大致是1.4升级到1.5的新特性,当然编写代码只为参考,没有按照代码规范走,请各位海涵,如果上面写的有问题或者纰漏的,希望各位能够纠正才是.

时间: 2024-08-26 10:21:11

java1.4升级到java1.5 新特性的相关文章

ygRan Java1.0-1.11各个版本的新特性

JDK Version 1.01996-01-23 Oak(橡树) 初代版本,伟大的一个里程碑,但是是纯解释运行,使用外挂JIT,性能比较差,运行速度慢. JDK Version 1.11997-02-19 JDBC(Java DataBase Connectivity);支持内部类;RMI(Remote Method Invocation) ;反射;Java Bean;JDK Version 1.21998-12-08 Playground(操场) 集合框架;JIT(Just In Time)

Java1.0-1.12各个版本的新特性

JDK Version 1.0 1996-01-23 Oak(橡树) 初代版本,伟大的一个里程碑,但是是纯解释运行,使用外挂JIT,性能比较差,运行速度慢. JDK Version 1.1 1997-02-19 JDBC(Java DataBase Connectivity);支持内部类;RMI(Remote Method Invocation) ;反射;Java Bean; JDK Version 1.2 1998-12-08 Playground(操场) 集合框架;JIT(Just In T

MQTT 3.1.1,值得升级的6个新特性

前言 以前看英文文章或资料,看完之后,摘要或者忘记.这一次选择感兴趣的MQTT 3.1.1介绍文章资料,引文见文末,作为练手:非完全翻译,去除掉一些广告性描述,若侵权,请告知. 在沉寂了四年之后,QTT 3.1.1规范于2014年10月30号正式发布,与此同时MQTT 3.1.1已成为OASIS(结构化信息标准促进组织)开放物联网消息传递协议标准(连接1 连接2),换种说法就是MQTT 3.1.1已升级为国际物联网标准. 正如HTTP为人们通过万维网分享信息铺平了道路一样,MQTT能将几十亿低成

黑马程序员——【Java高新技术】——JDK1.5新特性:静态导入、可变参数、增强型for循环、自动装箱拆箱、枚举

一.静态导入 1.import和import static区别: (1)import 是导入一个类或某个包中所有的类. (2)import static是导入一个类中的某个静态方法或所有的静态方法. 注:在调用静态导入的类的静态方法时,可以不用再写类名.如Arrays.sort(int[])可以直接写sort(int[]); 2.静态导入的写法: (1)import static java.util.Arrays.*;   表示导入Arrays类中的所有静态成员. (2)import stati

java1.5的新特性

java1.5的新特性. java作为一门语言,是sun公司出品,这门语言有自己的语法规范.同时围绕着这门语言有一些基本的类库来供大家使用. 一门程序设计语言,可以简单的认为包含两部分,一个是基本的语法规则(包括关键字),另一个是用来支持这门语言的一些系统级得到基础类库. 所以,一门程序设计语言是可以不断被升级更新的,升级更新后的语言可能会增加新的语法规范. java1.5和java1.4作为不同版本的java语言,就有些不一样的地方: 所以就有java1.5的新特性需要掌握: 1.java1.

java1.8新特性(一)

一直在更新java 版本,原来也没有关注java版本的变化 引入的一些新的api  引起注意的还是  关于一些并发包的使用,那时候才对每个版本的特性 去了解了一下,虽然 不一定都用上了,但是不管学习什么语言,花点时间学习新的api还是很有必要的,在工作中 还用一些 1.8的新特性,但是 始终 是 不明白.总是有问题,特意花些时间 去重点学习一下,如果其中 有什么说的不对,请一定要提出来! 用户 对象 User: package com.java; public class User { Stri

了解Java1.8新特性

前几天电脑上的JDK自动更新到1.8,这两天了解了一下JDK1.8的一些新特性.下面就来浅谈一下我所了解的. 我们都知道,Java是不能多继承的,但是可以多实现.它与C++不同,C++是可以多继承的.尽管Java可以实现多个接口,但是接口中只能有抽象方法,不能有具体的实现.但是在JDK1.8中,接口里新增了默认方法.可以对默认方法进行具体的实现,但是这个方法必须是default.看下面这段代码: 1 interface AA{ 2 public int add(int a,int b); //申

从java1到java9每个版本都有什么新特性?

每次出新版本,大家大概都会这么问,"Java X会有什么特性呢?" .在下面的内容里,我总结了至今为止的Java主要发行版中各自引入的新特性,这样做的目的是为了突出各个新特性是在哪个发行版中引入的.除了列出的特性外,每个发行版还做了很多优化和修复BUG的工作. Java 9 请参考: http://www.techug.com/post/java-9-features-with-examples.html Java SE 8 Java 8是于2014年3月14号发布.从Java 8开始

Spring Cloud Greenwich 新特性和F升级分享

2019.01.23 期待已久的Spring Cloud Greenwich 发布了release版本,作为我们团队也第一时间把RC版本替换为release,以下为总结,希望对你使用Spring Cloud Greenwich 有所帮助 Greenwich 只支持 Spring Boot 2.1.x 分支.如果使用 2.0.x 请使用Finchley版本, pom坐标 主要是适配JAVA11 <!--支持Spring Boot 2.1.X--> <dependency> <g