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![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/c45abd22b6e25ce13de3a0c336bb776e.png)
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();
}
}