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 经典 实例_5个JAVA入门必看的经典实例相关推荐
- c#语言经典程序100例,C#入门必看的实例程序100个 - 源码下载|Windows编程|其他小程序|源代码 - 源码中国...
C#入门必看的实例程序100个\实例01\01.bmp C#入门必看的实例程序100个\实例01\csc编译器路径.txt C#入门必看的实例程序100个\实例01\hello.cs C#入门必看的实 ...
- java编程、语言学习,入门必看(上)
[尚学堂]Java300集零基础适合初学者视频教程_Java300集零基础教程_Java初学入门视频基础巩固教程_Java语言入门到精通_哔哩哔哩_bilibili 一.初识Java 1.生活中的程序 ...
- 经济学入门必看:绝对经典的20部影片_ywyuan_新浪博客
经济学入门必看:绝对经典的20部影片!据称看了这20部电影相当于读完北大经济学院.光华管理学院.清华经管学院. 在复杂的商业社会,你想创业,不懂经济.不懂商业.不懂人情世故.不懂法律边沿,你只有勇气. ...
- 怎么安装python_零基础入门必看篇:浅析python,PyCharm,Anaconda三者之间关系
今天为大家带来的内容是:零基础入门必看篇:浅析python ,PyCharm,Anaconda三者之间关系 众所周知,Python是一种跨平台的计算机程序设计语言,简单来说,python就是类似于C, ...
- IntelliJ IDEA 最常用配置详细图解,新手入门必看
转载自 IntelliJ IDEA 最常用配置详细图解,新手入门必看 刚刚使用IntelliJ IDEA 编辑器的时候,会有很多设置,会方便以后的开发,磨刀不误砍柴工. 比如:设置文件字体大小,代 ...
- JavaScript基础教程——入门必看篇
JavaScript他是一种描述性语言,其实他并不难学,只要用心学,一定会学好,我相信大家在看这篇文章的时候,一定也学过HTML吧,使用JavaScript就是为了能和网页有更好的交互,下面切入主题. ...
- python基础教程书籍推荐-初学者python入门必看书籍推荐(上)
随着最近Python的热度上涨,学习的人数也在增多,也因为Python这门语言的简短.易学.语言优美的优点,吸引了很多人来学习它.初学者想要入门,就必须先通过阅读,学习大量的理论知识对Python有一 ...
- 语音识别从菜鸟到入门必看的参考书目
原标题:语音识别从菜鸟到入门必看的参考书目 此前研究这一方面的容,搜罗了些资料,在这里整理如下,做毕业设计,写毕业论文的朋友购书时可以参考一下: 一.<MATLAB数字信号处理> 编者:王 ...
- OD组织发展入门必看的书推荐
OD组织发展入门必看的书推荐 有HR朋友最近问起笔者有哪些组织发展(OD)书籍值得推荐? 虽然身为人力资源管理的一项重要职能,但组织发展(OD)在国内起步较晚,以至于时至今日在人力资源圈内" ...
最新文章
- ABAP开发常用的表
- JAVA排序算法之插入排序
- 京东连续亏损十几年,为什么却发展越来越大?
- [渝粤教育] 广东-国家-开放大学 21秋期末考试服务标准化10011k1
- 如何在centos中找到安装mysql_centos上如何安装mysql
- MySql 学习笔记-Mysql架构介绍与查询sql执行流程
- Android 开发实战
- C++中this指针小记
- JavaWeb开发——软件国际化(文本元素国际化)
- 拼多多优惠券BUG事件完整回顾
- Mac 双系统之windows坏了咋办
- 可以使用ActualHeight来判断textblock是否已经trimming
- 解决安装 ISE14.7 Windows10 时出错
- Linux替换Docker镜像源
- linux 命令 ls
- 程莉计算机网络课后答案,信息学院2011-2012学年学生先进集体和先进个人.doc
- Silverlight框架
- CRUISE纯电动车仿真模型,simulink DLL联合仿真,实现电制动优先能量回收策略
- 运行npm run dev报错 internal/modules/cjs/loader.js:883 throw err;
- 国家统计局统计用区划代码抓取记
热门文章
- jaliswall.js图片瀑布流插件
- Struts2 之配置文件编写,动作类(01)
- 个人信息保护合规建设桔皮书
- android电话本导入iphone,怎么把安卓手机通讯录导入iphone?安卓手机通讯录导入苹果手机三大方法分享...
- Java模拟面试-1
- [BUUCTF misc]伟大的侦探
- Nginx(PHP/fastcgi)的PATH_INFO配置
- 数学分析笔记8:广义积分
- Excel批量删除插入的对象的2种方法
- C#winform 自定义模仿MessageBox的对话框