java基础知识

可变参数、for循环增强、自动拆箱与装箱、享元模式、静态导入


 

可变参数:
一个方法接受的参数个数不固定,可变参数只能出现在参数列表的最后。在可变参数的的点前后有无空格都可以。
调用可变参数的方法的时候,编译器为该可变参数的隐含的创建一个数组,在方法体中以数组的形式访问参数。
例子如下:
public class VariableParameter {

 public static void main(String[] args) {
  // TODO Auto-generated method stub
  System.out.println(add(2, 3,5));
 }
 
 public static int add(int x , int ...args){//
  int sum = x ;
  for(int i = 0 ; i < args.length ; i++)
  {
   sum += args[i] ;
  }
  return sum ;
 }
}


for循环增强,是迭代一个集合里面所有的元素,然后对每个元素进行操作,for循环增强的语法如下:
for(type argument : arguments){//这里的type表示类型,argument随便起名,但是最好
                               //见名知意。arguments就是你传递过来的参数的。一般情况下是多个。
 .....
}
如上例子可以变为下面的格式:
public static int add(int x , int ...args){//
  int sum = x ;
  for(int arg : args)
   sum += arg ;
  return sum ;
 }


自动拆箱与装箱
JDK1.5新特性,看如下例子
自动装箱:
Integer obj = 3 ;
这个例子在JDK1.5里面是可以通过的,但是在JDK1.4里面是不能通过的,为什么呢?
在JDK1.5里面这里会把基本类型的数据3(整型数据类型)分装成一个Integer类型的对象,然后给obj,这里的处理是自动的。但是在JDK1.4里面没有这个功能,不能够把一个基本类型的数据类型封装成一个对象,所以会报错。

自动拆箱:
int m = obj +3 ;
这里obj是一个Integer的对象,但是3是一个基本数据类型,不能够做运算,但是在JDK1.5里面,这里提供了自动拆箱功能,就是把一个Integer类型的对象编程一个基本整型数据类型,然后这两个基本数据类型就可以做运算了。

享元模式  flyweight
什么叫做享元模式


  Integer i1 = 13 ;
  Integer i2 = 13 ;
  System.out.println(i1 == i2 );//返回结果是true

  Integer i1 = 137 ;
  Integer i2 = 137 ;
  System.out.println(i1 == i2 );//返回结果是false
为什么呢?
对于这些基本类型的整数要装成Integer的时候,如果这个数字在-128到127之间,也就是一个字节之内,一旦被包装成一个Integer先把这个缓存到内存中,当下次有这个对象要调用同样的数是,先看一下内存中有没有这个数,若果有就直接拿来用,如果没有在创建新的对象。为什么会这样呢? 因为在java里面认为这些数很小的时候,要有很多个地方要使用它,在用的时候永远都一模一样,那么久使用这一个就行了,不需要穿件那么对象。像这样的模式就叫做享元模式。什么情况下会用享元模式呢? 最常见的就是word文档里面,输入因为字母的时候字母的使用频率非常的频繁。这样就使用享元模式。
有很多很小的对象他们有很多相同的内容,那就把他们变成一个对象,把不同的东西变成外部的属性,作为方法的参数传入。这个就是享元模式。

静态导入
普通的import语句导入时导入某个类或者某个包下的所有的类。导入不占用资源。
静态导入的意思是:
所谓导入一个静态导入就是当我们要用到一个类里面的静态方法时,我们不需要导入这个类,我们可以直接导入这个类里面的静态方法。
静态导入的语法是: import static 类.方法;  或者 import static 类.方法;导入全部的静态方法。
例子如下:
import static java.lang.Math.max;

public class StaticImport {
 
 public static void main(String[] args) {
  System.out.println(max(3,6));
  
 }
 
}
当我们要用Math里面的静态方法max,我们可以不用导入这个类,直接导入这个类里面的静态方法import static java.lang.Math.max;
还可以导入这个类里面的所有方法:import static java.lang.Math.*;

import static java.lang.Math.*;

public class StaticImport {
 
 public static void main(String[] args) {
  System.out.println(max(3,6));
  System.out.println(abs(3,6));
 }
 
}

静态导入的意思是:
所谓导入一个静态导入就是当我们要用到一个类里面的静态方法时,我们不需要导入这个类,我们可以直接导入这个类里面的静态方法。
静态导入的语法是: import static 类.方法;  或者 import static 类.方法;导入全部的静态方法。
例子如下:
import static java.lang.Math.max;

public class StaticImport {
 
 public static void main(String[] args) {
  System.out.println(max(3,6));
  
 }
 
}
当我们要用Math里面的静态方法max,我们可以不用导入这个类,直接导入这个类里面的静态方法import static java.lang.Math.max;
还可以导入这个类里面的所有方法:import static java.lang.Math.*;

import static java.lang.Math.*;

public class StaticImport {
 
 public static void main(String[] args) {
  System.out.println(max(3,6));
  System.out.println(abs(3,6));
 }
 
}

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值