12-23-2014——星期二——作业练习
来源:互联网 发布:php round 编辑:程序博客网 时间:2024/06/15 03:51
一、Java枚举 enum 引用类型可以使用 toString()方法
1、定义:稳定的有限序列,枚举的本质是常量。Java中枚举类型的本质是抽象类。
2、定义一个枚举类型
enum Gender{MALE,FEMALE,UNKNOW//这三个为枚举常量<span style="white-space:pre"></span>//这是定义一个枚举类型Gender,不是枚举类型变量3、定义枚举类型变量,并初始化:
Gender gender = Gender.FEMALE;System.out.println(gender);//该语句输出结果与利用toString()方法输出一致,证明该类型为引用类型4、Java中enum本质为:class/abstract class (可以通过查看其源码来实现)
5、枚举类型常用方法:
System.out.println(ele.name());System.out.println(ele.ordinal());System.out.println(ele.toString());System.out.println(ele.getGender());
5、枚举类型可以在其枚举常量后边加上编号:MALE(10)——要添加构造器,其类型只能为private(因为其本质是抽象类)
获取枚举中的序号用的get访问器
枚举类:
public enum Gender{MALE(2) {@Overridepublic String getDisplay() {// TODO Auto-generated method stubreturn "男";}},FEMALE(3) {@Overridepublic String getDisplay() {// TODO Auto-generated method stubreturn "女";}},UNKNOW(5) {@Overridepublic String getDisplay() {// TODO Auto-generated method stubreturn "未知";}};private int gender;private Gender(int gender){this.gender = gender;}public int getGender() {return gender;}public abstract String getDisplay();}6、主函数类
public class Main {public static void main(String[] args) {Gender gender = Gender.FEMALE;System.out.println(gender);for(Gender ele : Gender.values()){//System.out.println(ele.name());//System.out.println(ele.ordinal());//System.out.println(ele.toString());////System.out.println(ele.getGender());System.out.println(ele.getDisplay());}switch(gender){case MALE:System.out.println("男");break;case FEMALE:System.out.println("女");break;case UNKNOW:System.out.println("未知");break;default:System.out.println("其他");break;}}}7、Gender中的MALE也是一个对象。
上面两个类中有内部类,自己找出并且了解内部类的意义。
对枚举中的常量封装显示名。
8、枚举参考资料:http://jingyan.baidu.com/article/e4d08ffdcf664d0fd2f60dbf.html?qq-pf-to=pcqq.group
9、
二、设计模式
A、单例模式:
a、构造器私有化:类外部不允许创建实例对象
b、双检锁:
c、volatile
1、volatile + 双检锁 实现单例
volatile变量具有synchronized的可见特性,但是不具备原子特性。这就是说线程能够自动发现volatile变量的最新值。
2、pojo:Plain Ordinary Java Object 简单的java对象
EJB:Enterprise JavaBean(企业版 Java对象)
3、参考资料:http://www.cnblogs.com/maowang1991/archive/2013/04/15/3023236.html
三、线程池
1、线程模板:线程的创建就是实现线程接口:Runnable,并且重写其中的run()方法。
通过创建的线程模板新建多个线程。
线程模板如下:
package ThreadPool;public class WorkTask implements Runnable {private String name;public WorkTask(String name){this.name = name;}@Overridepublic void run() {System.out.println(String.format("正在处理[%s]...", this.name));try {Thread.sleep(2000);} catch (InterruptedException e) {e.printStackTrace();}}}2、新建一个线程池:
ExecutorService executor = Executors.newFixedThreadPool(2);//后面的数字代表线程池中一次课存放多少个线程
完整代码:
package ThreadPool;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class Main {public static void main(String[] args) {ExecutorService executor = Executors.newFixedThreadPool(2);executor.execute(new WorkTask("任务0"));executor.execute(new WorkTask("任务1"));executor.execute(new WorkTask("任务2"));executor.execute(new WorkTask("任务3"));executor.execute(new WorkTask("任务4"));executor.execute(new WorkTask("任务5"));System.out.println("测试主线程与副线程之间的关系");//通过这条语句可以分析出线程任务与主线程的关系,引出一个线程队列的概念}}PS:1、线程托管给线程池
2、线程队列概念:
3、并行线程的执行顺序是无序的。
4、处理能力:单位时间处理任务的个数(非处理完)。
5、网站:请求/响应机制
6、数组:Java提供一个辅助的数组操作API:Arraylist
集合有一个辅助API:connection
线程池的辅助API:就是Executors
四、其他参考资料:
1、java Singleton 几种方式解析:http://nkliuliu.iteye.com/blog/980851
2、Java技巧:深拷贝的两种方式:http://developer.51cto.com/art/201104/253067.htm
3、为什么我看不懂你的代码:http://kb.cnblogs.com/page/511521/
五、作业练习
A、这个交通灯主要是模拟灯的变化和车的变化的
1:一个路口,总共有4个方向,每个方向都有3个走向,所有总共有12个小方向,因为右拐经常不受红绿灯控制,所以这个系统里面所有的右拐方向我们就确定一直是绿灯。
2:因为所有的右拐都是绿灯,所以我们就可以不用考虑右拐,这样的话,每个方向就只考虑左拐和直行。
3:拿南和北方向举例,如果南向北是绿灯,那么南向西就是红灯(因为南向西是南向北的左拐方向,左拐方向只有等直行的方向变红以后才变绿),同理,北向南也是绿灯(因为北向南是南向内的对立方向,对立方向是同时变红和同时变绿的)
4:当南北这个方向的左拐方向变红以后,南北方向就都是红灯了(不考虑右拐),接下来就开始东西方向的灯变化了,首先是直行,然后是左拐,再然后就是循环了。。
B、ATM取款机实现
(1) ATM客户端需要登陆,用户输入正确的银行卡号和密码,系统核对无误后才能进行操作
(2) 登陆后,用户可以进行查询余额、取款、和修改密码的操作;
(3) 取款操作,有操作结果提示,如“操作成功”或“余额不足,操作失败”
(4) 密码输入错误3次将提示“对不起,卡已经被没收”
(5) 使用控制台程序完成本应用
(6) 本ATM机程序只管理一个账户
1.初始界面
2.输入正确卡号密码
3.输入错误卡号密码:
5.输入1取款 如取款金额超过上限如下响应
6.输入2查询信息:
7.输入4退出系统
六、笔记本中的内容已经完结,剩下是对这里面内容的整理。
- 12-23-2014——星期二——作业练习
- 12-22-2014——星期一——作业练习
- 2012—07—03 星期二
- java 设计作业——学生类的基本练习
- Hadoop第13周练习—HBase作业
- JAVA基础作业练习—自定义异常之模拟ATM
- 2013年10月15日星期二——java web 环境搭建(MySQL)
- 第8周作业1——类与对象练习之TV
- 第8周作业1——类与对象练习之TV
- Oracle:PL/SQL--流程控制——作业练习:向表中循环插入ID编号
- 第三周作业——工资管理系统(练习文件操作)
- 2008年8月19号,星期二,晴。志不强者智不达。 ——《墨子•修身》
- 2008年9月9号,星期二,晴。傲不可长,欲不可纵,乐不可极,志不可满。 —— 魏 徵》
- 作业:C++作业2—项目4
- 2006-12-12 星期二
- 作业——方案
- 函数——作业
- 作业——HDOJ2027
- 12-20-2014
- QTP关键字驱动框架之方法体封装
- 12-22-2014——星期一——作业练习
- 世界是数字的重点读书笔记(计算机科普知识)
- poj1274
- 12-23-2014——星期二——作业练习
- Java泛型详解
- Linux——进程间通信
- 精通java的25个标准
- 浅谈内存管理
- Android游戏开发案例与关键技术
- 一个简单的迷宫游戏(有BUG)
- 生成so库的认识
- 【Unity3D】存档文件加密代码