----------------------ASP.Net+Android+IOS开发----------------------期待与您交流!

JDK1.5新特性

一:静态导入

l  Import语句可以导入一个类或某个包中的所有类。

l  Import static语句导入一个类中的某个静态方法或所有静态方法。

示例:

import static java.lang.Math.max;// 静态导入Math类下的静态max方法
//import static java.lang.Math.*;// 静态导入Math类下所有的静态方法
public class StaticImport {
public static void main(String[] args) {
System.out.println(max(3, 6));
System.out.println(Math.abs(3 - 6));
}
}

二:可变参数

l   Overload重载

l   Override重写

l   只能出现在参数列表的最后

...位于参数类型和参数名之间,前后有无空格都可以。

l  调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数。

示例:

public class VariableParameter {
public static void main(String[] args) {
System.out.println(add(1, 2, 2, 2, 2));
}
public static int add(int x, int... args) {
int sum = 0;
sum += x;
for (int i = 0; i < args.length; i++) {
sum += args[i];
}
return sum;
}
}

三:增強For循环

语法:for(type 变量名:集合变量名){

}

注意:1.迭代变量必须在()中定义。

2. 集合变量可以是数组或实现了Iterable接口的集合类。

示例:

public static int add(int x, int... args) {
int sum = 0;
sum += x;
for (int i : args) {
sum += i;
}
return sum;
}

四:基本数据类型的自动装箱与自动拆箱

自动装箱:基本类型自动转为包装类.(int >> Integer)
  自动拆箱:包装类自动转为基本类型.(Integer >> int)

示例:

public class AutoBox {
public static void main(String[] args) {
Integer iObj = 3;// 自动装箱
System.out.println(iObj + 5);// 自动拆箱
Integer i1 = 137; // -128~127之间是一样的。用new生成除外
Integer i2 = 137; // -128~127之外不一样
String s1 = "abc"; // 字符串是一样的 用new生成除外
String s2 = "abc"; // ==是比较地址 equal是比较对象值
System.out.println(i1 == i2);
System.out.println(i1.equals(i2));
System.out.println("----------------------");
System.out.println(s1 == s2);
System.out.println(s1.equals(s2));
System.out.println("----------------------");
String a1 = new String("abc");
String a2 = new String("abc");
System.out.println(a1 == a2);// 地址
System.out.println(a1.equals(a2));// 对象值
}
}

五:枚举

为什么要有枚举?

1.  问题:要定义星期几或性别的变量,该怎么定义?假设用1-7分别表示星期一到星期日,但有人可能会写成int weekday = 0;

2.  枚举就是要让某个类型的变量的取值只能为若干个固定值中的一个,否则,编译器就会报错。枚举可以让编译器在编译时就可以控制源程序中填写的非法值,普通变量的方式在开发阶段无法实现这一目标。

l  用普通类如何实现枚举功能,定义一个Weekday的类用来模拟枚举功能。

1.  私有的构造方法。

2.  每个元素分别用一个公有的静态成员变量表示。

3.  可以有若干公有方法或抽象方法,例如,要提供nextDay方法必须是抽象的。

l  在枚举类型中,一般的定义形式如下:

Enum 枚举名{枚举值表}

六:泛型

为什么会出现泛型?

       因为集合存放的数据类型不固定,故往集合里面存放元素时,存在安全隐患,

如果在定义集合时,可以想定义数组一样指定数据类型,那么就可以解决该类安全问题。

JDK1.5后出现了泛型,用于解决集合框架的安全问题。

泛型是一个类型安全机制。

泛型定义格式:通过<>来定义要操作的引用数据类型

        ArrayList<String> al = new ArrayList<String>;

泛型的好处:

                  将运行时期出现的ClassCastException(类型转换异常)问题转移到编译时期。

避免了强制转换的麻烦。

什么时候定义泛型?

                  泛型在集合框架中很常见,只要见到<>就要定义泛型。其实<>就是用来接收类型的。

当使用集合时,将集合中要存储的数据类型作为参数传递到<>中即可。

泛型的形式:

l  泛型类:即自定义泛型类

A:当类中要操作的引用数据类型不确定时,早起定义Object来完成扩展,现在定义泛型来完成

B:局限性:泛型类定义的泛型,在整个类中有效,如果该泛型类的方法被调用,当泛型类的对象明确要操作的类型后,所有要操作的类型就被固定。

l  泛型方法:泛型放在返回值前面,修饰符的后面

A:为了避免泛型类的局限性,让不同方法可以操作不同的类型,而且类型还不确定,则可以将泛型定义在方法上。

B:特殊之处:静态方法不可以反问类上定义的泛型。

如果静态方法操作的应用数据类型不确定,可以讲泛型定义在静态方法上。

l  泛型接口:

当泛型定义在接口上时,则子类中要指定实现接口类型,同时还可以子类也可以定义为泛型类

泛型的高级应用:?通配符

当指定两种泛型的集合,则迭代时也要定义两种泛型的迭代器,麻烦,此时可通过将迭代器的泛型改为?,如Iterator<?> it=al.iterator();

两种泛型限定:

向上限定: ? extends E  ;E可以接收E类型或者E的子类。

向下限定: ? super E  ;E可以接收E类型或者E的父类。

----------------------ASP.Net+Android+IOS开发----------------------期待与您交流!

详情请查看:http://edu.csdn.net

黑马程序员————高新技术————JDK1.5新特性相关推荐

  1. 黑马程序员 高新技术三 注解和泛型

    ----------android培训 java培训 期待与您交流! ---------- 第一节 了解和入门注解的应用 一.概述: 注解相当于一种标记,在程序中加了注解就等于为程序打上了某种标记,没 ...

  2. 黑马程序员————高新技术————动态代理

    ----------------------ASP.Net+Android+IOS开发----------------------期待与您交流! 动态代理 什么是动态代理? 动态代理可以提供对另一个对 ...

  3. 黑马程序员————高新技术————反射

    ----------------------ASP.Net+Android+IOS开发----------------------期待与您交流! 反射 反射:reflect         反射就是把 ...

  4. 黑马程序员————高新技术————eclipse及IDE开发工具介绍

    ----------------------ASP.Net+Android+IOS开发----------------------期待与您交流! eclipse及IDE开发工具介绍   Eclipse ...

  5. 黑马程序员 高新技术五---代理

    -----------android培训.java培训.java学习型技术博客.期待与您交流! ------------ 第一节  概述 一.概念: 1.生活中的代理:就是常说的代理商,从厂商将商品卖 ...

  6. 黑马程序员--高新技术--静态导入,基本数据类型拆箱与装箱,享元设计模式

    静态导入 import语句可以导入一个类或某个包中的所有类 import static语句导入一个类中的某个静态方法或所有静态方法或静态变量 使用静态导入可以使被导入类的静态变量和静态方法在当前类直接 ...

  7. 黑马程序员————高新技术————类加载器

    ----------------------ASP.Net+Android+IOS开发----------------------期待与您交流! 类加载器 Java虚拟机中可以安装多个类的加载器,系统 ...

  8. 黑马程序员————高新技术————内省(了解JavaBean)

    ----------------------ASP.Net+Android+IOS开发----------------------期待与您交流! 内省(了解JavaBean) JavaBean是一种特 ...

  9. 黑马程序员云道页面—巩固html和css(新特性没有使用)

    注意: 一.写的是黑马程序员跟着老师写的,有点小差别,主要看注释理解结构 二.以前学thml和css没有深入理解到盒子的坍塌问题,注意理解外边距的合并.有两种情况,一个是两个盒子紧挨着一起,会进行外边 ...

最新文章

  1. POJ-3662 Telephone Lines 二分+双端队列
  2. eltable 无数据文案修改_有哪些适合十二月发的文艺文案?记录文案用这款图片便签...
  3. 类WebOS(添加了主界面,及相关功能代码)
  4. HDOJ 2176 取石子游戏
  5. 前端对div连线_《前端图形学从入门到放弃》003 三维世界
  6. 请问如何让Dundas chart for asp.net控件产生的临时图片文件减少一些?
  7. linux进程管道通信缺点,Linux进程通信(IPC)的方式详解
  8. elasticsearch sort illegal_argument_exception error
  9. 苹果Mac文件夹样式设计工具:Folder Designer
  10. 如何使用Aiseesoft Mac FoneTrans传输和管理iOS文件
  11. php中array_merge()与$arr1+$arr2两个数组直接相加的区别
  12. 双轴旋转云台plc控制_基于STM32的双轴监控云台精准控制系统设计
  13. KT148A语音芯片ic的软件参考代码C语言,一线串口
  14. 排列熵、模糊熵、近似熵、样本熵的原理及MATLAB实现之样本熵
  15. stm32f7网口_【STM32F7】STM32F7开发篇-超详细操作步骤
  16. 数据库基本操作-----数据库用户管理和授权
  17. mysql8.0 报错2059_mysql8.0连接报2059错误
  18. Google 的封杀与被封杀
  19. office/word 2010添加页眉页脚
  20. 六轴机械臂控制原理图_六轴工业机器人工作原理解析

热门文章

  1. python控制台程序学生管理系统实验总结_管理信息系统实验总结报告
  2. TF:TF定义两个变量相乘之placeholder先hold类似变量+feed_dict最后外界传入值
  3. call(zoom)_如何解决您的Zoom Call问题
  4. oppo怎么广告接入_oppo信息流广告投放操作指南
  5. 爬虫:爬东方财富网股票数据
  6. rsem比对_链特异性参数设不对 结果全是错的
  7. 25_ue4实现二段跳,加速跑和瞬移
  8. 修改TTF字体美化显示效果【原文转自:http://www.linuxfans.org/】
  9. 为何工作让你没有成就感
  10. 蓝桥杯java历年真题及答案整理(共100道题目及答案)