【Object类、常用API】
第一章 Object类 java.lang.Object是Java语言中的根类,即所有类的父类。 Object 中 构造 Object() toString方法 publicString toString() : 该对象的字符串表示。 toString方法返回该对象的字符串表示,其实该字符串内容就是对象的类型+ @+内存地址值。 由于toStirng方法返回的结果是内存地址,在开发中,经常需要按照对象的属性得到相应的字符串表现形式,也需要重写它。 equals方法 publicBoolean equals(Object obj):指示其他某个对象是否与此对象相等。 调用成员方法equals并指定参数为另一个对象,则可以判断这两个对象是否是相同的。这里的“相同”有默认和自定义两种方式。 比较两个对象是否“相等”: 默认:指的是两个对象的地址值是否相同。 自定义:需要重写equals方法 捷键(Alt+insert) 第二章 日期时间类 Date类 java.util.Date 表示特定瞬间,精确到毫秒 构造: Date() 创建一个空参的Date对象 表示?时间呢 创建一个时间对象 表示当前计算机的时间(以毫秒为单位) Date(long time) 传递一个毫秒值 创建一个时间对象,表示基准时间+time 之后新生成的时间。 基准时:1970年1月1日00时00分00秒 零时区 我们中国是东八区(CST)。 DateFormat类 java.text.DateFormat是日期/时间格式化子类的抽象类,我们通过这个类可以帮我们完成日期和文本之间的转换,也就是可以在Date对象与String对象之间进行来回转换。 格式化:按照指定的格式,从Date对象转换为String对象。 解析:按照指定的格式,从String对象转换为Date对象。 SimpleDateFormat(Stringpattern): 用给定的模式和默认语言环境的日期格式符号创建对象: y:年 M:月 d:日 H:时(24小时制) m:秒 s:秒 E:星期 D:年中的天 K:小时(12小时制) S:毫秒 DateFormat类之格式化format方法 Stringformat(Date date): 格式化, 从Date对象转换为String对象 例如, SimpleDateFormat对象的模式是: "yyyy年MM月dd日HH:mm:ss" 那么, 将Date格式化后就可以是这种样子:2018年01月02日 03:04:05 DateFormat之解析parse方法 Dateparse(String source): 解析, 从String对象转换为Date对象 Calendar对象的获取方式 Java.util.Calendar抽象类: 代表日历,提供了不同国家的历法,封装很多时间属性。 获取日历对象的示例: Calendarc = Calendar.getInstance(); // 代表了当前时间 静态成员变量 staticint YEAR :年份 staticint MONTH :月份. 注意月份数值是 0-11 staticint DAY_OF_MONTH :日期 staticint HOUR :小时(12小时制) staticint HOUR_OF_DAY :小时(24小时制) staticint MINITE :分钟 staticint SECOND :秒 非静态成员方法 intget(int field): 获取指定日历字段的值 int year = cal.get(Calendar.YEAR) voidset(int field, int value): 修改指定日历字段为指定的值 voidadd(int field, int amount): 调整指定日历字段的值. 正数增加, 负数减少 DategetTime(): Calendar转Date voidsetTime(Date d): Date转Calendar 日期转换总结: long(数学计算) \SimpleDateFormat Date-------------------- String (用户输入和显示) / Calendar(获取时间的某个部分) long和Date对象互转 利用Date Date(long millis): long转Date long getTime(): Date转long
String和Date对象互转 利用SimpleDateFormat Date parse(String s): String转Date String format(Date): Date转String Calendar对象和Date对象互转 利用Calendar Date getTime(): Calendar转Date void setTime(Date d): Date转Calendar System类 System类之获取时间毫秒值 Java.lang.System类:系统相关功能。 Static long curentTimeMillis():返回当前系统时间的毫秒值。 System类之数组复制方法 static void arrayCopy(Object src, intsrcPos, Object dest, int destPos, int length): 复制源数组中指定长度个元素到一个新数组中。 *Object src: 源数组 (被复制的数组) *int srcPos: 源数组索引 (从源数组的哪个索引开始复制) *Object dest: 目标数组 (要复制到哪个数组) *int destPos: 目标数组索引 (指定目标数组接收元素的索引位置) *int length: 长度 (要复制的元素个数 StringBuilder类 java.lang.StringBuilder类: 可变字符序列, 可以高效拼接字符串. 底层使用数组保存 StringBuilderappend(任意类型): 添加任意类型数据的字符串形式, 并返回当前对象 StringtoString(): 将当前StringBuilder对象转换为String对象 包装类 基本数据类型对应的引用数据类型。 装箱:从基本类型转换为对应的包装类对象。 拆箱:从包装类对象转换为对应的基本类型。 自动装箱原理 使用包装类中的valueOf方法。 Integeri = Integer.valueOf(4); 自动拆箱原理 int num = i.intValue();
包装类常用方法: 基本类型与字符串之间转换 String转基本类型: 利用包装类的静态方法 static byte parseByte(Strings): 将字符串参数转换为对应的byte基本类型 static shortparseShort(String s): 将字符串参数转换为对应的short基本类型 Short static int parseInt(Strings): 将字符串参数转换为对应的int基本类型 Integer static long parseLong(Strings): 将字符串参数转换为对应的long基本类型 static floatparseFloat(String s): 将字符串参数转换为对应的float基本类型 static doubleparseDouble(String s): 将字符串参数转换为对应的double基本类型 static booleanparseBoolean(String s): 将字符串参数转换为对应的boolean基本类型
【Collection、泛型】 第一章 Collection集合 学习集合的目标: 1、会使用集合储存数据 2、会遍历集合,把数据取出来 3、掌握每种集合的特性 Collection接口:(单列集合顶层) 定义的是所有单列集合中共性的方法; 所有的单列集合都可以使用共性的方法。 共性的方法: public boolean add(E e) : 把给定的对象添加到当前集合中。 public void clear() :清空集合中所有的元素。 public boolean remove(E e) : 把给定的对象在当前集合中删除。 public boolean contains(E e) : 判断当前集合中是否包含给定的对象。 public boolean isEmpty() : 判断当前集合是否为空。 public int size() : 返回集合中元素的个数。 public Object[] toArray() : 把集合中的元素,存储到数组中。 学习方法: 学习顶层:顶层接口/抽象类中共性的方法,所有子类可以使用。 使用底层:使用底层子类/实现类创建对象。 List接口: 1.有序的集合(储存和取出元素顺序相同) 2.允许储存重复的元素; 3.有索引,可以使用普通的for循环遍历。 Set接口: 1.不允许存储重复元素; 2.没有索引(不能使用普通for循环遍历) 第二章 Iterator迭代器 有两个常用的方法 boolean hasNext()如果仍有元素可以迭代,则返回true。 迭代器的使用步骤(重点): 1.使用集合中的Iterator()获取迭代器对象,用Iterator接口接收.(多态)。 2.使用Iterator接口中的hasNeat()方法,判断是否有下一个元素。 3.使用Iterator接口中的方法next取出集合中的下一个元素。 使用集合中的方法Iterator()获取迭代器的实现类对象,使用Iterator接口接收(多态)注意: Iterator <E>接口也是有泛型的,迭代器的泛型跟着集合走,集合是什么泛型,迭代器就是什么泛型。 使用迭代器遍历集合的标准写法: Iterator<元素类型> iterator = 集合对象.iterator(); while (iterator.hasNext()) { 元素类型 变量名 = iterator.next(); } 注意事项: 1.迭代器对象迭代完毕后,指针已经指向最后一个元素,如果想再次从头遍历集合,要获取新的迭代器对象。 2.在使用迭代器迭代的过程中,如果执行了改变集合长度的操作(如add(),remove(),clear()),则会抛出ConcurrentModificationException并发修改异常. 增强for循环 用来遍历集合和数组 格式: For(集合/数组的数据类型 变量名 :集合名/数组名){ sout(变量名); } 增强for,普通for, 迭代器的区别: 增强for: 优点:获取元素很方便, 格式简单 缺点:没有普通for中的索引, 没有迭代器对象可以进行元素的增删 应用场景:适用于遍历获取数组和集合元素的场景 普通for: 优点:有索引可以使用, 某些方式可以在遍历过程中增删元素 缺点:格式繁琐 应用场景:需要用到索引的场景 迭代器: 优点:可以使用迭代器对象的方法操作元素 缺点:格式繁琐 应用场景:需要在迭代过程中增删元素的场景 第三章 泛型 泛型:是一种未知的数据类型,当我们不知道使用什么数据类型的时候,可以用泛型。 泛型也可以看出是一个变量,用来接收数据类型。 E e: Element 元素 T t: Type 类型 泛型的好处: 1. 避免了类型转换的麻烦。 2. 将运行时的类型转换异常,转移到了编译时期。
泛型通配符:不知道使用什么类型来接收时, 此时可以使用 <?> 来表示未知通配符
泛型通配符:
示例: List<?> list 接收泛型是任意类型的List对象 注意: 只能接收数据, 不能调用方法存储元素 List<?> list 这种集合不能调用 add() 添加元素, 只能调用 get() 获取元素 List<?> list 其实是一个变量, 所以可以将一个集合赋值给它 如: List<?> list = new ArrayList<String>(); 使用方式: 不能创建对象使用 只能作为方法参数使用. (减少方法重载) 泛型的上限: 格式: 类型名称<? extends 类名> 对象名称 示例: List<? extends Number> list 作用: 只能接收该类型及其子类 (Number及其子类的泛型) 泛型的下限: 格式: 类型名称<? super 类名> 对象名称 示例: List<? super Number> list 作用: 只能接收该类型及其父类型 (Number及其父类的泛型) |