入门必看的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 经典 实例_5个JAVA入门必看的经典实例相关推荐

  1. c#语言经典程序100例,C#入门必看的实例程序100个 - 源码下载|Windows编程|其他小程序|源代码 - 源码中国...

    C#入门必看的实例程序100个\实例01\01.bmp C#入门必看的实例程序100个\实例01\csc编译器路径.txt C#入门必看的实例程序100个\实例01\hello.cs C#入门必看的实 ...

  2. java编程、语言学习,入门必看(上)

    [尚学堂]Java300集零基础适合初学者视频教程_Java300集零基础教程_Java初学入门视频基础巩固教程_Java语言入门到精通_哔哩哔哩_bilibili 一.初识Java 1.生活中的程序 ...

  3. 经济学入门必看:绝对经典的20部影片_ywyuan_新浪博客

    经济学入门必看:绝对经典的20部影片!据称看了这20部电影相当于读完北大经济学院.光华管理学院.清华经管学院. 在复杂的商业社会,你想创业,不懂经济.不懂商业.不懂人情世故.不懂法律边沿,你只有勇气. ...

  4. 怎么安装python_零基础入门必看篇:浅析python,PyCharm,Anaconda三者之间关系

    今天为大家带来的内容是:零基础入门必看篇:浅析python ,PyCharm,Anaconda三者之间关系 众所周知,Python是一种跨平台的计算机程序设计语言,简单来说,python就是类似于C, ...

  5. IntelliJ IDEA 最常用配置详细图解,新手入门必看

    转载自   IntelliJ IDEA 最常用配置详细图解,新手入门必看 刚刚使用IntelliJ IDEA 编辑器的时候,会有很多设置,会方便以后的开发,磨刀不误砍柴工. 比如:设置文件字体大小,代 ...

  6. JavaScript基础教程——入门必看篇

    JavaScript他是一种描述性语言,其实他并不难学,只要用心学,一定会学好,我相信大家在看这篇文章的时候,一定也学过HTML吧,使用JavaScript就是为了能和网页有更好的交互,下面切入主题. ...

  7. python基础教程书籍推荐-初学者python入门必看书籍推荐(上)

    随着最近Python的热度上涨,学习的人数也在增多,也因为Python这门语言的简短.易学.语言优美的优点,吸引了很多人来学习它.初学者想要入门,就必须先通过阅读,学习大量的理论知识对Python有一 ...

  8. 语音识别从菜鸟到入门必看的参考书目

    原标题:语音识别从菜鸟到入门必看的参考书目 此前研究这一方面的容,搜罗了些资料,在这里整理如下,做毕业设计,写毕业论文的朋友购书时可以参考一下: 一.<MATLAB数字信号处理> 编者:王 ...

  9. OD组织发展入门必看的书推荐

    OD组织发展入门必看的书推荐 有HR朋友最近问起笔者有哪些组织发展(OD)书籍值得推荐? 虽然身为人力资源管理的一项重要职能,但组织发展(OD)在国内起步较晚,以至于时至今日在人力资源圈内" ...

最新文章

  1. ABAP开发常用的表
  2. JAVA排序算法之插入排序
  3. 京东连续亏损十几年,为什么却发展越来越大?
  4. [渝粤教育] 广东-国家-开放大学 21秋期末考试服务标准化10011k1
  5. 如何在centos中找到安装mysql_centos上如何安装mysql
  6. MySql 学习笔记-Mysql架构介绍与查询sql执行流程
  7. Android 开发实战
  8. C++中this指针小记
  9. JavaWeb开发——软件国际化(文本元素国际化)
  10. 拼多多优惠券BUG事件完整回顾
  11. Mac 双系统之windows坏了咋办
  12. 可以使用ActualHeight来判断textblock是否已经trimming
  13. 解决安装 ISE14.7 Windows10 时出错
  14. Linux替换Docker镜像源
  15. linux 命令 ls
  16. 程莉计算机网络课后答案,信息学院2011-2012学年学生先进集体和先进个人.doc
  17. Silverlight框架
  18. CRUISE纯电动车仿真模型,simulink DLL联合仿真,实现电制动优先能量回收策略
  19. 运行npm run dev报错 internal/modules/cjs/loader.js:883 throw err;
  20. 国家统计局统计用区划代码抓取记

热门文章

  1. jaliswall.js图片瀑布流插件
  2. Struts2 之配置文件编写,动作类(01)
  3. 个人信息保护合规建设桔皮书
  4. android电话本导入iphone,怎么把安卓手机通讯录导入iphone?安卓手机通讯录导入苹果手机三大方法分享...
  5. Java模拟面试-1
  6. [BUUCTF misc]伟大的侦探
  7. Nginx(PHP/fastcgi)的PATH_INFO配置
  8. 数学分析笔记8:广义积分
  9. Excel批量删除插入的对象的2种方法
  10. C#winform 自定义模仿MessageBox的对话框