学习java的第十二天
StringBuilder和StringBuffer常见方法
// 常见方法:
public static void main(String[] args) {
// 创建对象并直接指定空间大小
StringBuffer sb = new StringBuffer(50);
// 添加内容
sb.append("hello");
sb.append("world");
System.out.println(sb);
// 删除内容
sb.delete(0, 2); // 从0到2
sb.deleteCharAt(3);// 删除3号位
System.out.println(sb);
// 修改
sb.setCharAt(0, 'H');
System.out.println(sb);
// 插入
sb.insert(2, "abc");
System.out.println(sb);
}
StringBuilder和StringBuffer是同一个父类下面的两个不同的子类,它们具有基本相同的操作方式,
唯一不同的是在对字符数组进行改变(增删改)时,StringBuffer使用了synchronized关键字,
意味着是线程安全的,而StringBuilder没有,则意味着线程不安全。
1、输入两个整数,进行加减乘除运算,要处理输入格式异常和被零除的问题
public class Demo01 {
//1、输入两个整数,进行加减乘除运算,要处理输入格式异常和被零除的问题
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入两个整数");
try {
int num1 = sc.nextInt();
int num2 = sc.nextInt();
int num3 = num1 / num2;
} catch (InputMismatchException e) {
System.out.println("输入的格式不正确异常");
} catch (ArithmeticException e) {
System.out.println("除数为0异常");
}
}
}
2、分别写出代码引发异常,异常类型至少8种
public class Demo02 {
// 2、分别写出代码引发异常,异常类型至少8种
public static void main(String[] args) {
// t1(null);
// t2(3, 0);
// t3();
// t4();
// t5();
//t6();
//t7();
//t8();
t9();
}
public static int t1(String str) {
return str.length();//NullPointerException 空指针异常
}
public static int t2(int a, int b) {
return a / b;//ArithmeticException 算术异常
}
public static void t3() {
//ArrayIndexOutOfBoundsException 数组下标越界异常
int[] a = { 1, 4, 5 };
System.out.println(a[3]);
}
public static void t4() {
//StringIndexOutOfBoundsException 字符串下标越界异常
String str = "123";
str.substring(0, 12);
}
public static void t5() {
//NumberFormatException 数字格式异常
String str = "123asda";
int num = Integer.parseInt(str);
}
public static void t6() {
//ParseException 日期解析异常
String str = "123asda";
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
try {
Date date = dateFormat.parse(str);
System.out.println(date);
} catch (ParseException e) {
e.printStackTrace();
}
}
public static void t7() {
//InputMismatchException 输入格式异常
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个数字");
int nextInt = sc.nextInt();
}
public static void t8() {
//ClassCastException 类型转换异常
Object obj = "13";
int num = (int) obj;
}
public static void t9() {
//IllegalArgumentException 错误的参数异常
String str = "2012/12/12 12:12:12";
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
String string = dateFormat.format(str);
System.out.println(string);
}
}
3、定义学生类,定义姓名、年龄、性别属性和学习方法
// 定义一个方法,在方法中输入姓名、年龄、性别创建一个学生对象
// 性别输入错误,会抛出RuntimeException,并包含信息:性别必须是男或女
// 年龄输入错误,会抛出RuntimeException,并包含信息:年龄必须是18到30之间
// 用throws给方法声明RuntimeException异常
// 调用方法时,使用try-catch处理异常
public class Student {
// 3、定义学生类,定义姓名、年龄、性别属性和学习方法
// 定义一个方法,在方法中输入姓名、年龄、性别创建一个学生对象
// 性别输入错误,会抛出RuntimeException,并包含信息:性别必须是男或女
// 年龄输入错误,会抛出RuntimeException,并包含信息:年龄必须是18到30之间
// 用throws给方法声明RuntimeException异常
// 调用方法时,使用try-catch处理异常
public static void main(String[] args) {
try {
t1("丁源泉", 20, "男");
} catch (Exception e) {
e.printStackTrace();
}
}
private String name;
private int age;
private String sex;
public void study(){
System.out.println("正在学习");
}
public Student(String name, int age, String sex) {
super();
this.name = name;
this.age = age;
this.sex = sex;
}
public static void t1(String name, int age, String sex) throws Exception{
Student student = new Student(name, age, sex);
if(age < 18 || age >= 30){
throw new RuntimeException("年龄必须是18到30之间");
}
if(!sex.equals("男") && !sex.equals("女")){
throw new RuntimeException("性别必须是男或女");
}
}
}