Java包装类;字符串处理类:String;StringBuffer;StringBuilder;字符串处理类的常用方法;异常处理机制;异常分类;常见Runtime异常;

一,包装类

          什么是包装类:

                 包装类是对于八种基本数据类型而言的,八种数据类型都有其对应的包装类。
                 以前定义变量,经常使用基本数据类型,对于基本数据类型来说,它就是一个数,加点属性,加点方法,加点构造器。
                将基本数据类型对应进行了一个封装,产生了一个新的类,--->包装类。注:包装类是引用数据类型。

              包装类后可以对包装后的数据进行.+方法的操作,可对该数据进行原本基本数据不能进行的操作。
                   int,byte.....--->基本数据类型
                   包装类--->引用数据类型

         基本数据类型和包装类的对应关系:


基本数据类型          对应的包装类                继承关系
byte                          Byte                           ---》Number---》Object
short                         Short                         ---》Number---》Object
int                             Integer                      ---》Number---》Object
long                          Long                          ---》Number---》Object
float                          Float                          ---》Number---》Object
double                      Double                      ---》Number---》Object
char                          Character                  Object
boolean                    Boolean                    Object

      为什么需要包装类:

              
                   
     1.基本数据类型不具备面向对象思想(不能对象.调用方法())。

                         2.Java中集合需要将数据类型转换为引用数据类型才可以使用集合。

     包装类特有的机制:自动装箱  自动拆箱:

     //自动装箱:int--->Integer
        Integer i = 12;
        System.out.println(i);
        //自动拆箱:Integer--->int
        Integer i2 = new Integer(12);
        int num = i2;
        System.out.println(num);

二,字符串处理类

  Java中字符串处理类种类:

Java中准备的字符串处理类一共有3种:


                      String:  不可变的字符串   (对内容进行修改,会新增地址,不变的是地址对于的值不变)
                      StringBuffer: 可变字符串 ,线程安全的,   效率低
                      StringBuilder:可变字符串 ,线程不安全,  效率高  

                                                                         补:字符串处理类拥有的方法基本相同。

                                                                         

             补: 可变和不可变、


                                                                                                                                                                                不可变:        一个内存地址只对应一个值;   赋一个值,一个地址就会绑定该数,再赋值会有新地址。(可变不可变原理:存储String时是final类型数组,地址不变,其它可变是因为没有final类型修饰)
                                                                                                                                                                               可变:一个内存地址可以对应多个值。是指地址不变,改值。对StringBuffer 和 StringBuilder 类型的值进行修改,地址不变。

字符串处理类相关的方法大部分类似,以String为例介绍字符串常用方法

三,字符串处理类常用方法:

获取字符串长度


使用 length() 方法可以获取字符串的长度(字符的个数)。

String str = "Hello, World!";
int length = str.length();
System.out.println("字符串的长度为: " + length); // 输出:字符串的长度为: 13


获取指定位置的字符


使用 charAt() 方法可以获取字符串中指定索引位置的字符。

String str = "Hello";
char ch = str.charAt(1); // 获取索引为1的字符,即 'e'
System.out.println("索引1处的字符为: " + ch); // 输出:索引1处的字符为: e


拼接字符串


使用 concat() 方法或者 + 运算符可以拼接多个字符串。

String str1 = "Hello";
String str2 = "World";
String result = str1.concat(" ").concat(str2);
System.out.println("拼接后的字符串为: " + result); // 输出:拼接后的字符串为: Hello World


字符串比较


使用 equals() 方法或者 compareTo() 方法可以比较字符串是否相等或者大小关系。

String str1 = "hello";
String str2 = "Hello";
if (str1.equals(str2)) {
    System.out.println("字符串相等");
} else {
    System.out.println("字符串不相等");
}

// 使用 compareTo() 比较大小关系
int comparison = str1.compareTo(str2);
if (comparison == 0) {
    System.out.println("字符串相等");
} else if (comparison < 0) {
    System.out.println("str1 小于 str2");
} else {
    System.out.println("str1 大于 str2");
}


查找子字符串


使用 indexOf() 方法可以查找子字符串在原字符串中第一次出现的位置。

String str = "Hello, World!";
int index = str.indexOf("World");
System.out.println("子字符串在原字符串中的位置为: " + index); // 输出:子字符串在原字符串中的位置为: 7


切割字符串


使用 split() 方法可以根据指定的分隔符将字符串分割成子字符串数组。

String str = "apple,orange,banana";
String[] fruits = str.split(",");
for (String fruit : fruits) {
    System.out.println("水果: " + fruit);
}
// 输出:
// 水果: apple
// 水果: orange
// 水果: banana


字符串替换


使用 replace() 方法可以替换字符串中的指定字符或字符串。

String str = "Hello, World!";
String replaced = str.replace("Hello", "Hi");
System.out.println("替换后的字符串为: " + replaced); // 输出:替换后的字符串为: Hi, World!


字符串转换大小写


使用 toUpperCase() 和 toLowerCase() 方法可以将字符串转换为大写或小写。

String str = "Hello, World!";
String upperCase = str.toUpperCase();
String lowerCase = str.toLowerCase();
System.out.println("大写字符串: " + upperCase);
System.out.println("小写字符串: " + lowerCase);
// 输出:
// 大写字符串: HELLO, WORLD!
// 小写字符串: hello, world!

四,异常处理机制:

                 作用/目的:         保证程序不是因为一些小问题就终止,而是可以正常运行

异常的分类:

                异常处理机制可以根据处理方式和异常类型进行分类。在Java中,异常主要分为两类:已检查异常(Checked Exceptions)和未检查异常(Unchecked Exceptions)。

1. 已检查异常 (Checked Exceptions)


         已检查异常是指编译器在编译时强制检查的异常,必须在代码中显式处理或声明抛出。通常情况下,这些异常是由外部因素(如文件不存在、网络连接中断等)导致的,程序本身无法避免或预料到的情况。

例:IOException:处理文件操作中的输入输出异常,如文件不存在、读写权限问题等。
 

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class CheckedExceptionExample {
    public static void main(String[] args) {
        try {
            BufferedReader reader = new BufferedReader(new FileReader("file.txt"));
            String line = reader.readLine();
            System.out.println("读取的内容: " + line);
            reader.close();
        } catch (IOException e) {
            System.out.println("文件操作出错: " + e.getMessage());
        }
    }
}


2. 未检查异常 (Unchecked Exceptions也称运行异常:Runtime Exceptions)


        未检查异常是指编译器在编译时不强制检查的异常,也称为运行时异常。这类异常通常是由程序错误引起的若未处理会导致程序终止,如空指针引用、数组下标越界等,通常应通过编码规范和测试来避免。

例:

NullPointerException:当程序试图访问一个空对象的成员变量或方法时抛出。

public class UncheckedExceptionExample {
    public static void main(String[] args) {
        String str = null;
        try {
            System.out.println("字符串长度: " + str.length()); // 这里会抛出 NullPointerException
        } catch (NullPointerException e) {
            System.out.println("发生空指针异常: " + e.getMessage());
        }
    }
}

异常处理的两种应对方案:


             第一种:try catch方法:

                        主要用于“出现的问题,我能解决”(即我可以发现明确知道那些代码可能会出哪些对应错误)用于捕获和处理异常,允许在发生异常时执行特定的代码块。

           使用方法     

         try{//try复制监控异常,在try的大括号中写入可能出现异常的代码

                                                                                                                                                                                      }catch(){//catch捕获异常

                                                                                                                                                                                   }finally{//善后异常(一般来讲都是对一些占有资源的关闭)finally中的代码一定执行,不管有没有报错。

                                 }

                                                                                          

注:try里代码没有问题:不执行任何catch,执行finally,
                有问题:执行类型匹配的catch块内容,执行finally
                                         没有找到匹配的catch,扔执行finally,报错

  第二种:throws方法

        用于:“出现的问题,解决不了”即不清楚会出什么错误,用于方法声明中,表示方法可能抛出的异常类型,让调用者处理异常。。

直接在方法或类声明时在后方加                       throws         +异常类型

五,常见Runtime异常:

NullPointerException(空指针异常):
                    

        当试图访问一个空对象的成员变量或者调用空对象的方法时抛出。
常见原因包括未初始化对象引用、调用返回空值的方法并试图使用其结果、显式设置为null的对象等。


ArrayIndexOutOfBoundsException(数组越界异常):
                    

        当尝试访问数组中不存在的索引位置时抛出。
常见原因包括使用超出数组长度的索引、使用负数索引、在尝试访问数组之前未对其进行初始化等。


ClassCastException(类转换异常):
                    

当试图将一个对象强制转换为不是其子类的类类型时抛出。
常见原因包括将对象转换为其实际类型不兼容的类型、在继承结构中转换类型时出现问题等。


NumberFormatException(数字格式异常):
                    

当试图将一个字符串转换为数值类型(如int、float、double等)但字符串的格式不正确时抛出。
常见原因包括字符串包含无法转换为数字的字符、字符串为空或不包含有效的数字字符等。


FileNotFoundException(文件未找到异常):
                    

当试图打开一个不存在的文件时抛出。
常见原因包括文件路径错误、文件不存在或者无法被当前程序访问等。


ArithmeticException(算术异常):
                    

当发生数学运算错误时抛出,例如除数为零。
常见原因包括试图将一个数除以零、在数学计算中出现溢出等。


IOException(输入输出异常):
                    

当发生输入输出操作失败或被中断时抛出,是许多其他I/O异常的父类。
常见原因包括文件操作期间发生错误、网络操作失败、设备断开连接等。


RuntimeException(运行时异常):
                    

是所有运行时异常的父类,通常不需要显式捕获或声明。
包括诸如NullPointerException、ArrayIndexOutOfBoundsException等在内的许多常见异常都属于RuntimeException的子类。
                      

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值