Java应用小实例总结

来源:互联网 发布:苏珊大妈 知乎 编辑:程序博客网 时间:2024/04/30 05:41

1.1    建造者模式

【静态内部类的引用------Builder构建器】

 

   public static class Builder{

      private AlertDialogdialog;

      public Builder(){

        dialog = new AlertDialog();

      }

      /*

      public void setIcon(int icon){

        dialog.icon = icon;

      }*/

      public Builder setTitle(Stringtitle){

        dialog.title =title;

        return this;

      }

      public Builder setMessage(Stringmessage){

        dialog.message =message;

        return this;

      }

      public Builder setIcon(inticon){

        dialog.icon =icon;

        return this;

      }

      public AlertDialog create(){

        returndialog;

      }

   }

Builder b= newAlertDialog.Builder();

      AlertDialog dialog =b.setIcon(1000)

           .setTitle("千锋")

           .setMessage("我在加班")

           .create();

      System.out.println(dialog);     //建造者模式

1.2    接口回调与事件监听

【1:

//监听器接口

public interface Listener {

   //抽象方法,一点击就....

   void onClick();

}

2:

public class MyListener implements Listener {

   public void onClick() {

      System.out.println("访问服务器");

   }

}

3:

public class Button {

   private Listenerlistener;   //聚合、组合

   public void setListener(Listener listener) {

      this.listener =listener;

   }

   //模拟按键被用户手指点击触发,就去执行监听器的逻辑

   public void drive(){

      listener.onClick();//调用逻辑部件、监听器的onClick逻辑

   }

}

4:测试

Button button = new Button();//视图 按钮

      MyListener listener = new MyListener();//逻辑点击后该怎么做

      Cat cat = new Cat();

      button.setListener(listener);//逻辑组装到视图

      button.drive();//驱动按钮,模拟用户点击

 

 

1.3    反射机制实现低耦合代码

1:

public class Human {

   private Weaponweapon;    //聚合,组合

   public void setWeapon(Weapon weapon){

      this.weapon =weapon;

   }

   public void attack(){

weapon.attack();        //多态,向上转型子类对象,调用从父类复//写的方法

   }

}

2:

BufferedReader br = new BufferedReader(new FileReader("asad/config.txt"));

        String line = br.readLine();

        Class clz = Class.forName(line);

        Weapon w = (Weapon)clz.newInstance();

        Human h = new Human();

        h.setWeapon(w);

        h.attack();

1.4    回文字符判定

//上海自来水来自海上

   //黄山落叶松叶落山黄

   public static void main(String[] args) {

      // TODO Auto-generatedmethod stub

      String line = new Scanner(System.in).nextLine();

      //将字符串转为字符数组

      char[] array = line.toCharArray();

      booleanflag =true;

      for(inti=0;i<array.length/2;i++){ //除以2可以进行优化

//      System.out.println(array[i]);

        if(array[i] !=array[array.length-i-1]){

           flag=false;

           break;

        }

      }//写一个判断用户输入是否回文程序

 

        if(flag){

          System.out.println("是回文");

        }

        else{

          System.out.println("不是回文");

        }

   }

 

1.5    冒泡排序

 

   public static void main(String[] args) {

      // TODO Auto-generatedmethod stub

      int[] array ={2,8,1,9,5,7};

      sort(array);

      for(inti=0;i<array.length;i++){

        System.out.println(array[i]);

      }

   }

 

   public static void sort(int[]arr){//排序算法

      for(intj=0;j<arr.length-1;j++){

        for(inti=0;i<arr.length-1-j;i++){

        //如果当前元素比右边的元素大

            if(arr[i]>arr[i+1]){

              inttemp = arr[i];

              arr[i] =arr[i+1];

              arr[i+1] =temp;

           }

        }

      }

     

   }

1.6    选择排序

        

   public static void main(String[] args) {

      // TODO Auto-generatedmethod stub

      int[] array ={6,3,2,5,4,9,1};

      sort(array);

      for(inti=0;i<array.length;i++){

        System.out.println(array[i]);

      }

   }

  

   public static void sort(int[]arr){

      for(inti=0;i<arr.length-1;i++){

        int minIndex = i;//每次外层循环都把i作为默认最小值下标

        //遍历默认最小值右边的子数组,遍历到最后

        for(intj=i+1;j<arr.length;j++){

           //如果扫描到的当前值比

           if(arr[j] <arr[minIndex]){

              minIndex = j;//最小值下标就改为当前元素的下标

           }

        }

        if(minIndex !=i){

           inttemp = arr[minIndex];

           arr[minIndex] =arr[i];

           arr[i] =temp;

        }

      }

   }

 

1.7    插入排序

   public static void main(String[] args) {

      // TODO Auto-generatedmethod stub

      int[] array ={6,3,2,5,4,9,1};

      sort(array);

      for(inti=0;i<array.length;i++){

        System.out.println(array[i]);

      }

   }

public static void sort(int[]arr){

   //

   for(inti=1;i<arr.length;i++){

   //每一次循环先把插入的值拿出来,也就是将其值赋给一个临时变量,临时保存下

      int temp = arr[i];

      //往左扫描,左边无东西扫描时停止循环

      int j;

      for(j=i;j>0;j--){

        if(arr[j-1]>temp){//如果扫描到的数字比要插入的数字大

        //往右拨,确切说往右赋值一份,或者说右边的数的值=左边的数

           arr[j] =arr[j-1];

        }

        else{//如果扫描到的数字比要插入的数字小

           break;

        }

      }

      arr[j] =temp;

   }

}

 

1.8    二进制数

【倒序输出情况:

1.输入一个数,输出它的二进制(倒序) */

import java.util.Scanner;

public class Test8{

         publicstatic void main(String[] args){

                   Scanners = new Scanner(System.in);

                   intnum = s.nextInt();

                   intyu = 0;

                   while(num>0){

                            yu= num%2;

                            num= num/2;              

                            System.out.print(yu);

                   }

                  

                   for(;n!=0;n/=2){

                            System.out.print(n%2);

                   }

                  

         }

}

【二进制顺序输出:

//二、让用户输入一个10进制数,打印出相应的二进制数(顺序)

 

public class Home2 {

 

   public static void main(String[] args) {

      int num = new Scanner(System.in).nextInt();

      int ni=0;

      int[] array = new int[50];    

      for(;num!=0;num/=2){

        array[ni]=num%2;

        ni++;

      }

      for(inti=ni-1;i>=0;i--){

        System.out.print(array[i]);

      }

   }

}

4 0
原创粉丝点击