API-异常,StringBuilder,String,常量池

API:应用程序编程接口,即jdk文档手册,里面以类的形式提供了
    很多常用的功能。
常用的包与类:
    java.lang包:因为常用,所以不需要导包
                                 字符串,线程
    java.util包: 数组工具类,日期,集合等
    java.net包:  网络相关的类型 
    java.io包:    输入输出类型
    java.math包: 数学应用的相关类型
打包工具:javadoc
    (1)使用命令提示符界面:
               类信息中没有声明包,即使用默认包
        javadoc -d  path  *.java
        path:生成api文档的位置
    
               类信息中声明了包  如:package com
        javadoc -d  path  nameOfPackage
                如:
           javadoc -d  .\doc  com    
        
                 源文件在不同包下:
        javadoc -d  path  nameOfPackage1 nameOfPackage2....
                如:
           javadoc -d .\doc  com  demo
    (2)借助eclipse
        export--java--javadoc-->
        
              选择javadoc命令的路径
              选中要生成文档的项目
              选择生成文档的位置
===========================================
异常:
    在程序开发过程中出现的不正常情况,就是异常。比如,
    除数是0,参数为null,调用参数的成员变量或者方法,数组下标越界
     
异常分为两大类型:
  (1)exception:程序员可以解决的:空指针,除数是0,数组下标越界
  (2)Error:程序员无法解决的:如内存溢出 
  
   Throwable是这两种类型的父类 
exception的分类:
      按照编译器是否检查进行分类:
   
    非检查性异常:也称之为运行时异常,即,编译器在检查语法期间,不做
                            异常检查。
    检查性异常:  也称之为编译时异常,此时,编译器会强制检查语法中的异常情况
                            如有异常,在编译期需要做异常处理  
                            
exception的结构:
    RuntimeException:
             NullPointerException
             ArrayIndexOutOfBoundsException
             ClassCastException
             IllegalArgumentExcetion
             NumberFormatException
    IOException:
             EOFException
             FileNotFoundException
异常的处理:
    (1)当异常出现时,终止程序
   (2)当异常出现时,我们使用处理机制进行处理异常。无序终止程序
   
       体验度:尽可能的选择异常处理机制。
异常处理机制:
         基本思想:
             在可能出现异常的代码块区域,进行尝试检查,如果
             出现了异常信息,我们将这些信息封装成某一异常类型的对象。
             然后进行捕获与处理 
   
 try{
     可能出现异常的代码块
   /*如果有异常,jvm会将异常信息,封装成对象
      将地址信息赋值给catch中的形参
   */
 }catch(Exception e){
          进行处理e
 }                                                 
 
多catch语句块情况:
    当我们在尝试捕获异常对象时,想对多种不同的异常对象分别处理时,
    需要使用多个catch语句块    
    
  说明: 当在try中出现了异常信息,那么就不会再执行try中代码块的
             后续部分。进入相应的catch代码块中执行处理。
             
   多catch语句块情况下,catch处理的异常种类书写顺序:                                     
    先写子类异常类型,再写父类异常     

throw:抛出关键字,在本方法中出现的异常,不做try-catch处理。
             而是抛给调用者处理。需要使用throw关键字。
       
throws:声明异常关键字,通常用于方法的定义上,用于通知调用者             

    当throw的异常对象为检查性异常,方法上必须throws此异常类型
    如果throw的异常对象为非检查性异常,方法上不必throws此异常类型
    
方法重写时的throws的用法
     可行的:
           (1)可以相同
           (2)可以是部分
           (3)异常的子类型可行,可以是多个子类型   
    不行的:
           (1)不同的异常类型,不可以多声明
           (2)异常的父类型不行     
finally:
   是为try-catch提供了统一的出口。不管try与catch语句块是否
   发生了异常,最终都会执行finally里的代码块 。
    通常用于处理一些资源的关闭等操作:
            如读取文件时关闭操作,或者是删除临时文件
  finally语句块可选。


  StringBuilder:可变字符串类型:

(字符串:底层是字符数组,及其对数组的操作)
特点:
(1)此类型是final修饰的
(2)没有重写equals方法
(3)此类型提供的大多数方法都带有返回值,
      即:  return this  返回同一个地址
构造器:
   StringBuilder() 
      构造了一个空的StringBuilder对象,初始容量为16。
   StringBuilder(String str)
      创建一个指定字符串的StringBuilder对象
常用方法:
   int length():
      返回有效字符的长度。
   StringBuilder append(Type a):
      将参数a追加到StringBuilder对象里,返回此对象
   StringBuilider insert(int index,Type a);
      将参数a插入到对象的下标index处 
   StringBuilder  delete(int start,int end);
       删除此对象里的部分字符,从start开始,到end结束,注意:包前不包后     
   StringBuilder replace(int start,int end,String str);
      使用str替换此对象从start开始到end结束的子串
   StringBuilder reverse():
      将StringBuilder对象的内容进行翻转
      
StringBuffer:此类与StringBuilder用法一模一样。
      但是:
         在线程安全上考虑:
         StringBuffer线程安全
         StringBuilder线程不安全
         在执行效率上:
         StringBuffer效率低
         StringBuilder效率高   
练习:测试两种类型的效率高低。
================================================
String类型:(底层是字符数组+对数组的操作)

特点:
(1)是不可变的字符串类型,(不可变:对象的内容不能更改)
(2)final修饰的类型
(3)字符下标(索引/index)从0开头
(4)重写了equals方法和toString方法
(5)默认使用的是unicode字符集,任意字符都占两个字节。

构造器:
  String():
    创建一个空字符序列的字符串对象
  String(byte[] bs)
    创建一个字符串对象。使用默认字符集进行解码的字符串。
  String(byte[] bs,String charset)
    将字节数组使用指定字符集进行解码成相应的字符串对象
  String(char[] ch)
    将字符数组转换成字符串对象
  String(String str)  
    指定一个字符串字面量创建一个字符串对象
常用方法:
  int length():
    返回字符串对象的字符个数
  char charAt(int index):
    返回此字符序列中指定索引处的字符
  String concat(String another):
    将指定字符串another拼接到此字符序列的末尾,返回新对象
  boolean stratsWith(String prefix)/endsWith(String suffix)
    查看此字符序列是否以prefix为前缀/以suffix为后缀
  byte[] getBytes():
    将此字符串按照默认字符集编码成字节序列,返回一个新的字节数组
  byte[] getBytes(String charset)
    将此字符串按照指定的字符集编码成字节序列,返回新的字节数组
  

查找字符串中的字符/子字符串的位置
  int indexOf(int ch)
    返回字符ch在此字符串中第一次出现的下标(索引/位置)
  int intexOf(int ch,int fromIndex):
    返回字符ch从此字符串fromIndex下标开始,往后第一次出现的位置
  int indexOf(String str):
  int indexOf(String str,int fromIndex):  
       注意:返回-1,说明要找字符/子字符串 不存在查找序列中
  int lastIndexOf(int ch);
  int lastIndexOf(String str)
  
  int lastIndexOf(int ch,int endIndex)
  int lastIndexOf(String str,int endIndex)
    查找字符/子字符串截止到某一下标时,最后一次出现的位置。
 上述四个方法:
      查找字符/子字符串在此字符序列中最后一次出现的位置,找不到返回-1
      
截取子字符串的方法:
  String substring(int beginIndex)
         从此字符序列的beginIndex开始截取,截取到最后
  String substring(int beginIndex,int endIndex)
         从此字符序列的beginInde开始截取,截取到endIndex,包前不包后
  
字符串转成字符数组的方法:
  char[] toCharArray()
        将此字符序列变成字符数组  
 
字符串中的字母转成大写/小写
  String toUpperCase()
        将字符串中的字母都变成大写,返回新字符串
  String toLowerCase() 
        将字符串中的字母都变成小写,返回新字符串 
前后去空格的方法:
  String trim()
        去掉此字符序列的前与后的空格 
将任意参数变成字符串对象
  static String valueOf(Type v);
    将参数v变成字符串对象        
equals方法与==的区别
  ==:用来比较是不是同一个对象 
  equals:用来比较两个对象的内容是否相同
  
String类型中重写了equals方法


常量池:
   jvm在使用字符串类型时,为了提高内存的使用率,当使用字面量(常量)
      进行给变量赋值时,在方法区内提供了用于存储字面量对象的一个常量池。
      jdk1.7以后,由于方法区内存相对较小,将常量池的对象存在堆中
    
   原理:
     当使用字面量赋值时,先去方法区内的常量池中查询是否有相同字面量的对象,
     如果有,就返回常量池中对象的地址,没有的话,在常量池中创建此字面量的对象
     再返回。
    

猜你喜欢

转载自blog.csdn.net/qq_42397691/article/details/81584130
今日推荐