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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© NNJJ 初级黑马   /  2018-7-26 14:52  /  693 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 NNJJ 于 2018-7-26 15:07 编辑

day01
Object类
Object是所有类的父类,根类
任何一个类都直接或者间接的继承自Object,可以使用Object中的一些方法
能够重写Object类的toString方法
作用: 将对象转换为字符串的表示形式.
IDEA快捷键:Alt + Insert,选toString();
能够重写Object类的equals方法
作用: 比较两个对象是否"相等"
默认规则:==比较对象的地址值
改变规则:重写equals(),一般按照对象的成员变量值(内容)来比较对象是否相同
IDEA快捷键:Alt + Insert,选equals() and hashCode();
Date:
使用日期类输出当前日期:
Date构造:
Date(): 当前系统时间
Date(long millis): 使用指定毫秒值作为时间
方法:
long getTime(): 获取毫秒值
void setTime(long millis): 修改毫秒值
输出:
sout(date);
使用将日期格式化为字符串的方法
SimpleDateFormat: 用给定的模式和默认语言环境的日期格式符号创建对象
SimpleDateFormat(String pattern)
模式(标准)
年: y
月: M
日: d
时: H
分: m
秒: s


星期: E
年中的天: D
12小时制小时: K
毫秒: S
示例:
"yyyy-MM-dd E HH:mm:ss.SSS"
结果: 2016-04-01 星期五 17:29:15.868


注意:
如果要匹配普通的英文字母,则需要用单引号括起来:"'abc'"
如果匹配单引号,则使用2个单引号: " ' ' ";
使用指定格式创建对象:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
使用format()格式化时间:        
String format(Date date): 格式化, 从Date对象转换为String对象
D:/develop/%E7%AC%94%E8%AE%B0/weixinobU7VjtBFfoYPtBeJEJxx4I2ynPE/5cf27bb3bdca42d68da0912e7b49efcc/a5505aee958b495cb49e9dda6db3f080.jpg
使用字符串转换成日期的方法
Date parse(String s); 解析,从String对象转换为Date对象
D:/develop/%E7%AC%94%E8%AE%B0/weixinobU7VjtBFfoYPtBeJEJxx4I2ynPE/e8fca3d749074868b395e676a8a4c98b/597ab013e13a41f4aef024daecf2c828.jpg


D:/develop/%E7%AC%94%E8%AE%B0/weixinobU7VjtBFfoYPtBeJEJxx4I2ynPE/93ea2881b6e148e083759b26512fee7b/12a1547b521a44089cf2847540eb18cd.jpg
Calendar对象
获取Calendar:
根据当前系统设置获取合适的Calendar对象, 表示当前系统时间
用静态方法:static Calendar getInstance();
示例:
Calendar c = Calendar.getInstance();  // 代表了当前时间


常用功能:        
java.util.Calendar抽象类:代表日历,提供了不同国家的历法,封装了很多时间属性
//静态成员变量
static int YEAR                :年份
static int MONTH                :月份, 注意分数值是0 - 11
static int DAY_OF_MONTH: 日期      同义 (DATE)
static int HOUR                :小时(12小时制)
static int HOUR_OF_DAY:小时(24小时制)
static int MINITE                :分钟
static int SECOND                :秒
// 静态成员方法
int get(int field): 获取指定日历字段的值          int year = cal.get(Calendar.YEAR)
void set(int field, int value): 修改指定日历字段为指定的值
void add(int field, int amount): 调整指定日历字段的值. 正数增加, 负数减少
Date getTime(): Calendar转Date
void setTime(Date d): Date转Calenda




// 示例
// 获取日期:
int day = calendar.get(Calendar.DAY_OF_MONTH);
// 修改年:
calendar.set(Calendar.YEAR, 2000);
// 修改月:
calendar.set(Calendar.MONTH, 0);
// 日期增加一天:
calendar.add(Calendar.DAY_OF_MONTHY, 1);
// 日期减少一天:
calendar.add(Calendar.DAY_OF_MONTHY, -1)
System类的方法
静态方法  类名.方法名
1. 获取当前好毫秒时刻值
static long currenrTimeMillis()
long millis = System.currentTImeMillis();
2.数组复制方法
static void arrayCopy(Object sre, int sreIndex, Object dest, Object destIndex, int length)
System.arrayCopy(...);
StringBuilder类
构造方法:
D:/develop/%E7%AC%94%E8%AE%B0/weixinobU7VjtBFfoYPtBeJEJxx4I2ynPE/30fe7ebc7b3142f6894ff5892ce0d0e8/079348e92e124051844f24ee9f0d919a.jpg
解决字符串拼接时占用内存过多的问题
"a" + "b" -> new StringBuilder("a").append("b").toString();
"ab" -> "ab"
链式编程:
new StringBuilder("a").append("b").append("c").append("d").toString();
使用StringBuilder进行字符串拼接操作
StringBuilder append(任意类型)
包装类:
byte                 Byte
short          Short
int                 Integer
long         Long
float         Float
double         Double
char         Character
boolean         Boolean


自动装箱:从基本类型转换为包装类(引用类型);
Integer i = Integer.valueOf(基本类型)
自动拆箱: 从包装类转换为基本类型
int a = i.intValue();


将字符串转换为对应的基本类型
对应类型: parseXxx(String s)
将基本类型转换为对应的字符串
123 + " "
day02

Collection集合
Collection:单列集合类的根接口,用于存储一系列符合某种规则的元素,它有两个重要的子接口,分别是                                      List和Set
List 的特点是元素有序、元素可重复
Set 的特点是元素无序,而且不可重复。
D:/develop/%E7%AC%94%E8%AE%B0/weixinobU7VjtBFfoYPtBeJEJxx4I2ynPE/6be09351e79d423db124503b27a68e34/d7451b231c3f4c61895097986b167cc7.jpg
Collection接口中定义了哪些方法, 分别有什么作用
// 多态创建对象: 父类引用指向子类对象
ArrayList list = new ArrayList();
list.特有方法();
Collection<String> coll = new ArrayList<>();
// 多态调用方法
coll.方法()


常用功能:
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();集合转数组


public Iterator iterator();获取集合对应的迭代器,用来遍历集合中的元素
Iterator<E> it = 集合对象名.iterator();
while (it.hasNext) {
元素类型 变量名 = it.next();
}
it.remove();没有参数,删除next指向的元素
迭代注意问题: 在迭代过程中不要使用非迭代器提供的增删方法
并发修改异常.        
增强for循环
增强for循环,也称foreach循环,JDK 5出现,用于遍历集合,底层采用迭代器.
使用方法:对象名.for   需要索引的时候用普通for循环


增强for,普通for,迭代器的区别:
增强for:
优点:获取元素很方便,格式简单
缺点:没有普通for中的索引,没有迭代器对象可以进行元素的增删
应用场景:适用于遍历获取数组和集合元素的场景
普通for:
优点: 有索引可以使用,某些方式可以在遍历过程中增删元素
缺点:格式繁琐
应用场景: 需要用到索引的场景
迭代器:
优点: 可以使用迭代器对象的方法操作元素
缺点:格式繁琐
应用场景: 需要在迭代过程中增删元素的场景.
泛型:
Generic        
定义集合时,某些方法不知道使用什么类型时,就可以使用泛型
创建集合对象时,需要确定泛型具体的类型


泛型可以看做是一个变量,用来接收数据类型


泛型的好处:
1.避免了类型转换的麻烦
2.将运行时的类型转换异常,转移到了编译时期(有利于程序员提前发现问题)


定义和使用含泛型的类
1.泛型在定义时,不能是具体的类型,只是一个变量名
2.泛型在使用时,必须是具体的数据类型
修饰符 class 类名<代表泛型的名字> {}  
泛型的变量一般用一个大写字母表示,单也可以是多个字母
D:/develop/%E7%AC%94%E8%AE%B0/weixinobU7VjtBFfoYPtBeJEJxx4I2ynPE/e69d48a1fc0c4133b91f8732eb55e9c0/f7bebcc0b91a4f27a5dbf7174320d75d.jpg


D:/develop/%E7%AC%94%E8%AE%B0/weixinobU7VjtBFfoYPtBeJEJxx4I2ynPE/e677f6d1de46441dbba2263a7a59d84a/421c8040815e4f35885f1ad52dd06788.jpg
定义含有泛型的方法和使用
方法中的泛型定义位置:
修饰符 和 返回值类型 之间


修饰符 <代表泛型的名字> 返回值类型 方法名(参数) {};
方法中定义泛型后,返回值类型和参数类型都可以使用泛型


方法泛型的使用:
在调用方法时确定泛型的具体类型
D:/develop/%E7%AC%94%E8%AE%B0/weixinobU7VjtBFfoYPtBeJEJxx4I2ynPE/293c7a0bad47434ea9ddef9a77080097/5af26123deaf4526814af902a0ebdad8.jpg
定义和使用含有泛型的接口
定义泛型接口与定义泛型类一样


修饰符 interface 接口名 <代表泛型的变量> {}


实现类实现了泛型接口后可以有2中选择:
1.定义实现类时就确定泛型的具体类型
2.定义实现类时仍然沿用泛型,直到创建该类对象时才确定泛型的具体类型
D:/develop/%E7%AC%94%E8%AE%B0/weixinobU7VjtBFfoYPtBeJEJxx4I2ynPE/8f3ee882b5e04424913c57fbe8c81e74/15fbc91fdb2d4c7497aa71d328d5dc56.jpg


D:/develop/%E7%AC%94%E8%AE%B0/weixinobU7VjtBFfoYPtBeJEJxx4I2ynPE/0085bdac40d24ca8ab48191db601e3fd/64bf42f392884f68bd965da7078f9e3b.jpg
泛型定义总结:
定义在类上的泛型:
有效范围:整个类中都有效
何时确定具体类型: 创建该类对象时确定泛型的具体类型
定义在方法上的泛型:
有效范围: 方法中(包括返回值类型和参数类型)有效
合适确定具体类型:调用方法传参时确定泛型的具体类型
定义在接口上的泛型:        
有效范围: 接口中
合适确定具体类型:
1.子接口或实现类定义时确定泛型的具体类型
2.创建实现类对象时确定泛型的具体类型
泛型通配符:
不知道使用什么类型来接收时,此时可以使用<?>来表示未知通配符
示例:List<?> list 接收泛型是任意类型的List对象
注意: 只能接收数据,不能调用方法存储元素
不能调用add() 只能调用get()


使用方式:
不能创建对象使用
只能作为方法参数使用(减少方法重载)
泛型的上限:
格式: 类型名称<? extends 类名> 对象名称
示例: List<? extends Number> list
作用: 只能接收该类型及其子类 (Number及其子类的泛型)
泛型的下限:
格式: 类型名称<? super 类名> 对象名称
示例: List<? super Number> list
作用: 只能接收该类型及其父类型 (Number及其父类的泛型)

D:/develop/%E7%AC%94%E8%AE%B0/weixinobU7VjtBFfoYPtBeJEJxx4I2ynPE/e346bf84b5e443f1a3a4118694907611/clipboard.png








0 个回复

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