黑马程序员-高新技术-jdk1.5新特性


JAVA5.0的新特性

一:静态的导入:

import staticjava.lang.Math.*;

lang包中的Math类全部都是静态放,使用此语句可以导入静态Math类,这样可以直接调用math里面的所有放,如max();方法,可以直接使用使用

导入不会占用资源,只是让你在编写代码时,减少编写的内容,提高效率。

二:可变参数

public staticint add(int x,int ...args)

指令的意义就是定义add函数,返回int类型的参数,里面只能输入int类型的参数,然后后面的参数个数不限,但必须是int型的。Args是数组名称,如果没有定义,必须首先定义他。

注意:1只能出现在参数列表的最后;2...位于变量类型和变量名之间,前后有无空格都可以;3调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数。

二:增强for循环

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

注意事项:

迭代变量必须在( )中定义!

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

代码举例:

publicclass VariableParameter {

     publicstaticvoidmain(String[] args) {

         System.out.println(add(3,4,5));

     }

     publicstaticintadd(int x,int... args){

         intsum =0;

/*for(int i = 0;i<args.length;i++){//遍历数组,因为可变参数是以数组形式存入的。

              sum+=args[i];//求和

         }*/

         for(int arg : args){//高级for循环,分号前面的是新的变量,后面是需要迭代的对象

              sum+=arg;//将迭代结果累加

         }

         returnsum;

     }

}

学会一个知识点,最好的方法是查阅源文档,了解该语句的所有相关的使用规则,这样才能持续进步

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

享元模式(英语:Flyweight Pattern)是一种软件设计模式。

它使用共享物件,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件;它适合用于当大量物件只是重复因而导致无法令人接受的使用大量内存。通常物件中的部分状态是可以分享。常见做法是把它们放在外部数据结构,当需要使用时再将它们传递给享元。

自己总结定义:有很多个小的对象,他们有很多属性相同,把他们变成一个对象,那些不同的属性变成方法的参数,这样称之为外部状态,那些相同的属性称之为内部状态。

百度资料:

享元模式(英语:FlyweightPattern)是一种软件设计模式。它使用共享物件,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件;它适合用于当大量物件只是重复因而导致无法令人接受的使用大量内存。通常物件中的部分状态是可以分享。常见做法是把它们放在外部数据结构,当需要使用时再将它们传递给享元。

典型的享元模式的例子为文书处理器中以图形结构来表示字符。一个做法是,每个字形有其字型外观, 字模metrics, 和其它格式资讯,但这会使每个字符就耗用上千字节。取而代之的是,每个字符参照到一个共享字形物件,此物件会被其它有共同特质的字符所分享;只有每个字符(文件中或页面中)的位置才需要另外储存。以下程式用来解释上述的文件例子。这个例子用来解释享元模式利用只载立执行立即小任务所必需的资料,因而减少内存使用量。

课堂资料:

享元模式的定义为:采用一个共享来避免大量拥有相同内容对象的开销。这种开销中最常见、
直观的就是内存的损耗。享元模式以共享的方式高效的支持大量的细粒度对象

享元设计模式:是指有很多个小的对象,他们有很多属性相同,把他们变成一个对象,
那些相同的属性叫做内部状态,不相同的属性作为方法的参数,成为外部状态。

范围:-128到127之间 Integer
目的:为了共享技术实现相同或相似对象的重用
何时用:当对象数量太多时,将导致运行代价过高,带来性能下降的时候用
缺点:1.需要分离出内部状态和外部状态,使得程序的逻辑复杂化。
      2.需要将享元对象的状态外部化,而读取外部状态舍得运行时间变长

 

演示代码:

publicclass AutoBox {

     publicstaticvoidmain(String[] args) {

         Integer iObj= 3;//自动装箱,将int 3,装箱成为对象iObj,类型为Integer。

         System.out.println(iObj+12);//自动拆箱,对象iObj先变成3,然后加上12,最后再装箱为Integer对象

         String s1 = newString ("abc");

         String s2 = newString ("abc");

         System.out.println(s1==s2);//false,因为都在堆内存中比较对象,s1和s2各自在堆内存中建立对象,有2个不同的地址值,这样s1,s2指向的地址值不一样

        String   str1   =   new   String("abc");

        String   str2   =   "abc";

         System.out.println(str1==str2);//false,因为str2直接指向常量池中的abc,而str1指向堆内存中的abc,==比较引用,所以不同

         Integer i1=12;

         Integer i2=12;

         System.out.println(i1==i2);//相同,因为常用数字在内存中已经建立,直接指向12即可。

         Integer i3=-129;

         Integer i4=-129;

         System.out.println(i3==i4);//false,因为常用的是-128~127,超出就另外建立了。这种共享常用数据的模式就是享元模式

     }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值