• 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;
      }

  • 相关阅读:
    JavaScript中的数据类型转换
    JavaScript中的变量
    set_uid set_gid stick_bit 软硬链接
    chmod、chown、umask、lsattr/chattr
    环境变量、cp、mv、cat 等命令
    相对和绝对路径 mkdir cd rm 等命令
    linux 系统 目录,以部分及相关命令
    单用户模式 和救援模式 、以及相互登陆(免密)
    putty 、xshell的使用 和 putty 、xshell、 shell 间免密登陆
    vmware NAT 网络出现问题的解决方法
  • 原文地址:https://www.cnblogs.com/liuzhuqing/p/7480786.html
Copyright © 2020-2023  润新知