Java应用小实例总结

1.1    建造者模式

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

 

   public static class Builder{

      private AlertDialog dialog;

      public Builder(){

        dialog = new AlertDialog();

      }

      /*

      public void setIcon(int icon){

        dialog.icon = icon;

      }*/

      public Builder setTitle(String title){

        dialog.title = title;

        return this;

      }

      public Builder setMessage(String message){

        dialog.message = message;

        return this;

      }

      public Builder setIcon(int icon){

        dialog.icon = icon;

        return this;

      }

      public AlertDialog create(){

        return dialog;

      }

   }

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 Listener listener;   //聚合、组合

   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 Weapon weapon;    //聚合,组合

   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();

      boolean flag =true;

      for(int i=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(int i=0;i<array.length;i++){

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

      }

   }

 

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

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

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

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

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

              int temp = 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(int i=0;i<array.length;i++){

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

      }

   }

  

   public static void sort(int[] arr){

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

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

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

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

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

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

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

           }

        }

        if(minIndex != i){

           int temp = 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(int i=0;i<array.length;i++){

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

      }

   }

public static void sort(int[] arr){

   //

   for(int i=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(int i=ni-1;i>=0;i--){

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

      }

   }

}

  • 8
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值