zoukankan      html  css  js  c++  java
  • Java经典例子

    1.一个饲养员给动物喂食物的例子体现JAVA中的面向对象思想,接口(抽象类)的用处

    package com.softeem.demo;


    interface Animal {
        public void eat(Food food);
    }


    class Cat implements Animal {
        public void eat(Food food) {
            System.out.println("小猫吃" food.getName());
        }
    }


    class Dog implements Animal {
        public void eat(Food food) {
            System.out.println("小狗啃" food.getName());
        }
    }


    abstract class Food {
        protected String name;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name name;
        }
    }


    class Fish extends Food {
        public Fish(String name) {
            this.name name;
        }
    }


    class Bone extends Food {
        public Bone(String name) {
            this.name name;
        }
    }


    class Feeder {
        
        public void feed(Animal animal, Food food) {
            animal.eat(food);
        }
    }


    public class TestFeeder {
        public static void main(String[] args) {
            Feeder feeder new Feeder();
            Animal animal new Dog();
            Food food new Bone("肉骨头");
            feeder.feed(animal, food); //给狗喂肉骨头
            animal new Cat();
            food new Fish("鱼");
            feeder.feed(animal, food); //给猫喂鱼
        }
    } 

    2.做一个单子模式的类,只加载一次属性文件

    package com.softeem.demo;

    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.Properties;


    public class Singleton {

        private static Singleton instance;
        private static final String CONFIG_FILE_PATH "E:\\config.properties";
        private Properties config;

        private Singleton() {
            config new Properties();
            InputStream is;
            try {
                is new FileInputStream(CONFIG_FILE_PATH);
                config.load(is);
                is.close();
            catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

        public static Singleton getInstance() {
            if (instance == null{
                instance new Singleton();
            }
            return instance;
        }

        public Properties getConfig() {
            return config;
        }

        public void setConfig(Properties config) {
            this.config config;
        }
    }

    3.用JAVA中的多线程示例银行取款问题

    package com.softeem.demo;


    class Account {
        private float balance 1000;

        public float getBalance() {
            return balance;
        }

        public void setBalance(float balance) {
            this.balance balance;
        }

        
        public synchronized void withdrawals(float money) {
            if (balance >= money) {
                System.out.println("被取走" money "元!");
                try {
                    Thread.sleep(1000);
                catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                balance -= money;
            else {
                System.out.println("对不起,余额不足!");
            }
        }
    }


    class TestAccount1 extends Thread {
        private Account account;

        public TestAccount1(Account account) {
            this.account account;
        }

        @Override
        public void run() {
            account.withdrawals(800);
            System.out.println("余额为:" account.getBalance() "元!");
        }
    }


    class TestAccount2 extends Thread {

        private Account account;

        public TestAccount2(Account account) {
            this.account account;
        }

        @Override
        public void run() {
            account.withdrawals(700);
            System.out.println("余额为:" account.getBalance() "元!");
        }
    }

    public class Test {
        public static void main(String[] args) {
            Account account new Account();
            TestAccount1 testAccount1 new TestAccount1(account);
            testAccount1.start();
            TestAccount2 testAccount2 new TestAccount2(account);
            testAccount2.start();
        }
    } 

    4.用JAVA中的多线程示例生产者和消费者问题

    package com.softeem.demo;

    class Producer implements Runnable {
        private SyncStack stack;

        public Producer(SyncStack stack) {
            this.stack stack;
        }

        public void run() {
            for (int 0stack.getProducts().length; i++) {
                String product "产品" i;
                stack.push(product);
                System.out.println("生产了: product);
                try {
                    Thread.sleep(200);
                catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }

    }

    class Consumer implements Runnable {
        private SyncStack stack;

        public Consumer(SyncStack stack) {
            this.stack stack;
        }

        public void run() {
            for (int 0stack.getProducts().length; i++) {
                String product stack.pop();
                System.out.println("消费了: product);
                try {
                    Thread.sleep(1000);
                catch (InterruptedException e) {
                    e.printStackTrace();
                }

            }

        }
    }

    class SyncStack {
        private String[] products new String[10];
        private int index;

        public synchronized void push(String product) {
            if (index == product.length()) {
                try {
                    wait();
                catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            notify();
            products[index] product;
            index++;
        }

        public synchronized String pop() {
            if (index == 0{
                try {
                    wait();
                catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            notify();
            index--;
            String product products[index];
            return product;
        }

        public String[] getProducts() {
            return products;
        }

    }

    public class TestProducerConsumer {

        public static void main(String[] args) {
            SyncStack stack new SyncStack();
            Producer new Producer(stack);
            Consumer new Consumer(stack);

            new Thread(p).start();
            new Thread(c).start();
        }
    }

    5.编程实现序列化的Student(sno,sname)对象在网络上的传输

    package com.softeem.demo;

    import java.io.IOException;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;
    import java.io.Serializable;
    import java.net.ServerSocket;
    import java.net.Socket;

    class Student implements Serializable {
        private int sno;
        private String sname;

        public Student(int sno, String sname) {
            this.sno sno;
            this.sname sname;
        }

        public int getSno() {
            return sno;
        }

        public void setSno(int sno) {
            this.sno sno;
        }

        public String getSname() {
            return sname;
        }

        public void setSname(String sname) {
            this.sname sname;
        }

        @Override
        public String toString() {
            return "学号:" sno ";姓名:" sname;
        }
    }

    class MyClient extends Thread {
        @Override
        public void run() {
            try {
                Socket new Socket("localhost"9999);
                ObjectInputStream ois new ObjectInputStream(s.getInputStream());
                Student stu (Student) ois.readObject();
                String msg "客户端程序收到服务器端程序传输过来的学生对象>> stu;
                System.out.println(msg);
                ois.close();
                s.close();
            catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            catch (ClassNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }

    class MyServer extends Thread {

        @Override
        public void run() {
            try {
                ServerSocket ss new ServerSocket(9999);
                Socket ss.accept();
                ObjectOutputStream ops new ObjectOutputStream(s.getOutputStream());
                Student stu new Student(1"赵本山");
                ops.writeObject(stu);
                ops.close();
                s.close();
                ss.close();
            catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

    }

    public class TestTransfer {
        public static void main(String[] args) {
            new MyServer().start();
            new MyClient().start();
        }
    } 

    11.写一个方法,用一个for循环打印九九乘法表
      
      publicvoid nineNineMultiTable()
      {
      for (int 1,j 1; <= 9; i++) {
      System.out.print(i+"*"+j+"="+i*j+" ");
      if(i==j)
      {
      i=0;
      j++;
      System.out.println();
      }
      }
      }
    12.给定一个java.util.Date对象,如何转化为”2007-3-22 20:23:22”格式的字符串

      public String dateToStr(java.util.Date date)
      {
      SimpleDateFormat sdf new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
      String str sdf.format(date);
      return str;
      }
    13.写一个方法,能够判断任意一个整数是否素数

      publicboolean isPrimes(int n)
      {
      for (int 2; <= Math.sqrt(n); i++) {
      if(n%i==0)
      {
      returnfalse;
      }
      }
      returntrue;
      }
    14.写一个方法,输入任意一个整数,返回它的阶乘

      publicint factorial(int n)
      {
      //递归
      if(n==1)
      {
      return 1;
      }
      return n*factorial(n-1);
      //非递归
    // int multi 1;
    // for (int 2; <= n; i++) {
    // multi*=i;
    // }
    // return multi;
      }
    15.写一个方法,用二分查找法判断任意整数在任意整数数组里面是否存在,若存在就返回它在数组中的索引位置,不存在返回-1

      publicint binarySearch(int[] dataset,int data,int beginIndex,int endIndex)
      {
      int midIndex (beginIndex+endIndex)/2;
      if(data<dataset[beginIndex]||data>dataset[endIndex]||beginIndex>endIndex)return -1;
      if(data<dataset[midIndex])
      {
      return binarySearch(dataset,data,beginIndex,midIndex-1);
      }elseif(data>dataset[midIndex])
      {
      return binarySearch(dataset,data,midIndex+1,endIndex);
      }else
      {
      return midIndex;
      }
      }
        
      
      publicint binarySearch(int[] dataset ,int data)
      {
      int beginIndex 0;   
      int endIndex dataset.length 1;   
      int midIndex -1;  
      if(data<dataset[beginIndex]||data>dataset[endIndex]||beginIndex>endIndex)return -1;
      while(beginIndex <= endIndex)  
      midIndex (beginIndex+endIndex)/2;
      if(data<dataset[midIndex])   
      endIndex midIndex-1;   
      elseif(data>dataset[midIndex])   
      beginIndex midIndex+1;   
      }else
      {
      return midIndex;
      }
      }
      return -1;
      }

  • 相关阅读:
    poj 2528 Mayor's posters (线段树+离散化)
    poj 1201 Intervals (差分约束)
    hdu 4109 Instrction Arrangement (差分约束)
    poj 1195 Mobile phones (二维 树状数组)
    poj 2983 Is the Information Reliable? (差分约束)
    树状数组 讲解
    poj 2828 Buy Tickets (线段树)
    hdu 1166 敌兵布阵 (树状数组)
    Ubuntu网络配置
    Button控制窗体变量(开关控制灯的状态)
  • 原文地址:https://www.cnblogs.com/liuzhuqing/p/7480785.html
Copyright © 2011-2022 走看看