这篇文章主要为大家详细介绍了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基础教程案例_Java入门的五个经典案例相关推荐

  1. 1.零基础Java基础教程9天入门

    问题:如果main方法被声明为private会怎样?答案:能正常编译,但运行的时候会提示"main方法不是public的". 问题:Java里的传引用和传值的区别是什么?答案:传引 ...

  2. java基础教程 类_Java零基础系列教程06初识类和对象

    配套视频教程 万物皆对象 分类是人们认识世界的一个很自然的过程,在日常生活中会不自觉地进行分类 身边的对象 顾客 姓名-张浩 年龄-20 体重-60kg 操作: 购买商品 收银员 员工号-10001 ...

  3. java基础教程传值_Java基础——方法传值(基本数据类型 VS 引用数据类型)

    总结--基本数据类型传值,引用类型传地址 在Java语言中,不管参数的类型是引用类型还是基本数据类型,数据参数和形式参数进行值传递的方式只有一种--参数值的值 复制一份 赋值给形式参数 所以,实参的值 ...

  4. java基础实战练习_JAVA入门第三季第七章实战练习

    首先,先创建一个Gammer类与一个Poker类. /* * Gammer类包含int类型的id属性与String类型的name属性! * id用int类型是为了测试后面创建用户时输入异常的情况. * ...

  5. 【Java基础教程】(一)入门介绍篇 · 上:快速掌握核心概念,开启Java世界的探索之旅!这篇Java入门宝典助你翱翔~

    Java基础教程之入门介绍 · 上 本节学习目标 1️⃣ Java发展简史 1.1 诞生 1.2 发展 1.3 分支 2️⃣ 特征 3️⃣ 代码执行过程

  6. Java基础题2从入门到放弃的第五天

    Java基础题2从入门到放弃的第5天 小博主也是初学者,肯定有地方可以用更简单的方法,希望可以指点出来.谢谢! 1分支语句 1. 让用户输入一个100以内的整数x,再输入一个100到200之间的整数y ...

  7. Java基础教程-刘刚-专题视频课程

    Java基础教程-2704人已学习 课程介绍         Java基础教程是一套入门Java开发语言的课程,它是由浅入深的介绍Java基础内容,包括Java介绍.基本类型及运算符.控制执行流程.字 ...

  8. java基础教程之实现一键分享朋友圈

     java最新技术,实现一键分享朋友圈,下面给大家演示一下 作为十余年java老司机,根据多年经验,自己录制的学习视频,我往对你们有所帮助, 有技术问题或者面试方面交流的可以加我微信renlliang ...

  9. Java基础教程-10-多线程

    Java基础教程-10-多线程 1. 多线程 我们在之前,学习的程序在没有跳转语句的前提下,都是由上至下依次执行,那现在想要设计一个程序,边打游戏边听歌,怎么设计? 要解决上述问题,咱们得使用多进程或 ...

最新文章

  1. 分析Booking的150种机器学习模型,我总结了六条成功经验
  2. python与c语言在语法上的区别-C语言和Python编程先学习哪个
  3. oracle查询之null值转化
  4. OpenGL 混合Blending
  5. python 最简单的实现适配器设计模式
  6. [css] 你会经常用到伪元素吗?一般都用在哪方面?
  7. java 网络编程connection timed out是什么意思_什么?听说这四个概念,很多 Java 老手都说不清...
  8. python不能安装怎么办_python3安装不上怎么办
  9. MyBatis学习总结(24)——Mybatis常见问题汇总
  10. Android内核开发:系统分区与镜像文件的烧写
  11. android dp sp px_你真的了解android的屏幕适配吗?
  12. mac 配置mysql odbc_如何在Mac上装载ODBC驱动程序?
  13. 注册电气工程师考试考取事宜与考试大纲
  14. 当贝投影F5发布:3000ANSI流明亮度,6S疾速开机,16ms超低延迟
  15. 最优秀的数据可视化案例欣赏
  16. python八卦时间代码_Python实践代码总结第5集(日期相关处理)
  17. 算法练习——(10)小明的作业详解与分析(栈,数组,遍历,逻辑练习)
  18. 简明扼要理解YOLOX
  19. 在线Json格式化、在线格式化Json代码、Json代码美化器、Json在线压缩、Json \uxxxx格式解码
  20. 5G网络入门基础--5G网络的实现流程

热门文章

  1. 2020年,最全4k , 8k的高清壁纸网站分享
  2. 如何学好人力资源管理?方法及书籍推荐
  3. 单片机控制继电器实验
  4. 瑞云服务云携手拓攻机器人,智胜客户体验时代
  5. Linux: sed替换文本
  6. android进度条动画圆环虚线,实线和虚线进度条控件 Android CircleProgressBar
  7. 权限系统设计方案 RBAC模型
  8. python实现简单区块链
  9. Android.bp 介绍
  10. 北上广测试工程师月薪20K往上,该如何做,需要会什么技能?