基本数据类型包装类 装箱 拆箱

1.基本数据类型包装类

    基本数据类型    默认值        引用数据类型    默认值
    byte        0        Byte        null
    short        0        Short        null
    int        0        Integer        null
    long        0        Long        null
    float        0.0        Float        null
    double        0.0        Double        null
    char        ''        Character    null
    boolean        false        Boolean        null

    基本数据类型之间的关系 互相兼容
    基本数据类型对应的包装类 不存在任何关系
        一点点关系 个别是兄弟 是继承于Number类的子类
    基本数据类型 和 基本数据类型包装类之间的转换
        装箱:
            将基本数据类型 封装成对应的包装类类型
            语法:
                jdk>=1.5 自动装箱
                    包装类型 对象的引用 = 基本数据类型;
                    默认调用了static Integer valueOf(int i) 方法完成
                jdk<1.5 手动装箱
                    包装类型 对象的引用 = new 包装类型(基本数据类型)

        int age = 20; 
        Integer Obj = age; 
       在自动装箱时 编译器自动调用了 static Integer valueOf(int i) 方法
       当发生自动拆箱时 编译器自动调用了 public int intValue()方法
        Integer ageObj2 = new Integer(age);
        int age2 = ageObj;
        拆箱:
            将包装类型 拆成基本数据类型
            语法:
                jdk>=1.5 自动拆箱
                    基本数据类型 变量名 = 包装类的对象;
                    默认调用了int intValue()方法完成
                jdk<1.5 手动拆箱
                    基本数据类型 变量名 = 包装类的对象的引用.intValue();
        
    字符串和基本数据类型之间的转换问题

        String ---> int 
                web阶段 文本框 输入的都是String类型
        
        //第一种
        String s = "111";
        //Integer(String s) 使用Integer的构造方法 传入String 创建Integer对象
        Integer in = new Integer(s);//NumberFormatException 在进行String类型转换的时候 要求String里面包含的内容必须是数字
        //Integer 转成 int 手动拆箱
        int c = in.intValue();
        System.out.println("转:::::"+c);
        //第二种 static int parseInt(String s) 使用Integer类中的静态方法 完成String转成int
        int d = Integer.parseInt(s);
        System.out.println("转:::::"+(d+c));

        int ---> String
        int e = 300;
        //第一种
        String s1 = e + ""; //+ 代表连接符号 当一个基本数据类型 + ""就变成了String
        //第二种
        Integer in2 = new Integer(e);
        String s2 = in2.toString(); //将 Integer转成String类型
        //第三种 使用Integer类中的静态方法完成 int -->String
        String s3 = Integer.toString(e);
        //第四种 String 类 static String valueOf(int i) 
        String s4 = String.valueOf(e);
    注意事项:
        1.虽然基本数据类型包装类 是引用数据类型 但是在方法传参的时候 它传的都是值本身
        2.== 在java中比较对象时 永远比较的是地址值Integer a==Integer b -->false

            分析
            test方法的参数 Integer类型
            执行test(100,100)首先会装箱(内存中100只有个一地址值)
            然后再执行方法体 比较 a 和 b 的地址值是否相同
            
            Integer在自动装箱的时候 调用了 valueOf()方法
            如果int 类型的值 落在
            -128 to 127 范围之间 就不创建新的对象了  直接将输入的值原封不动的返回去
            如果不在这个范围内 就会创建新的对象
2.String
    String 是所有类中用的最频繁的类
        String 字符串的意思
        String 特性:
            一经创建 不能被改变 -->字符串常量
            String类其实是通过char数组来保存字符串的
        内存:
            JVM为了提高性能 和 减少内存开销 内部维护了一个字符串常量池
            每当创建字符串常量时 JVM首先会先查找字符串常量池中是否已经有该常量
            如果已经存在 则返回常量池中的字符串对象
            如果不存在 就创建新的字符串对象并放入常量池中
    常用方法:
        1.获取
            1.1 返回此字符串的长度
                int length()
            1.2 根据位置 获取该位置上的某一个字符
                char charAt(int index)
            1.3 根据字符获取该字符在字符串中出现的位置
                int indexOf(int ch)
                    要找的是 值 只能返回该字符第一次出现的位置
                int indexOf(int ch,int fromIndex)
                    第一个参数 要找的是 值  第二个参数 从什么位置开始找(包含当前位置 从0开始)
                int indexOf(String str)
        2.判断
            2.1 字符串中是否包含一个子字符串
                boolean contains(str)
            2.2 字符串中是否有内容
                boolean isEmpty()
            2.3 字符串是否以指定的内容开始
                boolean startsWith(str)
            2.4 字符串是否以指定的内容结束
                boolean endsWith(str)
            2.5 比较两个字符串是否相等
                boolean equals(String str)
            2.6 比较两个字符串是否相等 忽略大小写比较
                boolean equalsIgnoreCase(str)
        3.转换
            3.1 将字符数组转成字符串
                构造方法
                String(char[] value) 
                String(char[] value, int offset, int count) 
                    从offset位置开始 取count个
                静态方法
                static String copyValueOf(char[] data) 
            3.2 将字符串转成字符数组
                char[] toCharArray() 
            3.3 将基本数据类型转成字符串
                static String valueOf(int i) 
        4.替换
            4.1 替换字符串中的旧的字符 找到了就替换 找不到就原样返回
            String replace(String old,String new)
        5.切割
            String[] split(String str)
        6.截取
            String substring(int beginIndex)
            String substring(int beginIndex,int endIndex)
        7.拼接
            拼接两个字符串 "+"
            String concat(String str)将指定字符串连接到此字符串的尾部
        8.去空格
            String trim()
                只能去除字符串两侧的空格 中间的不能去除
        9.比较*
            int compareTo(String);
                返回值
                    如果参数字符串等于此字符串,则返回值 0;
                    如果此字符串按字典顺序小于字符串参数,则返回一个小于 0 的值;
                    如果此字符串按字典顺序大于字符串参数,则返回一个大于 0 的值。

                    =0 当前字符串 和 参数字符串 一致
                    <0 当前字符串 小于 参数字符串
                    >0 当前字符串 大于 参数字符串
                    
                    逐个进行比较--->就是相减

        10.匹配
            此字符串是否匹配给定的正则表达式
            boolean matches(String 正则)
            
3.StringBuffer 和 StringBuilder

猜你喜欢

转载自blog.csdn.net/weixin_42738506/article/details/81211060