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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 老鸟 初级黑马   /  2018-11-14 16:25  /  729 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 老鸟 于 2018-11-14 16:59 编辑

JavaEE就业班第一天笔记资料整理
file:///C:\Users\Z\AppData\Local\Temp\ksohtml\wpsA127.tmp.png
1. Object
特点:  是类层次的根类. 每个类都(直接或间接地)使用Object类作为父类
2. :toString():
作用: 任何类的对象都可调用 toString(), 得到一个对象的字符串表示形式, 默认使用Object类中定义的方式
3 . equals方法的默认实现方式
默认方式是如何比较两个对象是否相等 引用数据类型, ==比较对象的地址值是否相同
4. 重写equals()的作用:
不重写时, 自定义对象默认继承Object类的equals()方法, 通过 == 比较地址值 但开发时, 一般要重写equals()方法, 让对象"根据属性值"来判断是否相等
5. 日期时间相关的类
long date String Calendar 互相转换 long \ SimpleDateFormat Date        String / Calendar
2个包中都有Date, 一个是java.sql.Date, 另一个是java.util.Date我们用的是 java.util.Date
6. DateFormat
DateFormat抽象类: 用于格式化和解析时间. 提供了方便的方法 String format(Date date): 格式化, 从Date对象转换为String对象 Date parse(String source): 解析, 从String对象转换为Date对象 date -> String "yyyy年MM月dd日HH:mm:ss"
7. SimpleDateFormat
SimpleDateFormat(String pattern): 用给定的模式和默认语言环境的日期格式符号创建对象 y: M: d: H:
(24小时制) m: s: 秒

8. 格式化和解析方法: format()方法, parse()方法
String format(Date date): 格式化, 从Date对象转换为String对象
Date parse(String source): 解析, 从String对象转换为Date对象

9. Calendar: 获取Calendar对象
Calendar抽象类: 代表日历, 提供了不同国家的历法, 封装了很多时间属性 static Calendar getInstance(): 根据当前系统设置获取合适的Calendar对象, 表示当前系统时间 Calendar.getInstance(); 会根据当前系统获取合适的子类对象, 我们获取到的是 GregorianCalendar
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
10. System
static long currentTimeMillis(): 返回当前系统时间的毫秒值
static void arrayCopy(Object src, int srcPos, Object dest, int destPos, int length): 复制源数组中指定长度个元素到一个新数组中 * Object src: 源数组 (被复制的数组) * int srcPos: 源数组索引 (从源数组的哪个索引开始复制) * Object dest: 目标数组 (要复制到哪个数组) * int destPos: 目标数组索引 (指定目标数组接收元素的索引位置) * int
length: 长度 (要复制的元素个数)
11. StringBuilder类 原理: 字符串拼接问题
String是不可变的, 使用加号进行字符串拼接, 会创建很多额外的对象, 浪费内存空间 StringBuilder类: 可变字符序列, 可以高效拼接字符串. 底层使用数组保存 String和StringBuilder互转: 利用StringBuilder StringBuilder(String str): String转StringBuilder String toString(): StringBuilder转String
12. 自动装箱、自动拆箱
自动装箱: 基本 -> 包装 Integer.valueOf()

JavaEE就业班第二天 Collection 笔记Collection
集合: 长度可变容器, 可以存储多个对象集合和数组的区别:      
1. 数组长度不可变; 集合长度可变        2. 数组可以存基本类型或引用类型, 只能存同一种类型; 集合只能存储引用类型元素, 可以是多种类型元素
Collection接口: 单列集合顶层        |_ List接口: 元素存取有序, 可重复, 有索引        |_ Set接口: 不可重复, 无索引
学习方法:        学习顶层: 顶层接口/抽象类中共性的方法, 所有子类都可以使用        使用底层: 使用底层子类/实现类创建对象
1.Collection常用功能
.Collection<E>接口:        // 成员方法(子类都会实现)        boolean add(E e): 把给定的对象添加到当前集合中        void clear(): 清空集合中所有的元素        boolean remove(E e): 把给定的对象在当前集合中删除        boolean contains(E e): 判断当前集合中是否包含给定的对象        boolean isEmpty(): 判断当前集合是否为空(没有元素)        int size(): 返回集合中元素的个数        Object[] toArray(): 把集合中的元素,存储到数组中        Iterator<E> iterator(): 获取集合的迭代器对象         Iterator接口: 迭代器
2.迭代器Iterator接口介绍和迭代步骤
迭代:  类似于遍历, 判断是否有下一个元素, 有则取出下一个, 直到没有
迭代器:  用于遍历集合的对象
Collection<E>接口:        
// 成员方法(子类都会实现)        
Iterator<E> iterator(): 获取集合的迭代器对象        
java.util.Iterator<E>接口: 迭代器        
// 成员方法        boolean hasNext(): 判断是否有下一个元素        E next(): 获取下一个元素        
使用迭代器遍历集合的3步:
        1. 使用集合对象的 iterator() 获取迭代器对象, 用 Iterator 接口接收.(多态)        2. 使用 Iterator 接口中的 hasNext() 方法, 判断是否有下一个元素        3. 使用 Iterator 接口中的 next() 方法, 获取下一个元素
// 使用迭代器遍历集合的标准写法:Iterator<元素类型> iterator = 集合对象.iterator();while (iterator.hasNext()) {    元素类型 变量名 = iterator.next();}注意事项:        迭代器对象迭代完毕后, 指针已经指向最后一个元素, 没有下一个元素了. 如果想再次从头遍历集合, 要获取新的迭代器对象
3.迭代器的实现原理       
集合和迭代器对象的关系:每个集合都有对应的一个迭代器对象        
迭代器的原理:   迭代器有一个指针(其实就是个变量, 保存索引值), 最初指向集合的 0 位置        
hasNext() 方法可以判断当前索引是否有元素        next() 方法返回当前元素, 并移动指针到下一个索引
4.迭代器的并发修改异常
并发修改异常的原因:   在使用迭代器迭代的过程中, 如果执行了改变集合长度的操作 (如 add(), remove(), clear()), 则会抛出 ConcurrentModificationException 并发修改异常.
如何避免:    1. 迭代过程中不要修改集合长度        2. 在迭代的过程中添加, 删除元素, 要使用迭代器自带的方法, 而不能使用集合的方法                Iterator中的 remove() 方法                ListIterator中的 add(), remove() 方法
5. 增强for循环
增强for:  也称foreach循环, JDK 5出现, 用于遍历集合, 底层采用迭代器
作用:  遍历数组        遍历集合
增强for格式:    for(元素的数据类型 变量名 : Collection集合或数组名){        //操作代码      }
增强for对于数组和集合的操作:    对数组只是写法上的优化, 底层还是普通for循环        对集合是通过迭代器实现的增强for,
普通for, 迭代器的区别:    增强for:   优点: 获取元素很方便, 格式简单                缺点: 没有普通for中的索引, 没有迭代器对象可以进行元素的增删               
应用场景: 适用于遍历获取数组和集合元素的场景      
  普通for:    优点: 有索引可以使用, 某些方式可以在遍历过程中增删元素                缺点: 格式繁琐               
应用场景: 需要用到索引的场景        
迭代器:   优点: 可以使用迭代器对象的方法操作元素                缺点: 格式繁琐               
应用场景: 需要在迭代过程中增删元素的场景
6. 泛型的概述以及不使用泛型产生的问题
泛型: Generic Type. JDK 5 增加. 是一种未知的数据类型        
定义集合时, 某些方法不知道使用什么类型时, 就可以使用泛型        创建集合对象时, 需要确定泛型具体的类型        泛型可以看作是一个"变量", 用来接收数据类型int a = 10;a = 20;定义:<E>: 声明了一个泛型 (声明了一个变量)E: 使用E这种类型作为数据类型  (参数数据类型, 返回值类型)使用:ArrayList<Integer>: 确定了泛型的具体类型不使用泛型的问题:         
集合实际存储的是 Object 类型, 存入的元素无论是什么类型, 都会被提升为 Object, 取出来的也是 Object, 要想调用元素特有方法, 就要向下转型, 有可能发生类型转换异常 ClassCastException
泛型的好处:        1. 避免了类型转换的麻烦        2. 将运行时的类型转换异常, 转移到了编译时期 (有利于程序员提前发现问题)
7. 定义和使用含泛型的类
泛型的"定义"和"使用"  :      
泛型在"定义"时, "不能是"具体的类型, 只是一个变量名: public class ArrayList<E> {}      
泛型在"使用"时, "必须是"具体的数据类型 ArrayList<Integer>           
// 带有泛型的类定义格式    修饰符 class 类名<代表泛型的名字> {  // 泛型的变量一般用一个大写字母表示, 但也可以是多个字母    }   
类中的泛型, "在创建对象时", 确定泛型的具体类型
8.定义与使用含有泛型的接口
定义泛型接口与定义泛型类一样// 带有泛型的类定义格式    修饰符 interface 接口名<代表泛型的变量> {    }     
实现类实现了泛型接口后可以有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) {}  // 泛型不需要确定具体类型, 当创建该类对象时再确定        }
泛型定义总结:        
定义在类上的泛型:                 有效范围: 整个类中都有效                何时确定具体类型: 创建该类对象时确定泛型的具体类型      
定义在方法上的泛型:                 有效范围: 方法中(包括返回值类型和参数类型)有效                何时确定具体类型: 调用方法传参时确定泛型的具体类型        
定义在接口上的泛型:                 有效范围: 接口中                何时确定具体类型:                        1. 子接口或实现类定义时确定泛型的具体类型                        2. 创建实现类对象时确定泛型的具体类型
9.泛型通配符
泛型通配符:        不知道使用什么类型来接收时, 此时可以使用 <?> 来表示未知通配符        
示例: List<?> list  接收泛型是任意类型的List对象    注意: 只能接收数据, 不能调用方法存储元素               
List<?> list 这种集合不能调用 add() 添加元素, 只能调用 get() 获取元素              
  List<?> list 其实是一个变量, 所以可以将一个集合赋值给它                    
   使用方式:                不能创建对象使用                只能作为方法参数使用. (减少方法重载)
泛型的上限:        格式: 类型名称<? extends 类名> 对象名称        示例: List<? extends Number> list        作用: 只能接收泛型为该类型及其子类的对象 (Number及其子类的泛型)泛型的下限:         格式: 类型名称<? super 类名> 对象名称        示例: List<? super Number> list        作用: 只能接收泛型为该类型及其父类型的对象 (Number及其父类的泛型)      
  


1 个回复

倒序浏览
要换好车,要换好车,换车就上瓜子网.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马