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.输入错误卡号密码:


4.输入1取款 如取款成功显示取款成功,并可以继续操作


5.输入1取款 如取款金额超过上限如下响应


6.输入2查询信息:


7.输入4退出系统



六、笔记本中的内容已经完结,剩下是对这里面内容的整理。

0 0