首页 > 代码库 > Java学习03

Java学习03

  回忆一下昨天所学。昨天主要学习了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.age30     }31 32 }33 34 class Exercise335 {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 ArrayExercise110 {11     public static void main(String []args)12     {13         //练习114         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也必须为static15     }16     /*17         其他方法18     */19 }20 21 class SingleDemo22 {23     public static void main(String []args)24     {25         Single s1 = Single.getSingle();26         /*27             其他操作28         */29     }30 }