Java(五)常用类

包装类

Java并不是纯面向对象的语言,比如经常用到的基本数据类型就不是对象,但是我们在实际应用中需要将基本数据转化成对象。因此,Java中为每个基本数据类型设计了一个对应的类进行表示:

包装类

package cn.Tony.Package;

public class TestPackage {
    public static void main(String[] args) {
        //基本数据类型转换包装类对象
        Integer a = new Integer(3);//写成Integer a = 100;也可以编译器会帮你转换
        Integer b = Integer.valueOf(5);//推荐
        //把包装类对象转成基本数据类型
        int c = b.intValue();//同理:int b = a;编译器会帮助修改
        double d = b.doubleValue();
        //字符串转换成包装类对象
        Integer e = new Integer("999");
        Integer f = Integer.parseInt("999988");
        //把包装类对象转换为字符串
        String str = f.toString();//""+f
        //常见的常量
        System.out.println(Integer.MAX_VALUE);
    }
}

public static Integer valueOf(int i) {
        if (i >= IntegerCache.low && i <= IntegerCache.high)
            return IntegerCache.cache[i + (-IntegerCache.low)];
        return new Integer(i);
    }
   //valueOf有缓存机制

缓存[-128,127]之间的数字,实际就是系统初始的时候,创建了[-128,127]之间的一个缓存数组。当我们调用valueOf()时,首先检查是否存在区间内,如果在范围内则直接从缓存数组中拿出已经建好的对象,如果不再这个范围,则创建新的Integer对象。

String类
package cn.Tony.Package;

public class TestString {
    public static void main(String[] args) {
        String str = "aaaabbbb";//赋值了就不能改变了
        String str2 = str.substring(2,5);
        //StringBuilder效率高,StringBuffer线程安全,效率低
        StringBuilder sb = new StringBuilder();
        //StringBuilder与String的区别就是StringBuilder可以修改

        System.out.println(Integer.toHexString(sb.hashCode()));
        System.out.println(sb);

        sb.setCharAt(2,'M');
        System.out.println(Integer.toHexString(sb.hashCode()));
        System.out.println(sb);
    }
}

public static void main(String[] args) {
        StringBuilder sb = new StringBuilder();
        for (int i=0;i<26;i++){
            sb.append((char)('a'+i));
        }
        System.out.println(sb);
        sb.reverse();//反转
        System.out.println(sb);
        sb.insert(0,"ssss").insert(3,"skr");//链式调用
        //循环累计方式:不要用str=i+str,要使用append。
        for(int i =0;i<5000;i++){
        str = str +i; //相当于产生了1w个对象,使用append
        }
    }
枚举

枚举类型的定义包括枚举声明和枚举体。

enum 枚举名{
	枚举体(常量列表)
}
        Season a = Season.AUTUMN;
        switch (a){
            case SPRING:
                System.out.println("春天来了");
        }
enum Season{
    SPRING,SUMMER,AUTUMN,WINTER
}

异常

Java处理异常的过程:

1.抛出异常:在执行一个方法时,如果发生异常,则这个方法生成代表该异常的一个对象,停止当前执行路径,并把异常对象提交给JRE

2.捕获异常:JRE得到该异常后,寻找相应的代码来处理该异常。JRE在方法的调用栈中查找,从生成异常的方法开始回溯,直到找到相应的异常处理代码为止。

异常的结构

异常分类

异常处理方式
package cn.Tony.Package;

public class TestException {
    public static void main(String[] args) {
        try{
            int a = 1/0;
        }catch (ArithmeticException e){
            System.out.println("报错"+e);
            e.printStackTrace();
        }finally {

        }
    }

}

手动抛出异常:

package cn.Tony.Package;

public class Test04 {
    public static void main(String[] args) {
        Person p = new Person();
        p.setAge(-10);
    }

}
class Person{
    private int age;

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        if (age<0){
            throw new IlegalAgeExcaption("年龄不能为负数"); //使用异常来处理
        }
        this.age = age;
    }
}
class IlegalAgeExcaption extends RuntimeException{ //异常分:运行时异常和编译异常,这里是运行时异常
    public IlegalAgeExcaption(){

    }
    public IlegalAgeExcaption(String msg){
        super(msg);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值