--------------------ASP.Net+Android+IOS开发、.Net培训、期待与您交流! --------------------
静态导入:导入的是静态的方法,这样在调用类的时候就可以不用写类名了,直接可以使用静态方法。
格式:import static 包名.类名.方法名;这是导入的是一个方法
import static 包名.类名.*;导入的是这个类中的所有静态方法。
普通的导入:导入的是类,调用其中的方法还得用类名或者是对象,格式:import 包名.类; 或者是 import 包名.*;
import static java.lang.Math.*;//导入的是静态方法 public class Demo { public static void main(String[] args) { System.out.println(abs(-1));//求绝对值 } }
可变参数是用…来表示的,其实里面封装了一个可变长度的数组。注意点:在定义参数的时候,一定要把其放到所有参数的后面。
public class Demo { public static void main(String[] args) { sum("求和:",2,3,4,5); sum("求和:",4,34); } public static void sum(String str,int ...ss ){ System.out.print(str); int sum=0; for(int s:ss) sum+=s; System.out.println(sum); } }
格式:for(类型 变量:集合变量)
此变量:必须实现了Iterator接口
只能读取,不能对其进行其他操作(修改,删除,增加)
String [] ss={"abc","123","de12"};
for(String s:ss)
System.out.println(s);
在-128~127之间,基本数据它们都共享同一个对象,这样使用的享元模式,这样可以节约资源,但是超过这个范围,那么他们就会创建新的对象。
public class Demo { public static void main(String[] args) { Integer a=28;//装箱,自动装箱把Int类型封装成了Integer Integer b=28; System.out.println(a==b);//true //a和b是共享同意个对象 Integer c=128; Integer d=128; System.out.println(c==d);//false //因为超出了-128~127范围,所以c和d不会共享同一个对象,是两个对象 Integer e=28; int f=e+12;//自动拆箱,Integer没有+的运算,使用的是int的+运算,所以是把Integer类型的转换成int类型,做的加法运算 } }
枚举类就是一个特殊的类,使用关键字enum来修饰类,enum 类名{},里面值规定了特有的几个对象,那么在获取的时候,也就这几个对象,不能是其他的对象。
abstract class EnumColor { /* * 其实也可以不使用内部类,把nextColor方法定义成普通方法,里面使用if~else进行判定 * 然后指定下一个颜色,但是那样比价麻烦,使用内部类替换了,这样更清晰,是enmu的特点 */ public final static EnumColor Black = new EnumColor() {// 定义的是成员变量,使用类内部类 public EnumColor nextColor() { return Red; } }; public final static EnumColor Red = new EnumColor() { public EnumColor nextColor() { return Blue; } }; public final static EnumColor Blue = new EnumColor() { public EnumColor nextColor() { return Black; } }; /* 构造方法私有化,防止其他类继承 */ private EnumColor() { } public abstract EnumColor nextColor(); public String toString() { return this == Black ? "Black" : (this == Red ? "Red" : "Blue"); } } public class Demo { public static void main(String[] args) { EnumColor red=EnumColor.Red;//红色 System.out.println("red.newColor():"+red.nextColor()); } } 结果: red.newColor():Blue
public class Demo { enum WeekDay { SUN, MON, TUE, WED, THU, FRI;// 最后的分号也可以不要,但是要是成员变量列表后面有信息的话,那么就必须加上分号,默认的调用无参构造方法 } public static void main(String[] args) { WeekDay mon=WeekDay.MON; WeekDay sun=WeekDay.valueOf("SUN");//将字符串转换成枚举类型 WeekDay []days=WeekDay.values();//获得枚举中的所有对象 System.out.println(days.length);//6 } }
public enum TrafficLamp { RED(30) { public TrafficLamp nextLamp() { return GREEN; } }, GREEN(40) { public TrafficLamp nextLamp() { return YELLOW; } }, YELLOW(10) { public TrafficLamp nextLamp() { return RED; } };// 这里必须加分号:因为后面有语句,默认的调用无参构造方法 private TrafficLamp() { } private TrafficLamp(int time) { this.time = time; } private int time; public abstract TrafficLamp nextLamp();//抽象方法,在变量后使用内部类来重写 public String toString(){//重写toString()方法 return this == RED ? "RED" : (this == GREEN ? "GREEN" : "YELLOW"); } } public class Demo { public static void main(String[] args) { System.out.println(TrafficLamp.GREEN.nextLamp()); } } 结果: YELLOW
注意点:
1. 在枚举成员变量列表前面不能加任何语句。
2. 枚举的构造方法必须是私有的(private),为了是枚举类不能被继承
3. 当变量后什么也没有的话,那么就是默认的调用无参的构造方法,当调用自定义的构造方法的时候格式:变量(参数)
4. 也可以定义抽象方法,那么就使用内部类,在成员变量后面重写即可.使用内部类来实现其抽象方法。
5. 假如枚举中只有一个成员的话,那么就可以看作单例模式。
6. 在类中要是有抽象方法,必须要定义成抽象方法
但是如果在枚举中有抽象方法的话,不用定义成抽象的。
--------------------ASP.Net+Android+IOS开发、.Net培训、期待与您交流! --------------------