java之StringBuilder和StringBuffer用法区别,以及异常处理

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("性别必须是男或女");
		}
	}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值