java 核心技术卷一笔记 6 .1接口 lambda 表达式 内部类
6.1 接口不是类,是对类的一组需求的描述,这些类需要遵守接口描述的统一格式进行定义。例如:Arrays类中sort方法(可以对对象数组进行排序)前提是对象所属的类必须实现了Comparable 接口。
public interface Comparable
{
int compareTo(Object other)
}
Comparable
public interface Comparable<T>
{
int compareTo(T other)
}
Comparable泛型
接口的方法自动的属于public;接口中可以定义多个方法;可以定义常量;接口不能含有实例域;
实现接口:1)将类声明为实现给定的接口(implements);2)对接口中的所有方法进行定义。
comparaTo 方法实现
public int ComparaTo(Object otherObject)
{
Employee other (Employee) otherObject;
return Double.compare(salary, other.salary);
}
静态Double.compare方法(第一个参数<第二个参数,返回一个负数,二者相等,返回0,
comparaTo 方法 泛型实现
class Employee implements Comparable<Employee>{
public int ComparaTo(Employee other)
{
return Double.compare(salary, other.salary);
}
}
注意 Object 参数进行类型转换
为什么不在Employee类直接提供一个comparableTo方法呢?主要原因在于java是一种强类型(strongly typed)语言。在调用方法时编译器会检查这个方法是否存在。
package cc.openhome;
import java.util.Arrays;
public class JieKou {
public static void main(String[] args) {
// TODO code application logic here
Employee[] staff =new Employee[3];
staff[0] =new Employee("harry Hacker", 75000);
staff[1]=new Employee("Carl Cracker", 355000);
staff[2]=new Employee("Tony Tester", 228000);
Arrays.sort(staff);
for(Employee e:staff)
System.out.println("name="+e.getName()+",salarry="+e.getSalary());
}
}
class Employee implements Comparable<Employee>
{
private String name;
private double salary;
public Employee(String name,double salary)
{
this.name =name;
this.salary=salary;
}
public String getName()
{
return name ;
}
public double getSalary()
{
return salary;
}
public void raiseSalary(double byPercent)
{
double raise =salary*byPercent/100;
salary +=raise;
}
public int compareTo(Employee other)
{
return Double.compare(salary,other.salary);
}
}
name=harry Hacker,salarry=75000.0
name=Tony Tester,salarry=228000.0
name=Carl Cracker,salarry=355000.0
成功构建 (总时间: 0 秒)
run:
java 核心技术卷一笔记 6 .1接口 lambda 表达式 内部类的更多相关文章
- java 核心技术卷一笔记 6 .2接口 lambda 表达式 内部类
6.2 接口实例 6.2.1 接口与回调 在java.swing包中有一个Timer类,可以使用它在到达给定的时间间隔时发出通告,假如程序中有一个时钟,就可以请求每秒钟获得一个通告,以便更新时钟的表盘 ...
- java 核心技术卷一笔记 6 .1.接口 lambda 表达式 内部类
6.1.2 接口不是类,不能实例化一个接口:但是可以声明接口的变量:Comparable x; 接口变量必须引用实现了接口的类对象:x = new Employee(); 检查一个对象是否属于某 ...
- Java核心技术卷一 · 笔记(2)
目录 1.多态.动态绑定 2.覆盖 3.阻止继承:final 类和方法 4.抽象类(abstract修饰) 5. 4 个访问修饰符: 6.toString() 7.对设计继承关系很有帮助的建议 8.接 ...
- java 核心技术卷一笔记 6 .2.3 接口 lambda 表达式 内部类
6.2.3 对象克隆 Cloneable 接口,这个接口指示一个类提供了一个安全的clone方法.(稍作了解) 为一个对象引用的变量建立副本时,原变量和副本都是同一个对象的引用,任何一个变量改变都 ...
- java核心技术卷一笔记(1)
jdk是java开发工具包,里面包含了javac.jar.javadoc.java等工具,可以在bin目录中找到.有一个文件夹是jre,即jdk也包含了java运行环境.jre可单独安装,只是运行ja ...
- Java核心技术卷一 · 笔记(1)
目录 1.java的关键术语 2.==和equals 3.空串与 Null 串 4.构建字符串 5.封装 6.对象的三个主要特性 7.依赖(dependence).聚合(aggregation).继承 ...
- java核心技术卷一笔记(2)
---恢复内容开始--- 异常.断言 所有的异常都继承自Throwable类,异常包括已检查异常和未检查异常,应该抛出已检查异常,而未检查异常要么是不可控的(Error),要么是应该避免发生的(Run ...
- 【阅读笔记】Java核心技术卷一 #0
这是一篇备忘性质的读书笔记,仅记录个人觉得有用的知识点 本文作为一个目录索引,部分章节跳过 吐槽:此书中文翻译有不少地方不太通顺,这种情况我要把英文版对应的部分也读一遍才能明白(说实话,英文里的从句表 ...
- 对《Java核心技术卷一》读者的一些建议
<Java核心技术卷一>是唯一可以和<Java编程思想>媲美的一本 Java 入门书.单从技术的角度来看,前者更好一些.但上升到思想层面嘛,自然后者更好,两者的偏重点不同. 思 ...
随机推荐
- linux使用curl进行WebService接口测试
参考 :linux使用curl进行接口测试 使用curl 命令模拟POST/GET请求 Linux命令发送Http的get或post请求(curl和wget两种方法) curl 模拟 GET\POST ...
- 【网络爬虫】【java】微博爬虫(三):庖丁解牛——HTML结构分析与正则切分
在上一篇文章中已经通过请求的url地址把html页面爬取下来了,这里分别以网易微博的html和新浪微博的html为例来分析如何提取微博数据. 一.网易微博解析 相比新浪微博的html结构,网易微博的比 ...
- CCF 201509-3 模板生成系统 (STL+模拟)
问题描述 成成最近在搭建一个网站,其中一些页面的部分内容来自数据库中不同的数据记录,但是页面的基本结构是相同的.例如,对于展示用户信息的页面,当用户为 Tom 时,网页的源代码是 而当用户为 Jerr ...
- Win7 server2008 共享文件夹 不输入网络密码
如何设置共享文件夹访问不需要输入用户名和密码: 1.“开始”——“运行”——secpol.msc (1)使用空白密码的本地帐户只允许进行控制台登录 禁用它 (2)“本地策略”——“安全选项”——“网络 ...
- 挨踢职场求生法则-----我在IT职场打滚超过15年了,从小小的程序员做到常务副总
摘要我在IT职场打滚超过15年了,从小小的程序员做到常务副总.相对于其它行业,IT职场应该算比较光明的了,但也陷阱重重,本文说说我的亲身体会,希望大家能在IT职场上战无不胜! 通用法则 法则1:忍耐是 ...
- C++里的强制类型转换符reinterpret_cast、static_cast 、dynamic_cast、const_cast 区别
C 风格(C-style)强制转型如下: (T) exdivssion // cast exdivssion to be of type T 函数风格(Function-style)强制转型使用这样的 ...
- OpenCV入门指南
http://blog.csdn.net/morewindows/article/details/8225783/ http://blog.csdn.net/poem_qianmo/article/d ...
- 3DMAX 1快捷键及常用操作
开启,关闭快捷键 ,使用快捷键时要按下这个按钮 快捷键查看与修改 自定义-自定义用户界面(cutomize user interface):设置和查看快捷键 位置变换 Z: 复位---物体被移动飞了的 ...
- Codevs 1794 修剪花卉
1794 修剪花卉 题目描述 Description ZZ对数学饱有兴趣,并且是个勤奋好学的学生,总是在课后留在教室向老师请教一些问题. 一天他早晨骑车去上课,路上见到一个老伯正在修剪花花草草,顿 ...
- PUSH 和 远程推送
1. UIApplacation向 APNS 注册 push notification 服务 (1) 应用程序要支持推送服务, 在网页里面配置 http://developer.apple.com/ ...