黑马程序员——java新特性
来源:互联网 发布:mysql 字符转日期函数 编辑:程序博客网 时间:2024/05/30 13:41
———–android培训、java培训、java学习型技术博客、期待与您交流!————
1 静态导入
Import语句--可以导入一个类或某个包中所有的类Import static语句--可以导入一个类中的某个静态方法或所有的静态方法 比较两个数的最大值可以用Maht类中的方法Math.max(8,9); 此时需要导入import Java.lang.Math*: 如果想直接调用max(8,9); 此时需要导入import static Java.lang.Math.max:及导入包中的静态方法,就可以直接使用
//普通导入import java.lang.Math;public class Text{ public static void main(String[] args) { int a=20,b=30; System.out.println(Math.max(a,b)); }}//静态导入import static java.lang.Math.max;public class Text{ public static void main(String[] args) { int a=20,b=30; System.out.println(max(a,b)); }}
2 可变参数
一个方法接受的参数个数可以不固定 可变参数的特点: -->只能出现在参数列表的最后 public static void add(intx,int...args) -->...(三个点 )位于变量类型和变量名之间,前后有无空格都可以 -->调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体以数组的形式访问可变参数
3 增强for循环
for(type 变量名:集合变量名) {循环体}注意事项: -->迭代变量必须在()中定义 -->集合变量可以是数组或实现了Iterator接口的集合
public class Text{ public static void main(String[] args) { int[] arry=new int[]{2,4,6,8,10}; for(int i:arry)//循环遍历 { System.out.println(i); } }}
4 基本数据类型的自动装箱和自动拆箱
自动装箱:在jdk1.5之前Integer i=3;这样写是报错的(因为两边的数据类型根本不一致)在jdk1.5之后Integer i=3;这样写没有问题,因为系统把3这个基本的数据类型自动封装成Integer对象
自动拆箱: Integer i=3; i+3;//i是Integer对象在1.5之前是不能这样写的,因为两个数的数据类型不一致 但是在1.5之后,这是可以的,系统自动把Integer对象i转换成int类型的
享元设计模式:(flyweight)
有很多个小的对象,它们有好多相同的属性,就把这些相同的属性变成一个对象,那些不同的属性把它们变成方法的参数这些参数称之为外部状态,那些相同的属性称之为这个对象的内部状态
5 枚举(enum)
用普通的java类来模拟枚举原理
package javaText1;/* 1、私有的构造方法 2、每个元素分别用一个公有的静态成员变量表示 3、可以有若干公有方法或抽象方法。采用抽象方法定义nextDay就将大量的if.else语句转移成了一个个独立的类。*/public abstract class WeekDay{ private WeekDay(){};//空的构造方法 public final static WeekDay SUN_DAY =new WeekDay() { @Override public WeekDay nextDay() { return Mun_DAY; } };//类中的成员变量(是该类的一个对象),是通过内部类实现的 public final static WeekDay Mun_DAY =new WeekDay() { @Override public WeekDay nextDay() { return SUN_DAY; } };//类中的成员变量(是该类的一个对象),是通过内部类实现的 public abstract WeekDay nextDay ();//抽象方法 public String toString () { return this==SUN_DAY?"SUN_DAY":"Mun_DAY"; }//重写了toString方法}
枚举类的基本定义(用到关键字enum) 修饰符 enum 类名 {枚举元素} 以及枚举类中常用的方法:
public class enumText{ public static void main(String[] args) { WeekDay sunDay =WeekDay.SUN_DAY;//通过类名调用静态成员变量 System.out.println(weekDay);//输出枚举常量名 System.out.println(weekDay.name());//输出对象名 System.out.println(weekDay.getClass());//输出对应类 System.out.println(weekDay.toString());//输出枚举对象名 System.out.println(weekDay.ordinal());//输出此对象在枚举常量的次序 System.out.println(WeekDay.valueOf("WED"));//将字符串转化为枚举常量 System.out.println(WeekDay.values().length);//获取所以的枚举元素,并打印其长度 } //定义枚举类 public enum WeelDay { SUN,MON,TUE,WED,THI,FRI,SAT;//这是枚举的元素 }}
带有构造方法的枚举类
需要说明的是在枚举类中怎么使用带参数和不带参数的构造方法?
使用带参数构造
在枚举元素的后边加上一对小括号里边写上对应有参数的构造方法参数类型的参数
使用无参的构造方法
在枚举元素后边什么都没有以及在枚举元素后边只加上一对小括号,都是调用的是没有参数的构造方法
public class emun1 { public static void main(String[] args) { WeekDay weekDay=WeekDay.MON; } //定义枚举内部类 public enum WeekDay{ SUN(),MON(1),TUE,WED,THI,FRI,SAT;//分号可有可无,但如果下面还有方法或其他成员时,分号不能省。 //枚举类中的枚举元素必须写在第一行 //无参构造器 private WeekDay(){ System.out.println("First"); } //带参数的构造器 private WeekDay(int day){ System.out.println("Second"); } }}
实现带有抽象方法的枚举类
package javaText1;public class enum_abstrac{ public static void main(String[] args) { TrafficLamp lamp=TrafficLamp.Green; System.out.println(lamp.nextLamp()); } //定义enum类 //类中的三个成员变量是该enum(抽象类)类的子类对象,用的是内部类来实现的.并且要重写TrafficLamp类中的抽象方法 //还定义了一个带参数的构造方法,在创建enum元素的对象的时候,调用带参数的构造方法 public enum TrafficLamp { Read(50) { @Override public TrafficLamp nextLamp() { // TODO Auto-generated method stub return Green; } }, Green(35) { @Override public TrafficLamp nextLamp() { // TODO Auto-generated method stub return yellow; } }, yellow(5){ @Override public TrafficLamp nextLamp() { // TODO Auto-generated method stub return Read; } }; public abstract TrafficLamp nextLamp();//定义一个抽象方法 private int time; private TrafficLamp(int time)//定义带一个参数的构造方法 { this.time=time; } }}
———–android培训、java培训、java学习型技术博客、期待与您交流!————
0 0
- 黑马程序员——java新特性
- 黑马程序员——Java 5新特性
- 黑马程序员——java之JDK1.5新特性
- 黑马程序员——java--JDK1.5新特性
- 黑马程序员——java基础---JDK1.5新特性
- 黑马程序员—Java基础之—JDK新特性
- 黑马程序员——java反射与新特性
- 黑马程序员—JAVA高新技术_JDK1.5新特性
- 黑马程序员—JAVA高新技术_JDK1.5新特性II
- 黑马程序员----java新特性
- 黑马程序员-----JAVA新特性
- 黑马程序员——简单新特性
- 黑马程序员—5.0新特性
- 黑马程序员 — JDK1.5 新特性
- 黑马程序员—jdk1.5新特性
- 黑马程序员——Java高新_Java5部分新特性
- 黑马程序员---Java中的几个新特性
- 黑马程序员----------Java新特性反射 泛型
- p122 第三章 第15题 潘璠
- Spark源码学习(一)---------编译源码
- ClientAbortException: java.net.SocketException: Software caused connection abort: socket write erro
- hbase 0.98集群启动错误示例
- 实现简易字符串压缩算法:一个长度最大为128的字符串, 由字母a-z或者A-Z组成,将其中连续出现2次以上(含2次)的字母转换为字母和出现次数,以达到压缩目的
- 黑马程序员——java新特性
- 论敬畏心的重要性
- 1573 大明A+B
- iOS 转盘效果
- Android NDK c调用java代码
- Java实现一个简单的随机点名器
- Eclipse MAT插件下载地址
- YouCompleteMe——一个神奇的Vim插件
- [MySQL] - errno:150