1.静态导入(注意:这是1.5的新特性。1.5之前的版本一定会报错):
import可以导入一个包中的一个类或一个包中的所有类
Import可以导入一个类中的一个静态方法或所有静态方法
import static java.lang.Math.abs; import static java.lang.Math.*;
通过导入Math中的方法,可以再程序中使用abs方法时,不用加类名,直接使用
System.out.println("max="+max(num1,num2));
System.out.println("abs="+abs(num2-num1));
2.可变参数
一个方法的参数个数可以使不确定的,例:
add(num1,num2,num3);
add(num1,num2);
可变参数的特点:
只能出现在参数列表的最后
在调用可变参数方法时,编译器会为该方法创建隐含的创建一个数组,所以在调用时,在方法体中以数组的形式访问可变数组。
//可变数组的定义 public static int add(int num1,int...args) { int result=num1; for(int i=0;i<args.length;i++){ result=result+args[i]; } return result; } public static void main(String[] args) { int[] nums={1,1,1}; //可变数组的调用 System.out.println(add(1,nums)); }
3.for循环
for(type 变量名:集合变量名)
{
}
说明:
(1)迭代变量必须在()里面定义
(2)集合变量可以是数组或者实现了Iterable的集合类【hashMap类不可以使用】
(3)type前面还可以加修饰符 ,例:final
例:
public static int add(int num1,int...args) { int result=num1; /*for(int i=0;i<args.length;i++){ result=result+args[i]; }*/ for(int i:args) { result=result+i; } return result; }
4,基本数据类型的自动装箱与拆箱
在-128~127之间的整数,在new Integer时,是有一个池子,在池子中取这些对象【这里用到了享元模式的思想】
享元模式的详细介绍:http://www.cnblogs.com/excellencesy/p/8911003.html
Integer num1=1; Integer num=1; System.out.println(num==num1);
两个Integer是同一个对象
而:
Integer num1=1111; Integer num=1111; System.out.println(num==num1);
是两个不同的对象
Extend:
//两个String不是同一个对象 String str1=new String("abc"); String str2=new String("abc"); System.out.println(str1==str2);
每次new都是在创建新的对象
但是:
String str1="abc"; String str2="abc"; System.out.println(str1==str2);
两个String是同一个对象
extends:
Integer num1=Integer.valueOf(3);
Integer num=Integer.valueOf(3);
Integer valueOf(int num);这个静态方法,是手动的将int对象变成Integer。
这两个也是同一个对象
Integer num1=Integer.valueOf(333);
Integer num=Integer.valueOf(333);
这两个不是同一个对象
5,反射,这个在之前整理过:http://www.cnblogs.com/excellencesy/p/8868567.html
6,注解Annotation(很重要)