静态导入、可变参数、自动拆箱与装箱和享元模式
StaticImport 静态导入。
当类名重名时,需要指定具体的包名。
当方法重名时,指定具备所属的对象或者类。
当类名重名时,需要指定具体的包名。
当方法重名时,指定具备所属的对象或者类。
import后面跟Static时导入的是某个类的所有静态成员,导入后调用方法时可以省略类名。
import java.util.*;
import static java.util.Arrays.*;//导入的是Arrays这个类中的所有静态成员。
import static java.util.Collections.*;
import static java.lang.System.*;//导入了System类中所有静态成员。
class StaticImport //extends Object
{
public static void main(String[] args)
{
out.println("haha");
int[] arr = {3,1,5};
sort(arr);//Arrays.导入静态后省略
int index = binarySearch(arr,1);
out.println(Arrays.toString(arr));//不能省略Arrays.因为Object里面也有toString方法,所以需要指定
System.out.println("Index="+index);
ArrayList al = new ArrayList();
al.add(1);
out.println(al);
sort(al);
out.println(al);
}
可变参数:
public static int add(int x,int ...args)//...就是可变参数
可变参数的特点:
只能出现在参数列表的最后
...位于变量类型和变量之间,前后有无空格都可以
调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数
public static void main(String[] args)
{
// TODO Auto-generated method stub
System.out.println(add(1,2,3,5));
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 ( type 变量名:集合变量名 ) { … }
注意事项:
迭代变量必须在( )中定义!
集合变量可以是数组或实现了Iterable接口的集合类
举例:
for ( type 变量名:集合变量名 ) { … }
注意事项:
迭代变量必须在( )中定义!
集合变量可以是数组或实现了Iterable接口的集合类
举例:
public static int add(int x,int ...args)
{
int sum = x;
for(int arg:args)
{
sum += arg;
}
return sum;
}
自动拆箱与装箱
Integer x=4//自动装箱相当于Integer x=new Integer(4)
Integer x=4//自动装箱相当于Integer x=new Integer(4)
x=x+2;//x+2,x进行自动拆箱,变成了int类型。拆箱的过程相当于调用x.intvalue()和2进行加法运算,在将他们的和进行装箱赋给x.
Integer m = 129;
Integer n = 129;
System.out.println("m==n:"+(m==n));//结果为flase,因为越界开辟了新空间,因为byte的范围是-127—127.
享元模式
Integer m = 129;
Integer n = 129;
System.out.println("m==n:"+(m==n));//结果为flase,因为越界开辟了新空间,因为byte的范围是-127—127.
享元模式
将那些值比较小的整数、a-z,26个字母缓存起来放入常量池,当其他地方用到该常量或组成各个单词时,直接调用而不重新新建对象。
有很多小的对象,它们有很多属性相同,把它们变成一个对象,那些不同的属性把他们变成方法的参数称之为外部状态。那些相同的属性称之为对象的内部状态。
有很多小的对象,它们有很多属性相同,把它们变成一个对象,那些不同的属性把他们变成方法的参数称之为外部状态。那些相同的属性称之为对象的内部状态。