本帖最后由 chongyang 于 2018-7-26 16:20 编辑
标题: 微软雅黑,5号,加粗,标红. 内容: 微软雅黑,3号 Object类常用API Object类 java.lang.Object(在lang包下,不需要导包) Object类是所有类的根类(通俗讲: 祖类,最高类) 特点:是所有类的父类,任何一个类都直接间接继承Object类,默认是继承Object类的。 成员方法 StringtoString(): 返回对象的字符串表示 任何类的对象都可调用toString(), 得到一个对象的字符串表示形式, 默认使用Object类中定义的方式。如果不想使用默认方式, 可以重写toString()方法 重写toString()方法又快捷键 Alt + Insert,选择toString()重写。 boolean equals(Objectobj): 指示其他某个对象是否与此对象“相等” equals()默认是通过“==”比较地址值,重写方法后,让对象属性值来判断是否相等 重写快捷键 Alt + Insert,选择equlas() and hasCode() hasCode(),此方法现在不学,只做了解,后期会学。 日期时间相关的类 Date类及其相关方法 java.util.Date类 表示日期,精确到毫秒 注意: 不要导错包有两个Date类,要导入的是util 构造方法 Date(): 创建Date对象,表示当前系统时间 Date(long date): 创建Date对象,使用指定的毫秒值作为时间 成员方法 long getTime(): 获取Date对象中保存的时间毫秒值 voidsetTime(long time): 修改Date对象的时间 DateFormat类及其构造方法 java.text.DateFormat抽象类: 用于格式化和解析时间. 提供了方便的方法 成员方法 String format(Date date): 格式化, 从Date对象转换为String对象 Dateparse(String source): 解析, 从String对象转换为Date对象 java.text.SimpleDateFormat类 构造方法 SimpleDateFormat(“yyyy-MM-ddE HH:mm:ss.SSS”): 用给定的模式和默认语言环境的日期格式符号创建对象 年 月 日 星期 时 分 秒 毫秒 DateFormat类 格式化format方法 Stringformat(Date date): 格式化, 从Date对象转换为String对象 解析parse方法 Date parse(String source): 解析, 从String对象转换为Date对象 Calendar对象的获取方式(抽象类) java.util.Calendar抽象类:代表日历, 提供了不同国家的历法, 封装了很多时间属性 静态方法 static Calendar getInstance(): 根据当前系统设置获取合适的Calendar对象, 表示当前系统时间 常用功能 静态成员变量 static int YEAR 年份 staticint MONTH 月份. 注意月份数值是 0-11 staticint DAY_OF_MONTH 日期 staticint HOUR 小时(12小时制) staticint HOUR_OF_DAY 小时(24小时制) staticint MINITE 分钟 staticint SECOND 秒 非静态成员方法
intget(int field): intyear = cal.get(Calendar.YEAR) 获取指定日历字段的值 voidset(int field, int value): 修改指定日历字段为指定的值 voidadd(int field, int amount): 调整指定日历字段的值. 正数增加, 负数减少 DategetTime(): Calendar转Date voidsetTime(Date d): Date转Calendar System类
java.lang.System类:系统相关功能 获取毫秒值 静态方法 static long currentTimeMillis(): 返回当前系统时间的毫秒值 数组复制方法 静态方法 static void arrayCopy(Object src, intsrcPos, Object dest, int destPos, int length): 复制源数组中指定长度个元素到一个新数组中 源数组 源数组索引 目标数组 目标数组索引 长度 StringBuilder类 思考:“+”拼接字符串有什么缺点 在拼接字符串时,会创建很多新的对象,浪费内存空间 java.lang.StringBuilder类: 可变字符序列, 可以高效拼接字符串. 底层使用数组保存 构造方法 StringBuilder(): 构造一个空的StringBuilder容器 StringBuilder(Stringstr): String转StringBuilder 常用方法 StringBuilderappend(任意类型): 添加任意类型数据的字符串形式, 并返回当前对象 StringtoString(): 将当前StringBuilder对象转换为String对象 包装类 基本数据类型对应的引用数据类型 基本 引用 byte Byte short Short int Integer long Long float Float double Double char Character boolean Boolean 自动装箱 自动拆箱 自动装箱: 从基本类型转换为对应的包装类对象 自动拆箱: 从包装类对象转换为对应的基本类型 基本类型字符串之间转换 staticbyte parseByte(String s): 将字符串参数转换为对应的byte基本类型 staticshort parseShort(String s): 将字符串参数转换为对应的short基本类型 Short staticint parseInt(String s): 将字符串参数转换为对应的int基本类型 Integer staticlong parseLong(String s): 将字符串参数转换为对应的long基本类型 staticfloat parseFloat(String s): 将字符串参数转换为对应的float基本类型 staticdouble parseDouble(String s): 将字符串参数转换为对应的double基本类型 staticboolean parseBoolean(String s): 将字符串参数转换为对应的boolean基本类型 Collection集合 集合和数组的区别: 1. 数组长度不可变; 集合长度可变 2. 数组可以存基本类型或引用类型, 只能存同一种类型; 集合只能存储引用类型元素, 可以是多种类型元素 Collection接口:单列集合顶层 / \ List接口 Set接口 / \ 元素存取有序, 可重复, 有索引 元素存取无序, 不可重复, 无索引 Collection接口是顶层的方法,所有的子类都可以使用,使用时使用底层子类实现类创建对象 Collection常用功能 java.util.Collection接口: 成员方法 boolean add(E e): 把给定的对象添加到当前集合中 voidclear(): 清空集合中所有的元素 booleanremove(E e): 把给定的对象在当前集合中删除 booleancontains(E e): 判断当前集合中是否包含给定的对象 booleanisEmpty(): 判断当前集合是否为空(没有元素) intsize(): 返回集合中元素的个数 Object[]toArray(): 把集合中的元素,存储到数组中 Iterator<E>iterator(): 获取集合的迭代器对象 (后面讲到) Iterator接口: 迭代器 迭代器 迭代:类似于遍历, 判断是否有下一个元素, 有则取出下一个, 直到没有 迭代器: 用于遍历集合的对象 java.util.Collection<E>接口: 成员方法 Iterator<E> iterator(): 获取集合的迭代器对象 java.util.Iterator<E>接口: 迭代器 成员方法 booleanhasNext(): 判断是否有下一个元素 Enext(): 获取下一个元素 voidremove(): 删除next指向的元素 使用迭代器遍历集合的3步: 1. 使用集合对象的 iterator() 获取迭代器对象, 用 Iterator 接口接收.(多态) 2. 使用 Iterator 接口中的 hasNext() 方法, 判断是否有下一个元素 3. 使用 Iterator 接口中的 next() 方法, 获取下一个元素 每个集合都有对应的一个迭代器对象 迭代器实现原理 迭代器有一个指针(可以理解为索引),最初指向集合的-1索引 hasNext()方法判断是否有下一个元素 next()方法移动指针到下一个元素,并返回元素 增强for循环(foreach) 用于遍历集合,实际就是迭代器! 格式: for(元素的数据类型 变量名 : Collection集合或数组名){ //代码 } 增强for对于数组和集合的操作: 对数组只是写法上的优化, 底层还是普通for循环 对集合是通过迭代器实现的 增强for, 普通for, 迭代器的区别: 增强for: 优点: 获取元素很方便, 格式简单 缺点: 没有普通for中的索引, 没有迭代器对象可以进行元素的增删 应用场景: 适用于遍历获取数组和集合元素的场景 普通for: 优点: 有索引可以使用, 某些方式可以在遍历过程中增删元素 缺点: 格式繁琐 应用场景: 需要用到索引的场景 迭代器: 优点: 可以使用迭代器对象的方法操作元素 缺点: 格式繁琐 应用场景: 需要在迭代过程中增删元素的场景 泛型 是一种未知的数据类型 定义集合时, 某些方法不知道使用什么类型时, 就可以使用泛型 创建集合对象时, 需要确定泛型具体的类型 泛型可以看作是一个变量, 用来接收数据类型 使用泛型的优点: 避免了类型转换的麻烦 将运行时的类型转换异常, 转移到了编译时期 (有利于程序员提前发现问题) 定义和使用含泛型的类 泛型在定义时, 不能是具体的类型, 只是一个变量名 泛型在使用时, 必须是具体的数据类型 格式: 修饰符 class 类名<代表泛型的名字>{} 在类中创建泛型对象时,确定泛型的具体类型 定义含有泛型的方法与使用 方法中的泛型定义位置: 修饰符 和 返回值类型 之间 带有泛型的方法定义格式 修饰符 <代表泛型的名字> 返回值类型 方法名(参数){} 方法中定义泛型后, 返回值类型和参数类型都可以使用泛型 定义与使用含有泛型的接口 带有泛型的类定义格式 修饰符 interface接口名<代表泛型的变量> {} 实现类实现了泛型接口后可以有2种选择: 1. 定义实现类时就确定泛型的具体类型 2. 定义实现类时仍然沿用泛型, 直到创建该类对象时才确定泛型的具体类型 泛型定义总结: 定义在类上的泛型: 有效范围: 整个类中都有效 何时确定具体类型: 创建该类对象时确定泛型的具体类型 定义在方法上的泛型: 有效范围: 方法中(包括返回值类型和参数类型)有效 何时确定具体类型: 调用方法传参时确定泛型的具体类型 定义在接口上的泛型: 有效范围: 接口中 何时确定具体类型: 子接口或实现类定义时确定泛型的具体类型 创建实现类对象时确定泛型的具体类型 泛型通配符 不知道使用什么类型来接受时,可以使用<?>来表示未知通配符 注意:只能用来接收数据,不能调用方法储存元素 不能创建对象使用 只能作为方法参数使用(减少方法重载) 泛型的上限: 格式: 类型名称<? extends 类名> 对象名称 作用: 只能接收该类型及其子类 泛型的下限: 格式: 类型名称<? super 类名>对象名称 作用: 只能接收该类型及其父类型
|