集合、泛型、线程、final、回调
来源:互联网 发布:全景拼图软件 编辑:程序博客网 时间:2024/05/05 07:53
健表与健值对
List
list.add(i); // 添加值
list.get(i); // 获得值Map
map.put(“test”, “test”); // 添加
map.get(“test”); // 获得值
提示:有时间把相应的增删改查整理出来
泛型
泛型的好处
1、类型安全
a)假如没有明确具体类型,存入不同类型的数据不会报错,但取出来时因为类型不同可能会出错
b)明确了具体类型(泛型的作用),可以存入统一类型的数据
2、不需要强制转换
泛型实例题目
实现了一个泛型描述接口,来描述不同类型的类
代码
/** * 描述接口 * @author Administrator * * @param <T> */public interface Desc<T> { public void desc(T p);}
/** * 书类 * * @author Administrator * */public class Book implements Desc<Book> { private String name; private String author; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } public Book(String name, String author) { this.name = name; this.author = author; // 输出一下书的信息 desc(this); } /** * 图书描述 */ @Override public void desc(Book book) { String result = book.toString(); System.out.println(result); } @Override public String toString() { return "这本书的名字是" + getName() + ";作者是" + getAuthor(); }}
/** * 人类 * * @author Administrator * */public class Person implements Desc<Person> { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public Person(String name) { this.name = name; // 输出一下该类的内容 desc(this); } /** * 人的描述 */ @Override public void desc(Person p) { String str = p.toString(); System.out.println(str); } @Override public String toString() { return "我的名字是" + this.getName(); }}
public class Test { public static void main(String[] args) { Person p = new Person("张三"); Book book = new Book("水浒传", "施耐庵"); }}
执行结果
我的名字是张三
这本书的名字是水浒传;作者是施耐庵
线程与并发
调用线程的run方法和start方法的区别
- new Thread(){}.start方法: 与其它线程并发执行,互不干涉
- new Thread(){}.run方法的区别 与其它线程串形实行,一个接着一个
并发
多个客户端对服务器同时发出请求,服务器为每个客户端new一个线程,导致并发
“值不可改变”final关键字的理解
- 基本类型:一经赋值,内容无法改变。
例如:final int i = 3; i = 5; //错误,内容无法改变- 引用类型:一经赋值,引用指向的位置不可以改变。
例如:final Person p=new Person() ; //p指向的Person()成员属性与方法可以改变 p = new Person() // 错误,引用指向位置不可改变
Java回调
通俗易懂定义
有些事情,是一个线程无法自己完成,需要借助别的力量完成,可是不知道何时借助,所以出现了回调
题目
发生了一桩偷窃案,警官把偷窃案交给了柯南,柯南找了很久,发现了真相,打电话告诉了警官,警官抓住了贼
分析
柯南虽然可以找到真相,但他无法抓贼,那不是他的本职,且也无法知道何时能找到真相
代码
/** * 电话接口 * @author Administrator * */public interface Phone { /** * 打电话 */ public void call();}
/** * 警官类 * @author Administrator * */public class Police { /** * 抓贼 */ public void catchThief(){ System.out.println("警察抓到了小偷,且将其刑之与法"); }}
public class Detective extends Thread { private Phone Phone; /** * 开一个线程开始查找真凶,找到了就打电话给警官 */ @Override public void run() { try { System.out.println("柯南花了一段时间破案..."); sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("柯南发现了真相,并打电话给警官"); Phone.call(); } public Phone getPhone() { return Phone; } public void setPhone(Phone phone) { Phone = phone; }}
public class Main { public static void main(String[] args) { System.out.println("发生了一起偷窃案"); Police police = new Police(); Detective kenan = new Detective(); // new phone() 就是所谓的回调 kenan.setPhone(new Phone() { @Override public void call() { // 打电话给警官 police.catchThief(); } }); kenan.start(); }}
执行结果
发生了一起偷窃案
柯南花了一段时间破案…
柯南发现了真相,并打电话给警官
警察抓到了小偷,且将其刑之与法
1 0
- 集合、泛型、线程、final、回调
- 线程安全集合
- Java 集合 线程安全
- 线程安全集合
- JAVA线程安全集合
- android 线程大集合
- 集合之线程安全
- java 集合线程安全
- 集合中线程安全
- 使集合线程安全
- Java 集合 线程安全
- 集合的线程安全问题
- 集合框架线程同步
- JAVA 线程安全集合
- 线程安全集合
- 线程安全的集合
- 线程安全集合类
- 线程安全的集合
- 在 linux 下使用 CMake 构建应用程序
- IntelliJ IDEA 注册码
- android之JNI参数传递 (Java方法调用)
- 命令行 启动 关闭 重启 MySQL
- 二十一、oracle pl/sql分类一 存储过程
- 集合、泛型、线程、final、回调
- 数据库之间的复制
- DEV网格控件 汇总合计为4位小数
- android 开发button按下有震动怎样实现
- (转)OnlineJudge大集合
- TextView展示Html内可点击图片
- php下使用curl进行多种数据编码方式的POST请求
- Android_Activity的生命周期
- JAVA 多线程对成员变量与局部变量的影响