java经典例子.docx

上传人:b****0 文档编号:10045063 上传时间:2023-05-23 格式:DOCX 页数:15 大小:16.49KB
下载 相关 举报
java经典例子.docx_第1页
第1页 / 共15页
java经典例子.docx_第2页
第2页 / 共15页
java经典例子.docx_第3页
第3页 / 共15页
java经典例子.docx_第4页
第4页 / 共15页
java经典例子.docx_第5页
第5页 / 共15页
java经典例子.docx_第6页
第6页 / 共15页
java经典例子.docx_第7页
第7页 / 共15页
java经典例子.docx_第8页
第8页 / 共15页
java经典例子.docx_第9页
第9页 / 共15页
java经典例子.docx_第10页
第10页 / 共15页
java经典例子.docx_第11页
第11页 / 共15页
java经典例子.docx_第12页
第12页 / 共15页
java经典例子.docx_第13页
第13页 / 共15页
java经典例子.docx_第14页
第14页 / 共15页
java经典例子.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

java经典例子.docx

《java经典例子.docx》由会员分享,可在线阅读,更多相关《java经典例子.docx(15页珍藏版)》请在冰点文库上搜索。

java经典例子.docx

java经典例子

java经典例子

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

packagecom.softeem.demo;

/**

*@authorleno

*动物的接口

*/

interfaceAnimal{

publicvoideat(Foodfood);

}

/**

*@authorleno

*一种动物类:

*/

classCatimplementsAnimal{

publicvoideat(Foodfood){

System.out.println("小猫吃"+food.getName());

}

}

/**

*@authorleno

*一种动物类:

*/

classDogimplementsAnimal{

publicvoideat(Foodfood){

System.out.println("小狗啃"+food.getName());

}

}

/**

*@authorleno

*食物抽象类

*/

abstractclassFood{

protectedStringname;

publicStringgetName(){

returnname;

}

publicvoidsetName(Stringname){

this.name=name;

}

}

/**

*@authorleno

*一种食物类:

*/

classFishextendsFood{

publicFish(Stringname){

this.name=name;

}

}

/**

*@authorleno

*一种食物类:

骨头

*/

classBoneextendsFood{

publicBone(Stringname){

this.name=name;

}

}

/**

*@authorleno

*饲养员类

*

*/

classFeeder{

/**

*饲养员给某种动物喂某种食物

*@paramanimal

*@paramfood

*/

publicvoidfeed(Animalanimal,Foodfood){

animal.eat(food);

}

}

/**

*@authorleno

*测试饲养员给动物喂食物

*/

publicclassTestFeeder{

publicstaticvoidmain(String[]args){

Feederfeeder=newFeeder();

Animalanimal=newDog();

Foodfood=newBone("肉骨头");

feeder.feed(animal,food);//给狗喂肉骨头

animal=newCat();

food=newFish("鱼");

feeder.feed(animal,food);//给猫喂鱼

}

}

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

packagecom.softeem.demo;

importjava.io.FileInputStream;

importjava.io.FileNotFoundException;

importjava.io.IOException;

importjava.io.InputStream;

importjava.util.Properties;

/**

*@authorleno单子模式,保证在整个应用期间只加载一次配置属性文件

*/

publicclassSingleton{

privatestaticSingletoninstance;

privatestaticfinalStringCONFIG_FILE_PATH="E:

\\config.properties";

privatePropertiesconfig;

privateSingleton(){

config=newProperties();

InputStreamis;

try{

is=newFileInputStream(CONFIG_FILE_PATH);

config.load(is);

is.close();

}catch(FileNotFoundExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}catch(IOExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

}

publicstaticSingletongetInstance(){

if(instance==null){

instance=newSingleton();

}

returninstance;

}

publicPropertiesgetConfig(){

returnconfig;

}

publicvoidsetConfig(Propertiesconfig){

this.config=config;

}

}

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

packagecom.softeem.demo;

/**

*@authorleno

*账户类

*默认有余额,可以取款

*/

classAccount{

privatefloatbalance=1000;

publicfloatgetBalance(){

returnbalance;

}

publicvoidsetBalance(floatbalance){

this.balance=balance;

}

/**

*取款的方法需要同步

*@parammoney

*/

publicsynchronizedvoidwithdrawals(floatmoney){

if(balance>=money){

System.out.println("被取走"+money+"元!

");

try{

Thread.sleep(1000);

}catch(InterruptedExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

balance-=money;

}else{

System.out.println("对不起,余额不足!

");

}

}

}

/**

*@authorleno

*银行卡

*/

classTestAccount1extendsThread{

privateAccountaccount;

publicTestAccount1(Accountaccount){

this.account=account;

}

@Override

publicvoidrun(){

account.withdrawals(800);

System.out.println("余额为:

"+account.getBalance()+"元!

");

}

}

/**

*@authorleno

*存折

*/

classTestAccount2extendsThread{

privateAccountaccount;

publicTestAccount2(Accountaccount){

this.account=account;

}

@Override

publicvoidrun(){

&nb

sp;account.withdrawals(700);

System.out.println("余额为:

"+account.getBalance()+"元!

");

}

}

publicclassTest{

publicstaticvoidmain(String[]args){

Accountaccount=newAccount();

TestAccount1testAccount1=newTestAccount1(account);

testAccount1.start();

TestAccount2testAccount2=newTestAccount2(account);

testAccount2.start();

}

}

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

packagecom.softeem.demo;

classProducerimplementsRunnable{

privateSyncStackstack;

publicProducer(SyncStackstack){

this.stack=stack;

}

publicvoidrun(){

for(inti=0;i

Stringproduct="产品"+i;

stack.push(product);

System.out.println("生产了:

"+product);

try{

Thread.sleep(200);

}catch(InterruptedExceptione){

e.printStackTrace();

}

}

}

}

classConsumerimplementsRunnable{

privateSyncStackstack;

publicConsumer(SyncStackstack){

this.stack=stack;

}

publicvoidrun(){

for(inti=0;i

Stringproduct=stack.pop();

System.out.println("消费了:

"+product);

try{

Thread.sleep(1000);

}catch(InterruptedExceptione){

e.printStackTrace();

}

}

}

}

classSyncStack{

privateString[]products=newString[10];

privateintindex;

publicsynchronizedvoidpush(Stringproduct){

if(index==product.length()){

try{

wait();

}catch(InterruptedExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

}

notify();

products[index]=product;

index++;

}

publicsynchronizedStringpop(){

if(index==0){

try{

wait();

}catch(InterruptedExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

}

notify();

index--;

Stringproduct=products[index];

returnproduct;

}

publicString[]getProducts(){

returnproducts;

}

}

publicclassTestProducerConsumer{

publicstaticvoidmain(String[]args){

SyncStackstack=newSyncStack();

Producerp=newProducer(stack);

Consumerc=newConsumer(stack);

newThread(p).start();

newThread(c).start();

}

}

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

packagecom.softeem.demo;

importjava.io.IOException;

importjava.io.ObjectInputStream;

importjava.io.ObjectOutputStream;

importjava.io.Serializable;

import.ServerSocket;

import.Socket;

classStudentimplementsSerializable{

privateintsno;

privateStringsname;

publicStudent(intsno,Stringsname){

this.sno=sno;

this.sname=sname;

}

publicintgetSno(){

returnsno;

}

publicvoidsetSno(intsno){

this.sno=sno;

}

publicStringgetSname(){

returnsname;

}

publicvoidsetSname(Stringsname){

this.sname=sname;

}

@Override

publicStringtoString(){

return"学号:

"+sno+";姓名:

"+sname;

}

}

classMyClientextendsThread{

@Override

publicvoidrun(){

try{

Sockets=newSocket("localhost",9999);

ObjectInputStreamois=newObjectInputStream(s.getInputStream());

Studentstu=(Student)ois.readObject();

&

nbsp;Stringmsg="客户端程序收到服务器端程序传输过来的学生对象>>"+stu;

System.out.println(msg);

ois.close();

s.close();

}catch(IOExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}catch(ClassNotFoundExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

}

}

classMyServerextendsThread{

@Override

publicvoidrun(){

try{

ServerSocketss=newServerSocket(9999);

Sockets=ss.accept();

ObjectOutputStreamops=newObjectOutputStream(s.getOutputStream());

Studentstu=newStudent(1,"赵本山");

ops.writeObject(stu);

ops.close();

s.close();

ss.close();

}catch(IOExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

}

}

publicclassTestTransfer{

publicstaticvoidmain(String[]args){

newMyServer().start();

newMyClient().start();

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2