标签:
一、静态的应用一:
比如数组工具类:
每个应用程序中都有共性的功能,可以将这些功能进行抽取,独立封装以便复用
虽然可以通过建立ArrayTool的对象使用这些工具方法对数组进行操作
但是:
1.对象是用于封装数据的,可是ArrayTool对象并没封装特有数据(没有成员变量)。
2.操作数组的每一个方法都没有用到ArrayTool对象中的特有数据
这时就考虑,让程序更严谨,是不需要对象的,可以将ArrayTool中的方法都定义成static的,直接用类名调用
将方法都静态后,可以方便于使用,但是该类还是可以被其他程序建立对象的
为了更为严谨,强制让该类不可以建立对象,可以通过将构造函数私有化
制作程序说明书:通过java文档注释来完成 要制作成java文档必须将类用public修饰
怎么将说明书编译出来: javadoc -d .(表示当前目录,也可以指定其他目录(如果没有会自动创建)) -author -version ArrayTool.java
1 /** 2 这是一个可以对数组进行操作的工具类,该类中提供了,获取最值,排序等功能 3 @author 黄剑飞 4 @version V1.1 5 */ 6 //数组工具 用于操作数组的工具类 7 public class ArrayTool{ 8 /** 9 空参数构造函数 10 */ 11 private ArrayTool(){}//每个类都有个默认的构造函数,将构造函数私有化,强制不能建立对象 12 /** 13 获取整形数组中的最大值。 14 @param arr 接受一个int类型的数组 15 @return 会返回一个数组中最大值 16 */ 17 public static int getMax(int[] arr){ 18 int max=0; 19 for (int x=1;x<arr.length ;x++ ){ 20 if(arr[x]>arr[max]) 21 max=x; 22 } 23 return arr[max]; 24 } 25 /** 26 获取整形数组中的最小值。 27 @param arr 接受一个int类型的数组 28 @return 会返回一个数组中最小值 29 */ 30 public static int getMin(int[] arr) { 31 int min=0; 32 for (int x=1;x<arr.length ;x++ ){ 33 if(arr[x]<arr[min]) 34 min=x; 35 } 36 return arr[min]; 37 } 38 39 /** 40 给int数组进行选择排序 41 @param arr 接受一个int类型的数组 42 */ 43 public static void selectSort(int[] arr){ 44 for (int x=0 ;x<arr.length-1 ;x++ ){ 45 for (int y=x+1;y<arr.length ;y++ ){ 46 if(arr[x]>arr[y]){ 47 swap(arr,x,y); 48 } 49 } 50 } 51 } 52 53 /** 54 给int数组进行冒泡排序 55 @param arr 接受一个int类型的数组 56 */ 57 public static void bubbleSort(int[] arr){ 58 for (int x=0;x<arr.length-1 ;x++ ){ 59 for (int y=0;y<arr.length-x-1 ;y++ ){ 60 if(arr[y]>arr[y+1]){ 61 swap(arr,y,y+1); 62 } 63 } 64 } 65 } 66 67 68 /** 69 给数组中的元素进行位置的置换 70 @param arr 接受一个int类型的数组 71 @param a 要置换的位置 72 @param b 要置换的位置 73 */ 74 private static void swap(int[] arr,int a,int b){ 75 int temp=arr[a]; 76 arr[a]=arr[b]; 77 arr[b]=temp; 78 } 79 80 /** 81 用于打印数组中的元素。打印形式是:[element1,element2,......] 82 */ 83 public static void printArray(int[] arr){ 84 System.out.print("["); 85 for(int x=0;x<arr.length;x++) 86 { 87 if(x!=arr.length-1) 88 System.out.print(arr[x]+", "); 89 else 90 System.out.println(arr[x]+"]"); 91 } 92 } 93 } 94 //默认的构造函数的权限是随着类的改变而该变的,即如果类被public修饰,那么默认的构造函数也带public修饰
1 public class ArrayToolDemo { 2 public static void main(String[] args) { 3 int[] arr={3,3,4,5,6,7,68,34,9}; 4 int max=ArrayTool.getMax(arr);//直接用类名调用 5 System.out.println("max="+max); 6 } 7 }
二、静态应用二:
有一群小孩在玩堆雪人,不时有新的小孩加入,请问如何知道现在共有多少人在玩
请用面对对象的思想,编写程序解决
1 public class StaticTest { 2 public static void main(String[] args) { 3 Child d1 = new Child(3,"niuniu"); 4 d1.joinGame(); 5 6 Child d2 = new Child(2,"meimei"); 7 d2.joinGame(); 8 9 Child d3 = new Child(5,"yuanyuan"); 10 d3.joinGame(); 11 System.out.println("共有="+Child.num); 12 } 13 } 14 class Child{ 15 int age; 16 String name; 17 static int num = 0; 18 19 public Child(int age,String name){ 20 this.age = age; 21 this.name = name; 22 } 23 public void joinGame(){ 24 num++; 25 System.out.println("有个小孩加入了"); 26 } 27 }
javac *.java//可以编译当前目录下所有的.java文件
标签:
原文地址:http://www.cnblogs.com/LO-ME/p/3553334.html