回忆一下昨天所学。昨天主要学习了Java中的函数,以及面向对象的一些知识。
1.Person p = new Person("张三",25);
这句话,java是如何执行的?
(1)加载Person.class到内存中
(2)执行static代码块初始化类,有的话
(3)开辟内存,初始化成员变量
(4)显示初始化成员变量
(5)构造代码块执行
(6)对应对象的构造函数初始化
2.static关键字的用法,在函数中没有使用到类的特有变量的时候
注意,static函数只能调用static变量或函数
3.this语句
(1)用来区分内部变量和外部变量同名问题
(2)本类构造函数间调用
4.学会制作文档说明书
文档注释
/**
XXXXXXX
@author zhangsan
@version 1.1
*/
/**
@param s
*/
5.java中的23种设计模式,了解其中的单例模式
6.数组的一些使用注意点,越界问题,遍历,查找,
1 /* 2 练习一下类 3 */ 4 5 class Person 6 { 7 { 8 System.out.println("person start!!"); //构造块 9 } 10 private String name; 11 private int age; 12 Person() 13 { 14 System.out.println("i am a person!"); 15 } 16 Person(String name,int age) 17 { 18 this(); //调用Person() 19 this.name = name; 20 this.age = age; 21 } 22 public void setAge(int age) 23 { 24 this.age = age; 25 } 26 27 public int getAge() 28 { 29 return age; //this.age 30 } 31 32 } 33 34 class Exercise3 35 { 36 public static void main(String []args) 37 { 38 Person p = new Person(); 39 System.out.println(p.getAge()); 40 41 Person p1 = new Person("zhangsan",20); 42 System.out.println(p1.getAge()); 43 44 p1.setAge(25); 45 System.out.println(p1.getAge()); 46 } 47 }
1 /* 2 练习1:定义一个数组,输出数组中的最大值和最小值 3 思路:将第一个值设为最大值和最小值。 4 遍历数组 5 6 练习2:对数组进行排序 7 **排序中最快的是希尔排序 8 */ 9 class ArrayExercise1 10 { 11 public static void main(String []args) 12 { 13 //练习1 14 int[] arry = new int[]{23,12,4,45,9,36}; 15 int max = arry[0]; 16 int min = arry[0]; 17 for(int i = 1;i < arry.length;i++) 18 { 19 if(arry[i]>max) 20 { 21 max = arry[i]; 22 } 23 if(arry[i]<min) 24 { 25 min = arry[i]; 26 } 27 } 28 System.out.println("max="+max+"\nmin="+min); 29 30 //输出原数组 31 printArray(arry); 32 //选择排序 33 sortArray(arry); 34 printArray(arry); 35 36 //冒泡排序 37 bubbleSort(arry); 38 printArray(arry); 39 } 40 41 //练习2 42 //选择排序 43 public static void sortArray(int[] arry) 44 { 45 for(int i=0;i<arry.length-1;i++) //排序的次数 46 { 47 for(int j=i+1;j<arry.length;j++) 48 { 49 if(arry[j]<arry[i]) 50 { 51 int temp; 52 temp = arry[i]; 53 arry[i] = arry[j]; 54 arry[j] = temp; 55 } 56 } 57 } 58 } 59 60 //冒泡排序 61 public static void bubbleSort(int[] a) 62 { 63 for(int i=0;i<a.length-1;i++) 64 { 65 for(int j=0;j<a.length-i-1;j++) 66 { 67 if(a[j]>a[j+1]) 68 { 69 int temp; 70 temp = a[j]; 71 a[j] = a[j+1]; 72 a[j+1] = temp; 73 } 74 } 75 } 76 } 77 78 //输出数组 79 public static void printArray(int[] a) 80 { 81 for(int i=0;i<a.length;i++) 82 { 83 System.out.print(a[i]+" "); 84 } 85 System.out.println(); 86 } 87 }
1 /* 2 数组的学习。 3 java中的内存分为5个区域。现在先了解栈和堆。 4 main中定义的变量都存放在栈中,而用new分配的内存在堆中。 5 栈中的内存会自动释放,而堆中的内存由java的垃圾回收机制来释放。 6 */ 7 class ArrayStudy 8 { 9 public static void main(String []args) 10 { 11 /* 12 int[] a = new int[5]; 13 System.out.println(a[0]); 14 */ 15 int[] b = new int[]{1,2,3,4,5}; 16 printArray(b); 17 18 System.out.println(); 19 20 int[] c = {2,4,6,8}; 21 printArray(c); 22 } 23 24 //用函数输出数组中的所有元素 25 public static void printArray(int[] arr) 26 { 27 int index; //定义索引 28 for(index=0;index<arr.length;index++) 29 { 30 System.out.println("["+index+"]="+arr[index]); 31 } 32 } 33 }
1 /* 2 练习:十进制转换成二进制,16进制(查表法) 3 4 int[][] a = new int[3][] //要注意 5 */ 6 7 class Exercise2 8 { 9 public static void main(String []args) 10 { 11 //toHex(60); 12 int[][] a = new int[2][]; 13 System.out.println(a); 14 System.out.println(a[0]); 15 System.out.println(a[0][0]);//空指针异常!! 16 } 17 /* 18 输入60的16进制 19 每4位二进制是一位16进制 20 */ 21 public static void toHex(int num) 22 { 23 char[] c = {‘0‘,‘1‘,‘2‘,‘3‘, //查找表 24 ‘4‘,‘5‘,‘6‘,‘7‘, 25 ‘8‘,‘9‘,‘a‘,‘b‘, 26 ‘c‘,‘d‘,‘e‘,‘f‘,}; 27 char[] res = new char[32]; //存放结果 28 29 int pos = res.length; //存放的位置 30 31 while(num!=0) 32 { 33 int temp = num & 15; //得到末4位 34 res[--pos] = c[temp]; //将末4位转换成16进制,并存入res[] 35 //另一种方法,char(temp-10+‘a‘) 36 num = num >>> 4; 37 //右移4位,左边补0,与最高位无关。 38 } 39 40 //输出结果 41 for(int i = pos;i<res.length;i++) 42 System.out.print(res[i]); 43 System.out.println(); 44 } 45 }
深刻理解单例模式
1 /* 2 单例模式:在内存中只能有一个对象 3 */ 4 5 class Single 6 { 7 private Single() 8 { 9 System.out.println("单例模式!"); 10 } //私有构造函数,外部无法生成对象 11 private static Single s = new Single(); //成员变量都申明成私有 12 public static Single getSingle() //保证单例,只能用类来调用 13 { 14 return s; //要访问s,s也必须为static 15 } 16 /* 17 其他方法 18 */ 19 } 20 21 class SingleDemo 22 { 23 public static void main(String []args) 24 { 25 Single s1 = Single.getSingle(); 26 /* 27 其他操作 28 */ 29 } 30 }