java经典例子.docx
- 文档编号:23986353
- 上传时间:2023-05-23
- 格式:DOCX
- 页数:15
- 大小:16.49KB
java经典例子.docx
《java经典例子.docx》由会员分享,可在线阅读,更多相关《java经典例子.docx(15页珍藏版)》请在冰豆网上搜索。
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(); } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 经典 例子