5个JAVA入门必看的经典实例
入门必看的5个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(){
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
5.编程实现序列化的Student(sno,sname)对象在网络上的传输
packagecom.softeem.demo;
importjava.io.IOException;
importjava.io.ObjectInputStream;
importjava.io.ObjectOutputStream;
importjava.io.Serializable;
importjava.net.ServerSocket;
importjava.net.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();
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();
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。