静态导入
·import 语句可以导入一个类或某个包中的所有类。·import static语句导入一个类中的某个静态方法或所有静态方法·语法举例: -import static java.lang.Math.sin; -import static java.lang.Math.*;
可变参数·问题:一个方法接受的参数个数不固定,例如: -System.out.println(add(2,3,5)); -System.out.println(add(1,2,3,5));·可变参数的特点: -只能出现在参数列表的最后。 -...位于变量类型和变量名称之间,前后有无空格都可以。 -调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数。package lqq.heima;
public class VariableParameter {
/** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub System.out.println(add(1, 2, 3)); System.out.println(add(1, 2, 3,5));
} public static int add(int x,int...args){ int sum = x; for(int i:args) { sum+=i; } return sum; }
}?overload vs override重载 重写增强for循环·语法: -for(type 变量名:集合变量名){...}·注意事项: -迭代变量必须在()中定义! -集合变量可以是数组或实现了iterable接口的集合类·举例:public static int add(int x,int...args){ int sum = x; for(int i:args) { sum+=i; } return sum; }
基本数据类型的自动拆箱与装箱·自动装箱: -Integer num1 =12;·自动拆箱: System.out.println(num1+12);·基本数据类型的对象缓存: Integer num1 =12; Integer num2 =12; System.out.println(num1==num2);--true
Integer num3 =129; Integer num4 =129; System.out.println(num3 == num4);--false
Integer num5 =Integer.valueOf(12); Integer num6 =Integer.valueOf(12); System.out.println(num5==num6);--true
Integer num7 =Integer.valueOf(212); Integer num8 =Integer.valueOf(212); System.out.println(num7==num8);--false
在对Integer对象的-128~127之间的数字的时候,使用了享元模式设计(flyweight),导致num1==num2 是true,即是同一个对象。有很多个小的对象,它们有很多属性相同,就把他们变成相同的对象,那些不同的属性把它变成方法的参数,称之为外部状态,那些相同的属性称之为这个对象的内部状态。package lqq.heima;
public class AutoBox {
/** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Integer num = 12; System.out.println(num + 12); Integer num1 =12; Integer num2 =12; System.out.println(num1==num2);
Integer num3 =129; Integer num4 =129; System.out.println(num3 == num4);
Integer num5 =Integer.valueOf(12); Integer num6 =Integer.valueOf(12); System.out.println(num5==num6);
Integer num7 =Integer.valueOf(212); Integer num8 =Integer.valueOf(212); System.out.println(num7==num8);
}
}运行结果:24truefalsetruefalse