A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

Object类
类 Object 是类层次结构的根类。
每个类都使用 Object 作为超类。
所有对象(包括数组)都实现这个类的方法。
Object 是所有类的父类.
Object类: toString方法任何类的对象都可调用 toString(), 得到一个对象的字符串表示形式, 默认使用Object类中定义的方式                如果不想使用默认方式, 子类可以重写toString()方法, 转换为自己想要的内容
.equals
1. 任何对象都能用 Object 类型进行接收    2. equals() 方法具有对称性, 也就是 a.equals(b) b.equals(a) 效果一样    3. 如果比较双方一个常量一个变量, 推荐把常量字符串写在前面: "abc".equals(str). 可以避免空指针异常的可能
重写equals()的作用:        不重写时, 自定义对象默认继承Object类的equals()方法, 通过 == 比较地址值        但开发时, 一般要重写equals()方法, 让对象"根据属性值"来判断是否相等IDEA快捷键: Alt+Insert, 选 equals() and hashCode()


日期时间相关的类
long和Date对象互转
string和Date对象互转
calendar对象和Date对象互转
毫秒值的概念和作用时间原点是 0时区 1970-01-01 00:00:00 开始
1(秒)=1000(毫秒)
十位数字精确到秒
十三位数字精确到毫秒
Date类: 构造方法, 成员方法
创建一个Date对象是表示当前的系统时间
Date date =new Date();
System.out.println(date);



Collecttion泛型 集合工具类
集合: 长度可变容器, 可以存储多个对象集合和数组的区别:        1. 数组长度不可变; 集合长度可变        2. 数组可以存基本类型或引用类型, 只能存同一种类型; 集合只能存储引用类型元素, 可以是多种类型元素
集合框架

Collection接口: 单列集合顶层        |_ List接口: 元素存取有序, 可重复, 有索引        |_ Set接口: 不可重复, 无索
Collection接口中定义了哪些方法, 分别有什么作用// 多态创建对象: 父类引用指向子类对象ArrayList list = new ArrayList();list.共有方法();list.特有方法();Collection<String> coll = new ArrayList<>();// 多态调用方法coll.共有方法();
boolean add(E e): 把给定的对象添加到当前集合中        void clear(): 清空集合中所有的元素        boolean remove(E e): 把给定的对象在当前集合中删除        boolean contains(E e): 判断当前集合中是否包含给定的对象        boolean isEmpty(): 判断当前集合是否为空(没有元素)        int size(): 返回集合中元素的个数        Object[] toArray(): 把集合中的元素,存储到数组中                Iterator<E> iterator(): 获取集合的迭代器对象 (后面讲到)        Iterator接口: 迭代器
迭代器
Iterator<E> iterator(): 获取集合的迭代器对象


迭代: 类似于遍历, 判断是否有下一个元素, 有则取出下一个, 直到没有
迭代器: 用于遍历集合的对象
增强for循环
增强for, 普通for, 迭代器的区别:        增强for:                优点: 获取元素很方便, 格式简单                缺点: 没有普通for中的索引, 没有迭代器对象可以进行元素的增删                应用场景: 适用于遍历获取数组和集合元素的场景        普通for:                优点: 有索引可以使用, 某些方式可以在遍历过程中增删元素                缺点: 格式繁琐                应用场景: 需要用到索引的场景        迭代器:                优点: 可以使用迭代器对象的方法操作元素                缺点: 格式繁琐                应用场景: 需要在迭代过程中增删元素的场景
泛型
泛型: Generic Type. JDK 5 增加. 是一种未知的数据类型        定义集合时, 某些方法不知道使用什么类型时, 就可以使用泛型        创建集合对象时, 需要确定泛型具体的类型        泛型可以看作是一个"变量", 用来接收数据类型
不使用泛型的问题: 集合实际储存的是Object 类型, 存入的元素无论是什么类型, 都会被提升为 Object, 取出来的也是 Object, 要想调用元素特有方法, 就要向下转型, 有可能发生类型转换异常 ClassCastException
泛型的好处
避免了类型转换的麻烦
将运行时的转换异常,转移到了编译时期(有利于程序yuan提前发现问题)
定义和使用含泛型的类
定义泛型        <泛型名> 泛型的"定义""使用"        泛型在"定义"时, "不能是"具体的类型, 只是一个变量名: public class ArrayList<E> {}        泛型在"使用"时, "必须是"具体的数据类型 ArrayList<Integer>            // 带有泛型的类定义格式    修饰符 class 类名<代表泛型的名字> {  // 泛型的变量一般用一个大写字母表示, 但也可以是多个字母    }    类中的泛型, "在创建对象时", 确定泛型的具体类型方法中的泛型定义位置:        修饰符 和 返回值类型 之间                // 带有泛型的方法定义格式    修饰符 <代表泛型的名字> 返回值类型 方法名(参数){    }    方法中定义泛型后, 返回值类型和参数类型都可以使用泛型方法泛型的使用:        "在调用方法时"确定泛型的具体类型


定义与使用含有泛型的接口
定义泛型接口与定义泛型类一样    // 带有泛型的类定义格式    修饰符 interface 接口名<代表泛型的变量> {    }        public interface GenericInterface<I> {                void method(I i);    }实现类实现了泛型接口后可以有2种选择:        1. "定义实现类时", 确定泛型的具体类型          public class A implements GenericInterface<String> {                        @Override                        public void method(String i) {}  // 所有使用泛型的地方都会确定具体类型        }        2. 定义实现类时仍然沿用泛型, 直到"创建该实现类对象时"才确定泛型的具体类型        public class A<I> implements GenericInterface<I> {                        @Override                        public void method(I i) {}  // 泛型不需要确定具体类型, 当创建该类对象时再确定        }                        A<Integer> a = new A<>();                a.method(1);                A<String> a2 = new A<>();                a2.method("dsfdsaf");
泛型定义总结:        定义在类上的泛型:                 有效范围: 整个类中都有效                何时确定具体类型: 创建该类对象时确定泛型的具体类型        定义在方法上的泛型:                 有效范围: 方法中(包括返回值类型和参数类型)有效                何时确定具体类型: 调用方法传参时确定泛型的具体类型        定义在接口上的泛型:                 有效范围: 接口中                何时确定具体类型:                        1. 子接口或实现类定义时确定泛型的具体类型                        2. 创建实现类对象时确定泛型的具体类型
泛型通配符泛型通配符:        不知道使用什么类型来接收时, 此时可以使用 <?> 来表示未知通配符        示例: List<?> list  接收泛型是任意类型的List对象        public void addAll(List<?> list){                        // ...        }                ArrayList<Integer> list1 = new ArrayList<>();                ArrayList<String> list2 = new ArrayList<>();                addAll(list1);                addAll(list2);                注意: 只能接收数据, 不能调用方法存储元素                List<?> list 这种集合不能调用 add() 添加元素, 只能调用 get() 获取元素                List<?> list 其实是一个变量, 所以可以将一个集合赋值给它                        如: List<?> list = new ArrayList<String>();  // 正确                但是不能直接new 泛型为?的集合对象:                        如: List<?> list = new ArrayList<?>();  // 错误        使用方式:                不能创建对象使用                只能作为方法参数使用. (减少方法重载)泛型的上限:        格式: 类型名称<? extends 类名> 对象名称        示例: List<? extends Number> list        作用: 只能接收泛型为该类型及其子类的对象 (Number及其子类的泛型)泛型的下限:         格式: 类型名称<? super 类名> 对象名称        示例: List<? super Number> list        作用: 只能接收泛型为该类型及其父类型的对象 (Number及其父类的泛型)Ctrl+CCtrl+V


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马