java——字符串类、日期相关类、API工具类 & 异常处理

1.字符串类

String
StringBuffer
StringBuilder

1)String的特点和主要方法

在这里插入图片描述
String 本质是一个私有的final char[]数组,所以String 具有不可变性,每次修改都将产生全新的一个字符串,若要修改则会在堆内存中重新创建一块空间,造成空间浪费;所以String类型不被用于频繁修改的字符串;
在这里插入图片描述
在这里插入图片描述

2)StringBuffer和StringBuilder 的特点和用法

可变字符串StringBuffer和StringBuilder;

区别和优缺点:

StringBuffer 线程安全(多线程)

StringBuilder 非线程安全(单线程)(快速更快)

StringBuffer和StringBuilder 的方法

在这里插入图片描述

在这里插入图片描述

3)字符串入池(常量池)

除了字面量入池还可以字符串变量入池;
•String对象重用,节省内存消耗(以时间换空间)。

用法

•字面量literal与intern()方法将导致字符串被存储于常量池,俗称入池。
•当使用字符串字面量时,会进入常量池中查找该字符串,
•如找到,将直接返回字符串引用。(引用地址)
•如未找到,将在常量池中创建该字符串,再返回其引用。

String str5 = “C#”;
String str6 = new String("C#");
System.out.println(str5 == str6 );    //输出false
str6 = str6.intern();//将值入池,如池已存在,返回池中内容,如不存在,将值入池,再返
回池中内容
System.out.println(str5 == str6 );		//输出true

2.日期类

Java.util.Date 日期类

java.text .DataFormat 日期格式化

SimpleDateFormat		DataFormat抽象类的子类

java.util .Calender 日历(日期类的升级版本)

1)Date

在这里插入图片描述

2)DateFormat在这里插入图片描述

3)Calendar

在这里插入图片描述

3.API

1)随机数

在这里插入图片描述

		double ran=Math.random();
        System.out.println(ran);
        Random r=new Random();
        System.out.println(r.nextInt(10));

在这里插入图片描述

4.异常处理

程序运行时,总会发生一些问题:
1、不可抗拒的问题,导致软件不能正常运行(错误)
2、由于数据引发或变量引发的逻辑性的问题,导致软件不能正常运行(异常)
异常是可以捕获处理的:
Try catch 机制,处理后,不能造成软件的中止。

无异常处理机制时,出现异常时程序立即终止
当try,catch处理异常之后,软件也不会终止会继续运行;
finally的代码不管是否发生异常都会执行;

        Scanner in=new Scanner(System.in);
        System.out.println("请输入你的年龄:");
        try {
            int age=in.nextInt();
        }catch (Exception e){
//            String s=e.getMessage();
            String s1=e.toString();
            System.out.println(s1);
            e.printStackTrace();
        }finally {
            System.out.println("异常处理完毕");
        }

在这里插入图片描述
|
| 改
| 良
| 后
|
|/

        Scanner in=new Scanner(System.in);
        System.out.println("请输入你的年龄:");
        while (true) {
            try {
                int age = in.nextInt();
                System.out.println("age:"+age);
                break;
            } catch (Exception e) {
                System.out.println("输入错误,请重新输入");
                String s1 = e.toString();   	//获得异常类型
                System.out.println(s1);
                e.printStackTrace();			//打印异常信息
                System.exit(-1);  //当捕捉异常后不执行finally里的代码

            } finally {
                System.out.println("异常处理完毕");	//break之后还执行,不管有没有异常
            }
            System.out.println("请重新输入:");		//break之后就不执行了
            in.next(); 	//重新输入数据
        }

在这里插入图片描述

多层异常捕获

在这里插入图片描述
在这里插入图片描述

面试题:

会异常try语句不能按正常的顺序执行情况有那几种?

1)

System.out(-1);捕捉异常后不知型finally里的代码。

在这里插入图片描述

2)

return语句 最后执行
public void method(){
try {
     // 代码段  1
} catch (异常类型 ex) {
     // 对异常进行处理的代码段 2
     return ; 4
}finally{
      // 代码段 3
}
}

3)

抛出异常与声明异常:throw、throws

throws抛出异常 完全可以替代 try catch语句

throw

throw是语句抛出一个异常,一般是在代码块的内部,当程序出现某种逻辑错误时由程序员主动抛出某种特定类型的异常.

public static void main(String[] args) { 
    String s = "abc"; 
    if(s.equals("abc")) { 
      throw new NumberFormatException(); 
    } else { 
      System.out.println(s); 
    } 
    //function(); 
}

在这里插入图片描述

throws

throws当某个方法可能会抛出某种异常时用于throws 声明可能抛出的异常,然后交给上层调用它的方法程序处理.

 public static void function() throws NumberFormatException {
        String s = "abc";
        System.out.println(Double.parseDouble(s));
    }

    public static void main(String[] args) {
        try {
            function();
        } catch (NumberFormatException e) {
            System.err.println("非数据类型不能强制类型转换。");
            //e.printStackTrace(); 
        }
    }

在这里插入图片描述

区别:

throws出现在方法函数头;而throw出现在函数体。
throws表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某种异常对象。

public class Test08 {
    void method() throws ArithmeticException{
        Scanner in=new Scanner(System.in);
        String str=in.next();
        try {
            if(str.equals("0")){
                throw new ArithmeticException();  //自己定义一个异常
            }
        }catch (Exception e){
            System.out.println("error by/0"); //处理异常
        }
    }
    public static void main(String[] args) throws Exception {
        Test08 t=new Test08();
        t.method();
    }
}

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值