【入门】java基础--3

集合  容器 存储对象的对象


Collection

接口特点: 元素是Object

常用方法: 

add(Object o):把o对象放入集合

addAll(Collection c):把c集合中所有元素一次性添加到集合中

contains(Object o):判断集合中是否存在元素o

remove(Object o):删除元素o

size():获得集合长度

toArray():把集合转成数组

遍历:

迭代遍历 for-each


List  Collection子接口

接口特点:元素有顺序,有下标,可以重复

常用方法:

add(int pos , Object o):将元素o插入到pos下标

remove(int pos):删除pos下标的元素

get(int pos):获得pos下标的元素

indexOf(Object o):获得o元素的下标, 如果不存在,返回-1

遍历:

1.下标遍历   

2.迭代遍历  for-each

实现类:

ArrayList    数组实现   查询快  增删慢    1.2   线程不安全  快

LinkedList   链表实现   查询慢  增删快     

Vector       数组实现                     1.0   线程安全    慢


Collections 

reverse(List list):将list转置

shuffle(List list):将list随机打乱次序

sort(List list):排序   



Set Collection子接口

接口特点:元素无顺序,无下标,元素内容不可以重复

常用方法: 无

遍历: 

迭代遍历 for-each

实现类:

1.HashSet  

  自定义的对象放入HashSet,为了保证元素内容不重复,就必须:

  1)覆盖hashCode()方法,保证相同对象返回相同的int;尽量保证不同对象返回不同的int

  2)覆盖equals()方法,保证相同对象equals返回true

2.LinkedHashSet HashSet的子类  维护元素进入集合的顺序

3.TreeSet

  SortedSet接口(Set的子接口)实现类   对元素自动排序



Map

接口特点:元素是key-value对  无顺序(无下标)  key唯一   value可以重复   通过key查找对应的value

常用方法:

put(K key,V value):把key-value对添加到Map中 如果key已存在,新的value会覆盖旧的value

get(K key):通过key查找对应的value 如果key不存在,返回null

remove(K key):删除key所对应的键值对

size():集合长度

containsKey(K key):判断Map中是否包含key键

containsValue(V value):判断Map中是否包含value值

遍历:

keySet():返回Map中所有的key     Set

values():返回Map中所有的value   Collection

实现类:

1.HashMap     1.2   线程不安全  快   允许用null作为key或者value

2.LinkedHashMap HashMap的子类 维护键值对添加到集合中的顺序

3.TreeMap  SortedMap(Map的子接口)实现类   自动对key排序

4.Hashtable   1.0   线程安全  慢     不允许用null作为key或者value



泛型: 类型的变量

集合中的泛型 约定集合中元素的类型


队列  FIFO 先进先出  

      可以基于LinkedList封装队列类

      可以直接使用Queue接口(Collection子接口)  since5.0

栈    LIFO 后进先出

树    



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


异常处理   容错性


异常处理: 当异常发生时,执行特定的代码,减少异常的影响


try{

插卡

输入密码和金额2000

余额-=2000

吐钱2000

}

catch(吐钱异常 e){

余额+=2000

}

finally{

退卡

}




异常的分类

Throwable

    |- Error      错误     严重  无法避免 无法处理

    |- Exception  异常     可以处理

           |- RuntimeException及子类                          未检查异常  可以避免  可处理可不处理

           |- 非RuntimeException子类包括Exception自身     已检查异常  不可避免  必须处理


异常的产生和传递

产生:   throw 抛出一个异常   等同于return  让函数以异常返回


异常的处理

1. 声明抛出     处理已检查异常

2. 捕获异常     处理一切异常

        try - catch 

try - catch - finally{ 无论如何都会执行 ,通常用来释放资源 } 

try - finally


自定义异常  继承Exception 或 继承RuntimeException(推荐)


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


多线程

进程: OS中并发的一个任务   CPU分时间片交替运行, 宏观并行, 微观串行

线程: 在一个进程中并发的一个顺序执行流程


三要素: 

CPU : 由OS分配

存储空间: 堆空间共享  栈空间独立

代码: 继承Thread,覆盖run方法 ;  实现Runnable接口,实现run方法


一个Thread对象代表一个线程


ExecutorsService : 线程池    重用线程资源   

    submit(Runnable t) 提交任务对象


多线程共同访问同一个对象(临界资源),如果破坏了不可分割的操作(原子操作),会造成数据不一致


每个对象都内置了一个互斥锁标记,用来分配给线程


synchronized

synchronized(o){    }  对o加锁的同步代码块

只有拿到o的锁标记的线程,才能进入对o加锁的同步代码块

线程离开对o加锁的同步代码块时,会释放o的锁标记



synchronized 方法修饰符   同步方法

只有拿到o的锁标记的线程,才能调用o的同步方法


o.wait():必须在对o加锁的同步代码块中  1.释放所有的锁标记    2.线程进入等待队列

o.notify()/o.notifyAll()  必须在对o加锁的同步代码块中   从等待队列中释放一个/全部线程


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


I/O   输入/输出


流的三种分类

数据方向    输入(读数据)/输出(写文件)

数据单位    字节(处理一切数据)/字符(处理文本数据)

流的功能    节点(实际负责数据传输)/过滤(为节点流增强功能)


InputStream/OutputStream   字节流的父类  抽象类

    OutputStream

write(int a):把一个字节写出去

write(byte[] bs):把字节数组中所有字节写出去

write(byte[] bs , int start , int len):把字节数组的一部分写出去

    InputStream

int read():读一个字节 返回值:读到的数据  -1表示文件结束

int read(byte[] bs):把bs数组尝试读满 返回值:读到的字节数量  -1表示文件结束 

int read(byte[] bs,int start , int len):尝试读满bs数组的一段 返回值:读到的字节数量 -1表示文件结束


FileInputStream/FileOutputStream  读写文件  节点流

DataInputStream/DataOutputStream 读写8种基本类型和String  过滤流

BufferedInputStream/BufferedOutputStream 缓冲流 过滤流

flush():清空缓冲区

            PrintStream 缓冲输出流      

ObjectInputStream/ObjectOutputStream  读写Object 过滤流



对象序列化:把对象通过流传输

只有实现了Serializable接口的对象, 才能序列化

用transient修饰的属性,不参与序列化


RandomAccessFile 随机访问文件    seek(int pos):定位文件指针


1) 创建节点流

2) 封装过滤流

3) 读写数据

4) 关闭流


字符流   处理文本数据   方法针对文本数据  更好处理字符编解码


编码方式和解码方式不统一时,可能造成乱码问题

ASCII 美国

ISO-8859-1  西欧

GB2312 / GBK    简体中文

Big5            繁体中文

unicode 全球统一  UTF-16   UTF-8 


Reader/Writer 字符流的父类   抽象类

FileReader/FileWriter  文件字符流  节点流

BufferedReader/BufferedWriter 缓冲流 过滤流

               PrintWriter


InputStreamReader/OutputStreamWriter  桥转换   字节流--字符流  可以指定编解码方式


File 代表磁盘上的一个文件或目录


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


类对象: 类加载的产物,记录了一个类的信息 (父类? 接口? 属性? 方法? 构造方法?)

Class类 


获得类对象的三种方式:

1. 类名.class  (可以直接获得8种基本类型的类对象)

2. Class.forName("类的全名")    通过类名获得类对象   可能会加载该类

3. getClass() 通过类的对象获得类对象


java.lang.reflect 

Field   : 代表一个属性

Method  : 代表一个方法     invoke(): 调用该方法


Class newInstance() 创建类的对象


注释: 描述代码的文字

标注: 描述代码的代码

      @标注名(属性名=属性值,属性名=属性值)

      单值标注:如果属性名为value,"value="可以省略   @标注名(value=1)  @标注名(1)


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


开闭原则      扩展开放  修改关闭


工厂模式  工厂对象负责对象的创建


数据展现    显示层 View            UI 处理用户交互

数据处理    业务层 Service         数据的业务处理

数据来源    数据访问层 Dao         处理数据的增删改查



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


集合  容器 存储对象的对象


Collection

接口特点: 元素是Object

常用方法: 

add(Object o):把o对象放入集合

addAll(Collection c):把c集合中所有元素一次性添加到集合中

contains(Object o):判断集合中是否存在元素o

remove(Object o):删除元素o

size():获得集合长度

toArray():把集合转成数组

遍历:

迭代遍历 for-each


List  Collection子接口

接口特点:元素有顺序,有下标,可以重复

常用方法:

add(int pos , Object o):将元素o插入到pos下标

remove(int pos):删除pos下标的元素

get(int pos):获得pos下标的元素

indexOf(Object o):获得o元素的下标, 如果不存在,返回-1

遍历:

1.下标遍历   

2.迭代遍历  for-each

实现类:

ArrayList    数组实现   查询快  增删慢    1.2   线程不安全  快

LinkedList   链表实现   查询慢  增删快     

Vector       数组实现                     1.0   线程安全    慢


Collections 

reverse(List list):将list转置

shuffle(List list):将list随机打乱次序

sort(List list):排序   



Set Collection子接口

接口特点:元素无顺序,无下标,元素内容不可以重复

常用方法: 无

遍历: 

迭代遍历 for-each

实现类:

1.HashSet  

  自定义的对象放入HashSet,为了保证元素内容不重复,就必须:

  1)覆盖hashCode()方法,保证相同对象返回相同的int;尽量保证不同对象返回不同的int

  2)覆盖equals()方法,保证相同对象equals返回true

2.LinkedHashSet HashSet的子类  维护元素进入集合的顺序

3.TreeSet

  SortedSet接口(Set的子接口)实现类   对元素自动排序



Map

接口特点:元素是key-value对  无顺序(无下标)  key唯一   value可以重复   通过key查找对应的value

常用方法:

put(K key,V value):把key-value对添加到Map中 如果key已存在,新的value会覆盖旧的value

get(K key):通过key查找对应的value 如果key不存在,返回null

remove(K key):删除key所对应的键值对

size():集合长度

containsKey(K key):判断Map中是否包含key键

containsValue(V value):判断Map中是否包含value值

遍历:

keySet():返回Map中所有的key     Set

values():返回Map中所有的value   Collection

实现类:

1.HashMap     1.2   线程不安全  快   允许用null作为key或者value

2.LinkedHashMap HashMap的子类 维护键值对添加到集合中的顺序

3.TreeMap  SortedMap(Map的子接口)实现类   自动对key排序

4.Hashtable   1.0   线程安全  慢     不允许用null作为key或者value



泛型: 类型的变量

集合中的泛型 约定集合中元素的类型


队列  FIFO 先进先出  

      可以基于LinkedList封装队列类

      可以直接使用Queue接口(Collection子接口)  since5.0

栈    LIFO 后进先出

树    


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


String

charAt(int index):通过下标获得字符

toCharArray():返回char[]

String(char[] cs):利用字符数组构造String

toUpperCase()/toLowerCase():转大写/转小写

length():字符串长度

trim():去掉字符串前后的空格和换行

startsWith(String str):判断String是否以str开头

endsWith(String str):判断String是否以str结尾

indexOf(String str):返回子串在String中首下标

indexOf(String str,int begin):从begin位置开始找, 返回子串的首下标

lastIndexOf(String str):从后往前找 找子串首下标

replace(String str,String str2):用str2子串替换str子串

substring(int begin,int end):返回begin到end下标的子串 子串包含起始下标,不包含结束下标

split(String str):以str为分隔符,将字符串拆分为多个子串 返回String[]



String:内容不变

StringBuilder:内容可变



intern():返回String在串池中的地址

串池:减少重复的对象, 资源共用


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


异常处理   容错性


异常处理: 当异常发生时,执行特定的代码,减少异常的影响


try{

插卡

输入密码和金额2000

余额-=2000

吐钱2000

}

catch(吐钱异常 e){

余额+=2000

}

finally{

退卡

}




异常的分类

Throwable

    |- Error      错误     严重  无法避免 无法处理

    |- Exception  异常     可以处理

           |- RuntimeException及子类                          未检查异常  可以避免  可处理可不处理

           |- 非RuntimeException子类包括Exception自身     已检查异常  不可避免  必须处理


异常的产生和传递

产生:   throw 抛出一个异常   等同于return  让函数以异常返回


异常的处理

1. 声明抛出     处理已检查异常

2. 捕获异常     处理一切异常

        try - catch 

try - catch - finally{ 无论如何都会执行 ,通常用来释放资源 } 

try - finally


自定义异常  继承Exception 或 继承RuntimeException(推荐)


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


多线程

进程: OS中并发的一个任务   CPU分时间片交替运行, 宏观并行, 微观串行

线程: 在一个进程中并发的一个顺序执行流程


三要素: 

CPU : 由OS分配

存储空间: 堆空间共享  栈空间独立

代码: 继承Thread,覆盖run方法 ;  实现Runnable接口,实现run方法


一个Thread对象代表一个线程


ExecutorsService : 线程池    重用线程资源   

    submit(Runnable t) 提交任务对象


多线程共同访问同一个对象(临界资源),如果破坏了不可分割的操作(原子操作),会造成数据不一致


每个对象都内置了一个互斥锁标记,用来分配给线程


synchronized

synchronized(o){    }  对o加锁的同步代码块

只有拿到o的锁标记的线程,才能进入对o加锁的同步代码块

线程离开对o加锁的同步代码块时,会释放o的锁标记



synchronized 方法修饰符   同步方法

只有拿到o的锁标记的线程,才能调用o的同步方法


o.wait():必须在对o加锁的同步代码块中  1.释放所有的锁标记    2.线程进入等待队列

o.notify()/o.notifyAll()  必须在对o加锁的同步代码块中   从等待队列中释放一个/全部线程


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


I/O   输入/输出


流的三种分类

数据方向    输入(读数据)/输出(写文件)

数据单位    字节(处理一切数据)/字符(处理文本数据)

流的功能    节点(实际负责数据传输)/过滤(为节点流增强功能)


InputStream/OutputStream   字节流的父类  抽象类

    OutputStream

write(int a):把一个字节写出去

write(byte[] bs):把字节数组中所有字节写出去

write(byte[] bs , int start , int len):把字节数组的一部分写出去

    InputStream

int read():读一个字节 返回值:读到的数据  -1表示文件结束

int read(byte[] bs):把bs数组尝试读满 返回值:读到的字节数量  -1表示文件结束 

int read(byte[] bs,int start , int len):尝试读满bs数组的一段 返回值:读到的字节数量 -1表示文件结束


FileInputStream/FileOutputStream  读写文件  节点流

DataInputStream/DataOutputStream 读写8种基本类型和String  过滤流

BufferedInputStream/BufferedOutputStream 缓冲流 过滤流

flush():清空缓冲区

            PrintStream 缓冲输出流      

ObjectInputStream/ObjectOutputStream  读写Object 过滤流



对象序列化:把对象通过流传输

只有实现了Serializable接口的对象, 才能序列化

用transient修饰的属性,不参与序列化


RandomAccessFile 随机访问文件    seek(int pos):定位文件指针


1) 创建节点流

2) 封装过滤流

3) 读写数据

4) 关闭流


字符流   处理文本数据   方法针对文本数据  更好处理字符编解码


编码方式和解码方式不统一时,可能造成乱码问题

ASCII 美国

ISO-8859-1  西欧

GB2312 / GBK    简体中文

Big5            繁体中文

unicode 全球统一  UTF-16   UTF-8 


Reader/Writer 字符流的父类   抽象类

FileReader/FileWriter  文件字符流  节点流

BufferedReader/BufferedWriter 缓冲流 过滤流

               PrintWriter


InputStreamReader/OutputStreamWriter  桥转换   字节流--字符流  可以指定编解码方式


File 代表磁盘上的一个文件或目录


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


类对象: 类加载的产物,记录了一个类的信息 (父类? 接口? 属性? 方法? 构造方法?)

Class类 


获得类对象的三种方式:

1. 类名.class  (可以直接获得8种基本类型的类对象)

2. Class.forName("类的全名")    通过类名获得类对象   可能会加载该类

3. getClass() 通过类的对象获得类对象


java.lang.reflect 

Field   : 代表一个属性

Method  : 代表一个方法     invoke(): 调用该方法


Class newInstance() 创建类的对象


注释: 描述代码的文字

标注: 描述代码的代码

      @标注名(属性名=属性值,属性名=属性值)

      单值标注:如果属性名为value,"value="可以省略   @标注名(value=1)  @标注名(1)


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


开闭原则      扩展开放  修改关闭


工厂模式  工厂对象负责对象的创建


数据展现    显示层 View            UI 处理用户交互

数据处理    业务层 Service         数据的业务处理

数据来源    数据访问层 Dao         处理数据的增删改查



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值