黑马程序员技术交流社区

标题: 【石家庄校区】Object类、常用API Collection、泛型 [打印本页]

作者: 呜呜啦啦    时间: 2018-7-26 14:30
标题: 【石家庄校区】Object类、常用API Collection、泛型
【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及其父类的泛型)





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2