Java入门的五个经典案例

这篇文章主要为大家详细介绍了5个JAVA入门必看的经典实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

入门必看的5个JAVA经典实例,供大家参考,具体内容如下

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

package com.softeem.demo;/***@author leno*动物的接口*/interface Animal { public void eat(Food food);}/***@author leno*一种动物类:猫*/class Cat implements Animal { public void eat(Food food) {  System.out.println("小猫吃" + food.getName()); }}/***@author leno*一种动物类:狗*/class Dog implements Animal { public void eat(Food food) {  System.out.println("小狗啃" + food.getName()); }}/***@author leno*食物抽象类*/abstract class Food { protected String name; public String getName() {  return name; } public void setName(String name) {  this.name = name; }}/***@author leno*一种食物类:鱼*/class Fish extends Food { public Fish(String name) {  this.name = name; }}/***@author leno*一种食物类:骨头*/class Bone extends Food { public Bone(String name) {  this.name = name; }}/***@author leno*饲养员类**/class Feeder { /**  *饲养员给某种动物喂某种食物  *@param animal  *@param food  */ public void feed(Animal animal, Food food) {  animal.eat(food); }}/***@author leno*测试饲养员给动物喂食物*/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;/*** @authorleno 单子模式,保证在整个应用期间只加载一次配置属性文件*/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;/***@author leno*账户类*默认有余额,可以取款*/class Account { private float balance = 1000; public float getBalance() {  return balance; } public void setBalance(float balance) {  this.balance = balance; } /**  *取款的方法需要同步  *@param money  */ 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("对不起,余额不足!");  } }}/***@author leno*银行卡*/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() + "元!"); }}/***@authorleno*存折*/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 i = 0; i < stack.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 i = 0; i < stack.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 p = new Producer(stack);  Consumer c = 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 s = 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 s = 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(); }}

以上就是Java入门的五个经典案例的详细内容,更多请关注其它相关文章!

是会眨眼的星星,而当火车弯曲而行,这些星群便上上下下的画着弧线,

Java入门的五个经典案例

相关文章:

你感兴趣的文章:

标签云: