JavaAPI常用类02

目录

基本数据类型封装类

 包装类常用属性方法

8中基本数据类型各自所对应的包装类

以下方法以java.lang.Integer为例

代码

 运行

装箱和拆箱

装箱

何为装箱

代码

范围问题

代码

运行 

拆箱

代码

String类

概述

代码

运行

创建形式

画图讲解

代码

运行 

构造方法

代码

运行 

成员方法

判断功能

代码

 运行

获取功能

代码

运行 

转换功能

代码

运行 

替换功能  去除字符串两侧空格

代码

运行

StringBuffer类与StringBuilder类

StringBuffer类

添加功能

代码

运行 

删除功能

代码

运行

替换功能

代码

运行

反转功能

代码

运行

StringBuilder类

代码

运行

String类 --StringBuffer类--StringBuilder类


基本数据类型封装类

对于包装类来说,这些类的用途主要包含两种:

● 作为和基本数据类型对应的类类型存在。

● 包含每种基本数据类型的相关属性如最大值、最小值等,以及相关的操 作方法

 包装类常用属性方法

8中基本数据类型各自所对应的包装类

以下方法以java.lang.Integer为例

代码
package com.ffyc.javaapi.datatype;

import java.util.Scanner;

public class IntegerDemo1 {
    public static void main(String[] args) { 

        //如何获得一个int类型的包装对象
        //通过构造方法 new
        Integer a = new Integer(10);
        System.out.println(a);//10
        Integer b = new Integer("8");
        System.out.println(b);//8
        //通过valueOf()方法
        Integer c = Integer.valueOf(10);
        System.out.println(c);//10
        Integer d = Integer.valueOf("8");
        System.out.println(d);//8

        //非静态方法 直接对包装对象中的值操作
        int i = a.compareTo(b);//比较大小 返回-1 0 1
        System.out.println(i);//1
        System.out.println(a == b);//地址比:false
        System.out.println(a.equals(b));//数值比:false
        int j = a.intValue();//取出包装类型中的基本数据类型的值
        System.out.println(j);//10

        //静态方法 需要传参
        int e = Integer.compare(10, 8);
        System.out.println(e);//1
        String f = Integer.toHexString(12138);
        System.out.println(f);//返回16进制
        Integer.max(10, 8);

        int g = Integer.parseInt("20");//把字符串类型数值 转为基本类型int

    }
}
 运行

装箱和拆箱

装箱

何为装箱

         装箱:将基本类型可以自动转为包装类型
              int a = 10;
              Integer a1 = Integer.valueOf(a);
              Integer a2 = new Integer(a);

              Integer aa = a;自动装箱 直接把基本类型 赋值给包装类型
                                     底层是默认调用valueOf(a); 

代码
package com.ffyc.javaapi.datatype;

public class IntegerDemo2 {
    public static void main(String[] args) {
        int a = 10;
        Integer aa = a;
    }
}
范围问题

          public static Integer valueOf(int i) { 

             if (i >= IntegerCache.low && i <= IntegerCache.high)
                 return IntegerCache.cache[i + (-IntegerCache.low)];
             return new Integer(i);
          }
          自动装箱时,默认调用Integer类中valueOf(),
          这份方法内部对-128 -- +127之间进行缓存(数组),在此区间的自动装箱,不会创建新的Integer对象,直接从数组中获取即可
          超出此区间后,每次都会new 新的Integer对象 

代码
package com.ffyc.javaapi.datatype;

public class IntegerDemo3 {
    public static void main(String[] args) { 
        Integer a = 18;
        Integer b = 18;
        System.out.println(a == b);//true
        System.out.println(a.equals(b));//true

        Integer c = Integer.valueOf(128);
        Integer d = Integer.valueOf(128);
        System.out.println(c == d);//false
        System.out.println(c.equals(d));//true
    }
}
运行 

拆箱

         拆箱:将包装类型可以自动转为基本类型 型
                   底层用到的是intValue();

代码
package com.ffyc.javaapi.datatype;

public class IntegerDemo2 {
    public static void main(String[] args) { 
        int a = 10;
        Integer aa = a;

        int bb = aa;
    }
}

String类

概述

      Java.lang.String代表字符串
      Java中凡是""括起来的 都是String类的实例(对象)
      字符串的值不可改变的,一旦字符串对象被创建,它的值就不能改变了

      底层存储字符串内容的数组,是被final修饰的,必须在对象创建之处由构造方法去创建
      private final char value[];

      String s = "abc";   abc
             s += "aaa";  abcaaa
             s += "bbb";  abcaaabbb
             s += "ccc";  abcaaabbbccc  每次+= + 其实都是创建了一个新的字符串对象 

代码
package com.ffyc.javaapi.stringdemo;

public class StringDemo1 { 
    public static void main(String[] args) {
        String s = "abc";//[a,b,c]
        s += "aaa";
        s += "bbb";
        s += "ccc";
        System.out.println(s);
    }
}

运行

创建形式

      Java中字符串创建的两种方式
      方式一:
        String s1 = "abc";
        String s2 = "abc";
        在第一次创建s1变量时,会去内存中有一个叫字符串常量池的空间检索,有没有此内容的一个字符串对象,
        如果没有,就会在字符串常量池中创建一个字符串对象,把对象的地址赋给s1.
        在第二次创建s2变量时,会去字符串常量池中查找,如果有,直接将之前创建的字符串对象赋值给s2.
        一旦出现要创建的字符串对象内容一致,返回拿到的是同一个字符串对象的地址
      方式二:
        String s3 = new String("abc");
        String s4 = new String("abc");
        无论是否存在相同内容的字符串对象,都会创建一个新的字符串对象

画图讲解

代码
package com.ffyc.javaapi.stringdemo;

public class StringDemo2 { 
    public static void main(String[] args) {
        String s1 = "abc";
        String s2 = "abc";
        System.out.println(s1 == s2);//true
        System.out.println(s1.equals(s2));//true

        s1 += "aaa";
        System.out.println(s1);

        String s3 = new String("abc");
        String s4 = new String("abc");
        System.out.println(s3 == s4);//false
        System.out.println(s3.equals(s4));//true
    }
}
运行 

构造方法

     String 构造方法 
     String(); 无参
     String("abc");有参
     String(byte[] bytes);
     String(char[] bytes); 

代码
package com.ffyc.javaapi.stringdemo;

import java.io.UnsupportedEncodingException;
import java.util.Arrays;

public class StringDemo3 { 
    public static void main(String[] args) throws UnsupportedEncodingException {
        String s1 = new String();//  this.value = "".value;
        String s2 = new String("abc");

        String s3 = "abc你好";
        //把字符串转为byte类型  转码
        //byte[] bytes = s3.getBytes();
        //把字符串转为byte类型  转码
        byte[] bytes = s3.getBytes("utf-8");
        System.out.println(bytes);//[B@1b6d3586
        System.out.println(Arrays.toString(bytes));//[97, 98, 99, -28, -67, -96, -27, -91, -67]

        //String s4 = new String(bytes);解码
        String s4 = new String(bytes,"utf-8");//解码
        System.out.println(s4);//abc你好

        String s5 = "bced";
        //字符串--->转为char数组
        char chars[] = s5.toCharArray();
        Arrays.sort(chars);
        //char数组--->字符串
        String s6 = new String(chars);
        System.out.println(s6);//bcde

    }
}
运行 

成员方法

判断功能

      成员方法
      ● 判断功能
         boolean equals(Object obj)
         boolean equalsIgnoreCase(String str)
         boolean contains(String str)
         boolean isEmpty()D
         boolean startsWith(String prefix)
         boolean endsWith(String suffix) 

代码
package com.ffyc.javaapi.stringdemo;

public class StringDemo4 { 
    public static void main(String[] args) {
        String s1 = "abcd";
        String s2 = "";
        //null--->关键字  ""--->字符串对象的值是""
        //String s3 = null; 

        //判断值是否相等
        System.out.println(s1.equals("abcd"));//true
        //忽略大小写
        System.out.println(s1.equalsIgnoreCase("abcD"));//true 

        //判断是否包含子串(字串必须是连续的)
        System.out.println(s1.contains("ab"));//true
        System.out.println(s1.contains("ab"));//true
        System.out.println(s1.contains("ac"));//false  

        //判断是否是空串""
        System.out.println(s1.isEmpty());//false
        System.out.println(s2.isEmpty());//true 
        //System.out.println(s3.isEmpty());

        //判断是否以指定的子串开头
        System.out.println(s1.startsWith("ab"));//true  
        //判断是否以指定的子串结尾
        System.out.println(s1.endsWith("bd"));//false  
    }
}
 运行

获取功能

      成员方法 
      ● 获取功能
         int length()
         char charAt(int index)
         int indexOf(String str)
         int indexOf(String str,int fromIndex)
         String substring(int start)
         String substring(int start,int end) 

代码
 package com.ffyc.javaapi.stringdemo;

 public class StringDemo5 { 
    public static void main(String[] args) {
        String s1 = "abcdcde";
                   //0123456
        //获取长度
        System.out.println(s1.length());//4 
        //通过索引找位置
        System.out.println(s1.charAt(1));//b 
        //返回指定字符首次出现的位置
        System.out.println(s1.indexOf("c"));//2 
        //返回指定字符串首字母首次出现的位置
        System.out.println(s1.indexOf("c"));//2
        //从指定位置开始查找
        System.out.println(s1.indexOf("c", s1.indexOf("c")+1));//4 
        //从后向前查找
        System.out.println(s1.lastIndexOf("c"));// 4
        //从指定位置开始查找
        System.out.println(s1.lastIndexOf("c", 3));//2 

        /*//从指定的位置开始截取字符串,返回一个新的子字符串
        String s = s1.substring(3);
        System.out.println(s);//dcde*/
        //从指定的位置开始到指定的位置结束(不包含结束)截取字符串,返回一个新的子字符串
        String s = s1.substring(0,4);
        System.out.println(s);//abcd
    }
}
运行 

转换功能

      构造方法 
      ● 转换功能
         byte[] getBytes()
         char[] toCharArray()
         static String valueOf(char[] chs)
         String toLowerCase()
         String toUpperCase()
         String concat(String str)
         Stirng[] split(分割符); 

代码
package com.ffyc.javaapi.stringdemo;

import java.util.Arrays;

public class StringDemo6 { 
    public static void main(String[] args) {
        Integer a = null;
        //System.out.println(a.toString());
        //把其他类型转为字符串 建议使用的,避免出现空指针异常
        String s = String.valueOf(a);
        System.out.println(s);

        char[] c = {'a','b','c'};
        //基本数据类型转成字符串表示形式
        String s1 = String.valueOf(c);
        System.out.println(s1);//abc

        String s2 = "abcDEF你好";
        //将字符串的所有字符转换为小写字母。
        System.out.println(s2.toLowerCase());//abcdef你好
        //将字符串的所有字符转换为大写字母。
        System.out.println(s2.toUpperCase());//ABCDEF你好

        String s3 = s2.concat("wwwww");
        //将指定的字符串拼接到字符串末尾,返回一个新的字符串
        System.out.println(s3);//abcDEF你好wwwww

        String s4 = "abc;de;fg";
        //正则表达式  使用指定的一个字符,将字符串分割为一个String类型数组
        String[] strings = s4.split(";");
        System.out.println(Arrays.toString(strings));//[abc, de, fg]
    }
}
运行 

替换功能  去除字符串两侧空格

      构造方法 
      ● 替换功能
         String replace(char old,char new)
         String replace(String old,String new)
         replaceAll(String regex, String replacement)
         replaceFirst(String regex, String replacement)
      ● 去除字符串两空格
         String trim() 

代码
package com.ffyc.javaapi.stringdemo;

public class StringDemo7 { 
    public static void main(String[] args) {
        String s1 = "abcdecfg";
        //替换字符串中指定字符的所有值
        System.out.println(s1.replace('c', 'C'));//abCdeCfg
        System.out.println(s1.replace("cd", "jj"));//abjjecfg

        //replaceAll()使用正则表达式匹配需要替换的内容
        System.out.println(s1.replaceAll("c", "CC"));//abCCdeCCfg
        System.out.println(s1.replaceFirst("c", "o"));//abodecfg

        String s2 = " asd sax ";
        System.out.println(s2.length());//9
        //求字符串长度
        System.out.println(s2.trim().length());//7
        System.out.println(s2.replace(" ", "").trim().length());//6
    }
}
运行

StringBuffer类与StringBuilder类

StringBuffer类

     因为String声明的对象值一旦给定不能再改变
     每次拼接都会创建新的字符串对象,耗时占用空间

     StringBuffer是内容可以改变的字符串
     char[] value;没有使用final修饰,每次添加内容都是对此数组进行操作,不会创建新的字符串对象 

添加功能

代码
package com.ffyc.javaapi.stringdemo;

public class StringBufferDemo { 
    public static void main(String[] args) {
        //添加功能
        //创建一个内容长度+16的char数组 20
        StringBuffer s1 = new StringBuffer("abcd");
        System.out.println(s1.append("efg"));

        //空参的构造方法 指定底层数组的长度是16
        StringBuffer s2 = new StringBuffer();
        System.out.println(s2.append("cz"));

        //自定义容量  自动扩容
        StringBuffer s3 = new StringBuffer(10);
        s3.append("chjbp");
        s3.append("kl");
        System.out.println(s3.append("ffgg"));

        //指定位置添加元素
        StringBuffer s4 = new StringBuffer("abc");
        System.out.println(s4.insert(2, "A"));
    }
}
运行 

删除功能

代码
package com.ffyc.javaapi.stringdemo;

public class StringBufferDemo { 
    public static void main(String[] args) {
        //删除功能
        StringBuffer s1 = new StringBuffer("abcd");
        //删除指定位置元素
        System.out.println(s1.deleteCharAt(2));
        //删除指定位置的元素 包含开始位置,不包含结束位置
        System.out.println(s1.delete(0, 2)); 
    }
}
运行

替换功能

代码
package com.ffyc.javaapi.stringdemo;

public class StringBufferDemo { 
    public static void main(String[] args) { 
        //替换功能
        StringBuffer s1 = new StringBuffer("abcalkdswbc");
        //替换指定区间元素,包含开始位置,不包含结束位置
        System.out.println(s1.replace(0, 3, "aaa"));
    }
}
运行

反转功能

代码
package com.ffyc.javaapi.stringdemo;

public class StringBufferDemo { 
    public static void main(String[] args) { 
        //反转功能
        StringBuffer s1 = new StringBuffer("abcdefg");
        //将字符串逆序
        System.out.println(s1.reverse());
        //截取字符串,从StringBuffer中截取一个字符串副本,返回一个新的String对象,StringBuffer对象本身不变
        String str = s1.substring(0, 3);
        System.out.println(str);
    }
}
运行

StringBuilder类

StringBuilder类功能和StringBuffer功能完全一致, StringBuffer是线程 安全的

代码
package com.ffyc.javaapi.stringdemo;

public class StringBuilderDemo { 
    public static void main(String[] args) {
        StringBuilder s1 = new StringBuilder();
        StringBuilder s2 = new StringBuilder("abcd");
        StringBuilder s3 = new StringBuilder(10);
        System.out.println(s2.append("efg"));
        System.out.println(s2.insert(1, " "));
    }
}

运行

String类 --StringBuffer类--StringBuilder类

      String:是一个值不可以改变的字符串 
      StringBuffer:值可以改变且不需要创建新对象,方法上都加了锁,是在多线程(任务)执行时是线程安全的
      StringBuilder:值可以改变且不需要创建新对象,由于方法上都没有枷锁,在多线程(任务)执行时是线程不安全的,适合单线程 

  • 23
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值