黑马程序员技术交流社区

标题: 哒哒哒哒 的学习小阶段的总结笔记 [打印本页]

作者: 1015747546    时间: 2018-4-14 14:20
标题: 哒哒哒哒 的学习小阶段的总结笔记
常用API

Object    里的   toString      和    equals    ;

获取字节码对象   的方式

1 通过Object类的getClass()

2 通过类名调用属性  class 来获取

3 通过class类的静态方法    forName()  来获取







arrayCopy();   复制数组

=================================================

Object    //    System

Object 是类层次结构的根类  任何类都继承了Object

默认父类为Obj

toString         

tostring--- --- 返回对象的字符串表示形式;;;;;

有静态 可以 通过类名来使用   

输值出一个对象   就是默认输出这个对象的地址值

getclass():   返回一个字节码对象

hashCode ()   返回对象的(哈希马志)内部地质值

getName()   获取类的全名(包名.类名)

Inteager.toHexcString() 将int整形数字装换成十六进制数

重写toString   “”

---

//字节码

获取字节码对象  的三种方式:

getClass();

类名.class    属性

Class.forName() ; 类的静态方法

==================

1  通过Object类的getClass()方法获取;

Class clazz = 对象.getClass();

2   通过类名调用属性Class   来获取

Class clazz = 类名.class;

3   通过类的静态方法forName()来获取

Class  clazz = Class.forname(包名.类名){类的全名};{需要抛出异常};

复制字符串  快捷方法、

定义类后    在类名  鼠标右键   Copy   复制路径

equals  方法;;;;;;;;;;;;;;;;;;;;;;;;;;;

引用类型比较的地址值

基本数据类型  比较的是值

在引用类型里    重写equals    比较数值

---

System类;

在java.lang包下    直接用

System   包含一些有用字段   和方法   不能被实例化

常用静态方法

可以直接用System  类名调用

1 static void arrayCopy(目标被复制数组,指定索引位置,  接受复制元素数组,接受复制元素位置, 接受数组接受长度  ) ;  复制源数组中指定长度个元素到一个新数组中;

2   static long currenTimeMillis()   返回当前系统时间的毫秒;范围是   从 1970.1.1.0.0.0   到现在的时间的毫秒值

3 System  void  exit(int status)     终止虚拟机的运行

=======================================     

Date类 的概述和构造

是日期类   表示特定的瞬间  可通过方法来设定所表示的时间    可以表现任何时间

构造方法   ;

Date Date ()   返回当前系统时间  的Date对象

Date Date (long date )  创建Date对象   返回指定时间

成员方法

{常用的方法    ;   

毫秒值  ---   Date

设置   

返回值是  void     参数   long

void   setTime(long  time)

Date   ---   毫秒值

获取   

返回long

long  getTime();

}

String  toLocalString()   转换为本地时间格式的字符串   

========================================

SimpleDateFormat  类概述

可以创建对象   并同时指定格式

SimpleDateFormat    SimpleDateFormat(String    pattern);

专门用于格式化和解析时间

(查看类  有无静态    有静态  用类名调用)或(用子类对象调用方法)

格式化(日期到文本)

Date -- --- - String

String     format(Date date);

解析(文本到日期){解析时   字符串模式必须和创建对象时的格式一致}

String --- -Date

  Date     parse(String string);

{1 创建模式对象     2   创建日期对象     3    转换 }     {shift  + alt+  m     封装方法}

星期是   (E);

年月日  小窍门  :  yyyyy-mm-dd E HH : mm: ss:sss  

==================================

---

Calendar的=概述和测试

Calendar c = Calendar.getInstance(   );

int   a        =  c.   (Calendar.string)

Calendar .  (年  、月、日、时);

月份   数值是从0开始   要加1;

Calendar.set\get\add;

日历类

提供了一些操作年月日时的方法



获取

int  get(int  field);

修改

c.set (            );



添加

c.add(          );



静态方法   :   



成员方法:

int get()  返回给定值

void set()

---

包装类

int 的范围    -2的31次方   到   2的31次方 减1;   

概述和基本使用

封装了基本数据类型   

包装类就是封装了基本数据类型的类   提供更多方法和变量



bayt   Bayt

shart   Shart

char   Character

int      Integer

long     Long

flout        Float

double     Double

boolean       Boolean

构造方法

Integer(int    value)

Integer(String   s)

Integer-------------------------

String  ----   int   ;    (字符串 转int)

1   int value

2  static   int     parseint(String s);

int --------   String ;(int  转  字符串)

1   +“ ”;

2   String    toString();







---

自动拆、装箱

JDK  1.5 的特性    自动装箱    自动拆箱

简化的方式   去直接   变量代码

装箱:

基本数据类型可以自动转换为包装类

拆箱:

包装类转换到到基本数据类



---

正则表达式

是一种用于匹配字符串的规则;

可用于判断是否符合某种规则   比如QQ  手机号码等......

boolean      matches(String    regex);;;判断当前字符串 是否匹配指定的字符表达式     匹配则true    否则false;;;;;

字符类:   

[abs]   (a,或b或c)简单类



Pattern类:



字符:



预定义字符:



String 类:

用方法::

boolean  matches (String regex);

Pattern{正则表达式的规则    在API  查询};
Collection//////////////////

{String >>>>>>>>>SimpleDateformat>>>>>Date}{}





Class

获取字节码对象

String toString

Boolean equals(Object obj);

SimpleDateFormat  :

格式化   

Date --- String

String Format(Date date);

解析

String ----- Date

Date parse(String sous);

构造方法

SimpleDateFormat()    默认模式进行对象构建

SimpleDateFormat(String souse) 用指定模式进行对象构建

























Collection  -------------------------------

Iterator   迭代器  

遍历数组   并可以用他的子类去对集合进行操作

迭代器和集合的依赖性较强    要对集合遍历并操作的话  

可通过Iterator的子类进行遍历操作

泛型

<E>   E  表示为可以添加数据的类型

Foreach    曾强For循环    Foreach(元素的数据类型 :集合或数组的对象 ){直接使用 }

  Foreach 就是迭代器的一种    在for中不能对集合进行修改   会引发并发修改异常

常见数据结构

数组

数组的长度已经定义   不可改变

数组中元素都有索引值

数组只能存储同一类型元素

数组既可以存储基本数据类型   也可以存储引用数据类型

元素的获取

通过索引 获取元素 arr[6];

//添加新元素

创建新数组   长度为原数组长度加一   

遍历原数组   并将元素插入到新数组中;

当遇到元素3时  在元素3 的后面添加新元素8

然后把剩余元素添加到新元素的后面即可;

数组特点   查找快  增删慢;

不同数组长度   添加元素时   需要错位;

链表

  链表 : 由链子连接起来的一堆接点

  结点 : 地址值,值,下一个结点地址值;

  1,2,3,4,5

获取结点

遍历链表  挨个查看

添加新结点

把要添加新结点的前一个结点的下一个结点地址值修改为新结点的地址值   

然后把新节点的下一个结点地址值改为后面结点的地址值;

链表特点

查询慢  增删快



特点

先进后出   进 1,2,3   出 3,2,1;  

队列

特点

先进先出   进 1,2,3     出  1,2,3

超级接口    Collection /   Iterable       @ @

                                                                 = () =                                               

List  是 Collection   的子体系

List 特点

  有序的(存储和读取顺序一致);

  有整数索引;

  允许重复;

List  特有功能

增删改查

Void add(int index,E element);  

E remove(int index);

E set(int index , E element);

E get(int index);

ArrayList

底层是数组结构  查询快  增删慢

LinkedList

底层是链表   查询慢   增删快

使用场景

查询多  增删少    用ArrayList

增删多   查询少    用LinkedList

查询  增删  差不多   用ArrayList

LinkedList  特有功能

get  add remove

Void addFirst(E e);

Void addLast(E e);

E getFirst()

E getLast();

E removeFirst();

E removeLast();

/////////////////////////////////

HashSet

特点   

无序(存储和读取的顺序可能不一样)

不允许重复

没有索引

===============================

ArrayList

数据结构不同  提供了不同的

集合本身存的就是Object 对象

集合的体系结构

从最顶层开始学习  顶层包含了所有共性

【boolean  add(E e)   】增

【booelean   remove(    ); 】  删

【void   clear(    ); 】  清空集合;

【 int   size 】  长度

【Object   []   toArray ()   】 转换成数组   然后遍历数组  ;;

【isEmpty ()】   检测集合是否为空

=============

Iterator--:迭代器

面向对象使用     遍历集合

Iterator <E> iterator;()  fan方法‘

成员方法

boolean   hasNext()  是否有下一个元素   

next()   返回下一一个元素

void   remove     去除指向Collection 的最后一个元素

迭代器是依赖集合的   想当于集合副本   

要修改集合   通过迭代器去进行操作     用  其子类方法;;;

一个集合对应一个迭代器   方法;;;;

调用 ListIterator 中的方法  可对集合进行操作;

并发修改异常  --====指的是会改变集合 长度的操作   会引发   ;  



          循环遍历 输出     while(){};

========================

Iterator接口

一个集合对应一个他本身特有的迭代器

在使用迭代器时   修改集合  会引发并发修改异常

{不用迭代器     或者   在迭代器里进行对集合的操作}

---

泛型(<E>)

在编译时期  检测代码  是否符合要求;

集合可以存储任意类型的对象    当存储不同类型对象,就可能在转换时出现类型转换异常;;;;;;;;;;;;;

泛型     避免了类型转换的问题      简化代码书写     减少黄色警告;

有<E>就可以使用泛型;;;;

作用   :

明确数据类型    ,,,,将运行时发生的类型转换提前到了编译时期;;;

泛型只是安全检测机制   只在编译时有效     

党员代码yiweiclass文件后   代码不存在泛型  

泛型位置:

类     

接口

方法

成员方法: public  <C>  C  eat  (C c) {}   \返回泛型对象;

静态方法只能使用自己的泛型;

'''''''''''''''''''''''''''foreach'''''''''''''''''''''''''''

曾强for循环

作用   ::---遍历数组和集合;;;

for( 元素的类型   变量名 : 集合或数组的对象){

任意使用变量。。。。。。。。。。。。。。。}

实用环境:----内部用的是迭代器    性质一样;     

=============================

数组::

ArrayList   的底层是数组:

查询快    增删慢

链表:

有链子连结起来的一堆结点;

结点格式 ;  地址值 , 值, 下一个结点地址值

LinkedList   的底层是链表;

获取结点 只能遍历;挨个查看;;

增删快    查询慢;;

链表  和 数组   根据需要  调用;;

  栈   队列::

特点:::

栈  : 先进后出   (FILO ,First in Last Out);

队列: 先进先出;(FILo);

---

List(体系)类的特点和功能:

List 接口:

对每个元素进行精准控制,

特点:

有序的  ;  有整数索引; 允许重复;;;;

List 功能:

增-------------void    add(int  index , E   element);

删--------------E   remove(int    index);

改----------------E    set(int  index  ,  E    element);  将指定位置元素修改   并返回被修改元素;

查---------------E    get(int    index);  



继承自Collection     



List 的常用子类:

ArrayList  集合

底层是数组结构   查询 快   增删慢;

LinkedList  集合

底层是链表结构    查询慢   增删快;

选择集合:

查多   用 ArrayList

增删多  用LinkedList



LinkedList  ------

特有功能:

First(开头)

Last(末尾)

增-------add

删------remove

查--------get

异常的概述和体系结构

异常: 不正常   在写代码是出现的编译或者运行错误;【编译或运行时】

出现异常   虚拟机会帮我们创建异常对象,里面包含异常信息     异常对象里面包含了错误的类型  原因及位置;

{ArithmeticException};;;

异常的体系机构  :  

Throwable(最顶层);---有三个方法】

Error(出现的不能处理的严重问题)--在程序运行中;;

Exception(可以处理的问题)---编译时异常//运行时异常---编译正常 ,  运行时报错;

---

异常的处理方式【捕获异常】:

JVM默认的异常处理方式 ------  try{} catch(){};

手动处理异常的两种方式 :

1   捕获异常并处理:

try ...catch语句;

【提前对可能发生的异常进行   处理   纠正错误并避免程序终止】

try{

}  catch(       )  {         

}的.

执行顺序 :

1 首先执行  try 语句

2   如果发现异常    异常下面的代码不再执行   直接跳入catch语句    catch结束后  整个   try....  catch   结束;

3  如果没有发现异常    try     结束后 整个   try...catch  直接结束   不在执行   catch语句;

     用  关键字   throws  在方法的声明处抛出异常;;;

2   抛出去:

【直接抛出异常 在方法声明上添加【throws】异常类型】

---不捕获异常   

当不想处理异常   或没能力处理异常的时候;谁调用方法 谁抛出异常---在方法声明上   表示该程序可能会出现异常;

在main 主方法中   Jvm虚拟机帮我们抛出异常



3   Jvm处理异常的方式:

如果出现异常   我们没有处理  Jvm 会帮我们处理异常  :他会把异常的类型   原因  还有位置显示在命令行:

并且还终止了程序,异常后面的代码将不在执行;

====================================

如何处理多个异常:

【多个异常时   子类异常在上     父类异常在下】;

1   可以使用多个  try {  }  catch(异常对象){   }语句;

2    可以使用一个  try{   } 多个  catch(   ){   }语句;

【多个catch中间可以是子符类关系   子类在上  父类在下】

---

Throwable 的常用方法:

JvM和手动获取异常的区别:  JVM   --try执行结束后程序结束;手动获取异常   则可以执行后面代码;

通过对象  .     调用;

放在异常处理区;

//原因

String  getMessage();

//类型和原因

String  toString();

//类型原因和位置--将错误流打印到控制台;

void     printStackTrace();--系统的标准错误输出流

自定义异常:

---

异常的分类:

1‘  RuntimeExceotion的子类就是运行时期异常                 在 编译时期 可以自由选择处理或者不处理

  2  编译时期异常:  是Exception的子类   非RuntimeExcption的子类, 在编译时期必须处理

【不处理没法运行】

====================

finally:

用于释放资源等收尾工作;无论try...catch   

用于组合try{ } catch( ){ }语句

try{ 问题语句}catch(异常对象){

处理异常

}finally{

释放资源 ;

清理垃圾;

}l

finally  ----------  一定执行;

===========================

自定义异常【自己做异常】:

throws

处理异常的一种方式     把异常在方法声明处抛出   由调用者来处理;

throw

制造异常的方式 , 并且结束方法;

运行异常   继承 RuntimeException;

编译异常   继承 Exception;   ---  在方法声明  抛出(throws);

写一个类去继承 RuntimeException  //   Exception 然后实现多个构造即可





---

捕获处理  

try{

可能有问题的代码}catch(){

处理异常

}
Set(Collection的子类子  接口)接口

特点:

{数组的工具类  是arrays}

{List  四种遍历方法}

(父类引用指向子类对象   不能调用子类特有方法  )

Set集合特点  :

无序(存储和读取有可能不一样) ;

不允许重复   (要求元素唯一){可利用set进行集合元素去重操作};

没有索引;(可以转换成数组   进行需要索引才能进行操作的操作);

使用HashSet存储字符串  

{使用   :   1  创建集合对象    2 创建元素对象   3  添加元素  4  遍历集合};

三中遍历方法:

1 -- 数组

toArray

2---迭代器

3----曾强for

---

HashSet (是Set的实现类)(底层哈希表)的add()方法   

首先会使用当前集合中的每一个元素和新添加的元素进行hash值比较 ,

如果hash值不一样  则直接添加新的元素;

如果 hash值一样  则比较地址值   或者使用equals方法进行比较;

比较结果一样    则认为是重复不添加   

所有的比较结果都不一样则添加;;

---

hashSet    重写equals  和Hascod 方法     去除重复添加;

---

hashCode方法  和  equals方法的优化:

让hashCode返回值和对象的成员变量有关  ----  成员变量不同的 对象  hashCode返回值值不同;

可以让hashCode方法返回所有成员变量之和:

让基本数据类型直接相加    引用数据类型获取hashCode值后再相加   (boolean不可以参加运算);

================提高程序运行效率,,,

this == 对象;

……^   安全性;

this.getclass .equals(对象.getclass());

加一个判断字节码的语句^^^^^ 健壮性^^^^^

---

Collections  (都是静态 可以直接调用) 工具类‘’

和Collection的区别:

Collection 是集合体系的最顶层    包含了集合体系的共性

Collections   是一个工具类     方法都是用来操作Collection;

方法----

{将基本数据类型  包装成引用类型}

1    static  int binarySearch(List   list , T   key);

使用二分查找法   查找指定元素 在指定列表的索引位置;

使用前提    数据有顺序,(set  无序 不可以   Collection  也不行)---参数就得是List!!!!!!!

集合只能存对象;

自动装箱——————直接添加元素到集合;

2   static void  copy(List    dest , List    src);

把源列表数据覆盖到目标列表

《(目标列表长度至少必须等于源列表)源列表大于等于它的长度》

3   static void   fill(List    list  ,   object    obj)

使用指定的对象填充指定列表的所有元素

4    static void reverse(List   list  ):    反转;;

5    static    void  shuffle(List   list):  随机置换

6    static     void       sort   {不是能排所有的元素   必须要有自然顺序} (List   <T>    list)   :   按照列表中元素的自然顺序排序;;;

7     static    void   swap   (List    list ,   int   i    ,int    j):  将指定列表中的索引进行位置互换;

操作一个对象     返回void  说明对象本身发生了变化   

{操作一个对象   返回新对象   一般说明对象本身不会变化 }

void   ------  对象变了     

有对象   有具体返回值   ------对象没变化;

====================================

**模拟斗地主发牌:

{数组  或集合  作为牌数据的存储对象   利用取余来获取纸牌分发对象集合  然后遍历输出}

创建集合   接受数据   创建数组 匹配组合数据   

利用集合Collections 工具类  中随机方法   进行发牌输出  ;

创建几个集合   接受数据    然后输出

for (){}  \String [] arr \  Collections  工具类

=================================

Map (双列集合的顶层)接口

Map< K  ,  V  >------Key  不可以重复的键;Value 可以重复的值;

如果Key重复   Value 被覆盖;  

专门用来存储对应关系的集合  Map;

特点:

Map   将建映射到值的对象 。。一个映射不包含重复的键   ;每个键最多只能映射到一个值;;

Map  和Collection的区别:

Map  :  是一个双列集合  ,常用于处理有对应关系的数据;Key  是不可以重复的   俗称“夫妻对集合”;;

Collection :  是单列集合 , Collection 有不同的子体系,有的允许重复··有索引··有序;;

有的不允许重复····且无an序------“俗称单身汉集合”

【实现学号和学生姓名有对应关系的数据存储,,,,

一对一  : 一个学号对应一个姓名; 】

Map的常用功能:{

方法和功能

添加

映射功能————V   put(K  Key , V  value);---将K映射到Value的功能;如果Key存在   则覆盖value   并将原来Value 返回   如果Key不存在则返回 null;;;;

删除2

void clear()   请空集合所有对应关系;;

V  remove(Object   key)    删除  指定的值   删除成功则返回被删除的Value 值    没有则false;

判断2

boolean  containsKey(Object    Key   )  --------   检测集合内的Key部位   有没有指定数据   有则true   没有则false

boolean containsValue(Object  value)---------- 检测集合内的Value有没有  指定数据    有则true     没有则false

boolean    isEmpty();     判断  集合有没有对应关系   有则返回   false----- 没有则----true  ;

遍历  

Set<Map.Entry<K,V>>  entrySet();

获取

V  get(Object  key);   返回指定Key的Value值;

int size();    //集合长度

================

Map的  获取所有的方法  

Set<K>keySet();-------获取所有的  Key   --  一Set的形式    返回所有的 Key;   Set  不重复;

Collection<V> values();----获取所有的Value -----  Collection 的形式  返回所有的Value;;;

Value  返回的是一个允许重复的集合    但不是List   不能强转成List;;;;

===========================================

Map   的遍历   一

先获取Key  然后遍历   

对象  .  Keyset();

然后同过Key  获取Value

最后输出 集合

---

Map   的第二种遍历:

Entry  是Map的内部类;

获取【【Entry】】对象

//Map 是修饰Entry的

Set<Map.Entry<String , String>>  entry  =  对象 . entrySet();

---

HashMap   存储数据并遍历------

Key作为字符串  可以在添加元素时  去重;;;

HashMap   存储数据并遍历------------

自定义对象为Key   ;;;;

===========================

可变参数::

当参数不确定时     类型要明确   JAVA 可以帮我们吧多个参数直接转成数组

形参:  类型...变量名

实参: 一个参数一个参数的传递

虚拟机会帮忙把参数转成数组;;;;

注意:

在可变参数之后不可以追加参数;(但是可以在前面追加参数)

参数的数量自定义   可以给对个   也可以一个都不给;

【【【方法重载  和方法的参数类型,参数位置,和参数名有关  其他无关;;】】】


























































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