Java基础(七) -- 常用类

包装类

  • 针对八种基本数据类型相应的应用类型–包装类
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    public class Wrapper {
    public static void main(String[] args) {

    int i = 10;
    //手动装箱
    Integer iObj = new Integer(i);
    Integer iObj2 = Integer.valueOf(i);
    // 自动装箱
    Integer iObj3 = i;

    //手动拆箱
    int ii = iObj3.intValue();
    //自动拆箱
    int iii = iObj3;

    /*
    类方法使用
    */
    // 转为字符串
    String str1 = iObj.toString();
    // 字符串转int
    Integer si = Integer.parseInt("123");
    }
    }
  • Integer 类中使用自动或者 valueOf 转换时 -128 ~ 127 返回的是同一个对象

    String

  • 创建
    • 语法 String a = "gphper";
    • 底层 a变量直接指向常量值中的 “gphper” 地址
    • 语法 String a = new String("gphper");
    • 底层 变量a执行堆中创建的String对象的地址,独象中的value常量指向常量池中的 “gphper” 地址
  • 方法 intern() 返回的String对象中 value属性 指向的常量池中的地址

  • 凭借字符串的不同

    • String c = "hello"+"world"; 编译器自动将 “helloworld”添加到常量池中 c指向常量池地址
    • String a = "hello";String b = "world";String c = a + b c指向的是堆中的一个 String 对象,对象中的 value 指向的是常量池中的 “helloworld”
  • 常用方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
String a = "hello world ";
String b = "Hello world";
// 区分大小写比较是否相等
System.out.println(a.equals(b));
// 不区分大小写比较是否相等
System.out.println(a.equalsIgnoreCase(b));
// 获取长度
System.out.println(a.length());
// 指定字符第一次出现的位置
System.out.println(a.indexOf("o"));
// 指定字符最后一次出现的位置
System.out.println(a.lastIndexOf("o"));
// 截取字符串
System.out.println(a.substring(0,5));
// 去除空格
System.out.println(a.trim());
// 获取置顶位置字符
System.out.println(a.charAt(1));
// 全部大写
System.out.println(a.toUpperCase());
// 全部小写
System.out.println(a.toLowerCase());
// 连接字符串
System.out.println(a.concat("gphper"));
// 替换字符串
System.out.println(a.replace('h','l'));
// 字符串转数组
System.out.println(a.split(""));
// 字符串转字符数组
System.out.println(a.toCharArray());
// 先比较长度在逐个字符比较,返回最先不一样的字符的差值
System.out.println(a.compareTo(b));
// 格式化输出
System.out.println(String.format("我的名字%s,年龄%d", "gphper",28));

StringBuffer

StringBuilder

  • 线程不安全的,但是效率比 StringBuffer 快,单线程模式下建议使用 StringBuilder

String、StringBuffer、StringBuilder 区别

  1. StringBuilder 和 StringBuffer 非常相似,均代表可变的字符序列,而且方法也一样
  2. String:不可变字符序列,效率低,但复用性高
  3. StringBuffer:可变字符序列,效率较高【增删】、线程安全
  4. StringBuilder:可变字符序列,效率最高、线程不安全
  5. 如果对String 做大量修改,不要使用String