华恩JAVA班第14天
初始化 变量{ 实例(成员)static 静态 局部 } 构造方法(初始化成员变量) 定义:名字与类名相同且没有返回值 public class Init1 { //定义一个构造方法 public Init1(){ System.out.println("Init1..."); } public Init1(String content){ System.out.println(content); } public static void main(String[] args) { for(int i =1;i<10;i++){ newInit1(); } for(int i =1;i<10;i++){ newInit1("abc"); } } }
构造方法的重载 public class Kaoshi { public static void main(String[] args) { Student stud1 = newStudent("张三","12345"); Student stud2 = newStudent("李四"); Student stud3 = newStudent("王五","123456","12345678");
} } class Student{ private String name; private String idcard; private String phone; public Student(String name,String idcard){ this(name); //方法之间的调用 this.idcard = idcard; } public Student(String name){ this.name = name; } public Student(String name,String idcard,Stringphone){ this(name,idcard);//方法之间的调用 this.phone = phone; } public void setName(String name){ this.name = name; } }
构造方法初始化顺序 public class Init3 { public static void main(String[] args) { House house = newHouse(); house.f(); } } class windows{ public Windows(int mark){ System.out.println(mark); } } class House{ //构造方法之前初始化 Windows window = new Windows(1); public House(){ window = new Windows(2); } Windows window2 = new Windows(3); public void f(); System.out.println("print.."); } 说明构造方法的代码块先执行 public class Init3 { public static void main(String[] args){ //测试静态数据的初始化 Table table0 = null; System.out.println("++++++++"); Table table1 = newTable(); System.out.println("********"); Table table2 = newTable(); System.out.println("!!!!!!!!"); new Cupboard(); } } class Row1{ Row1(int marker){ System.out.println("Row1"+marker); } void f1(int marker){ System.out.println("f1"+marker); } } class Table{ static { //静态块 System.out.println("staticblock..."); } static Row1 row1 = new Row1(1); Table(){ System.out.println("Table"); row2.f1(1); } void f2(int marker){ System.out.println("f2"+marker); } static Row1 row2 = new Row1(2); static { //静态块 System.out.println("staticblock..."); } } 说明static的代码只会在类一开始的时候执行一次,且只执行一次 静态块和静态太吗之间按顺序执行,且都优于构造方法执行 class Cupboard { Row1 row3 = new Row1(3); static Row1 row4 = new Row1(4); Cupboard(){ System.out.println("Cupboard"); row4.f1(2); } } 先执行静态代码 再执行一般代码 声明不会调用构造方法
静态成员可以直接调用 但必须先初始化
public class Init3{ public static void main(String[] args){ //new Cups(); //new Cups(); Cups.cup1.f1(1); Cups.cup1.f1(1); } } class Cup { int i = 0; Cup(int marker){ System.out.println("Cup"+marker); } void f1(int marker){ i++; System.out.println("f1"+marker); System.out.println("i = "+i); } } class Cups { //显示的静态初始化 static Cup cup1; static Cup cup2; static{ cup1 = new Cup(1); cup2 = new Cup(2); } Cups(){ cup1.f1(1); System.out.println("Cups..."); } } 实例变量初始化 public class Init3{ public static void main(String[] args){ for(inti=0;i<5;i++){ newMugs(); } } } class Mug { Mug(int marker){ System.out.println("Mug"+marker); } void f(int marker){ System.out.println("f"+marker); } } class Mugs { Mug mug1; Mug mug2; { mug1 = new Mug(1); mug2 = new Mug(2); System.out.println("mug1&mug2 init..."); } Mugs(){ System.out.println("Mugs"); } }
输出: Mug 1 Mug 2 mug1 &mug2 init... Mugs Mug 1 Mug 2 mug1 &mug2 init... Mugs Mug 1 Mug 2 mug1 &mug2 init... Mugs Mug 1 Mug 2 mug1 &mug2 init... Mugs Mug 1 Mug 2 mug1 &mug2 init... Mugs
数组的定义与遍历 public class Init3{ public static void main(String[] args){ float[] score = newfloat[30]; //值都是0 int[] age = new int[10]; String[] name = newString[30]; Float[] score1 = newFloat[30];
int[] a1 ={1,2,3,4,5,6}; String[] b1 ={"a","b","c"};
Emp[] emps = newEmp[5]; Emp[] emps2 = {newEmp("aa"),new Emp("bb"),null}; System.out.println("a1 ="+a1.length); System.out.println("emps2 ="+emps2.length); for(int i=0;i System.out.println(a1[i]); } for(Emp emp : emps2){ if(emp !=null){ System.out.println(emp.name); } } } } class Emp { String name; int age;
public Emp(String name){ this.name = name; } }
import: import java.util.Arrays; public class Init3{ public static void main(String[] args){ int[] a1 = {3,2,1,5,6,4}; int[] a2; a2 = a1; for(int i=0;i a2[i] =a2[i]+1; } for(int i=0;i System.out.println(a1[i]); } Emp[] emp1 = {new Emp("aa"),newEmp("bb")}; Emp[] emp2 = emp1; emp2[0].name = "aaaa"; Arrays.sort(a1); System.out.println(emp1[0].name); System.out.println(Arrays.toString(emp1)); System.out.println(Arrays.toString(a1)); } } 可变参数: public class NewVarArgs{ //可变参数 static void printArray(Object... args){ for(Object obj : args){ System.out.print(obj+""); } System.out.println(); } static void printArray(Integer... args){ for(Integer i : args){ System.out.print(i+""); } } public static void main(String[] args){ printArray(new Integer(1),newInteger(3)); printArray(1,3.0F,4.8d,"f"); printArray("a","b","c","d");
printArray(4,5,6); printArray(2,newInteger(8)); } } 枚举类型
//enum 枚举类型 enum Spiciness{ NOT,MILD,MEDTUM,HOT,FLAMING } enum Sex{ MEN,WOMEN } public class SimpleUse{ public static void main(String[] args){ Spiciness s =Spiciness.MEDTUM; System.out.println(s); Sex men = Sex.MEN; for(Sexsex:Sex.values()){ System.out.print(sex+""); } } }
