String

常用操作

概念

String实际上是一个引用类型,本身是一个封装了char数组的class(最新的jdk内部通过byte进行实现),并且内部所有字段都以final进行了修饰,所以String引用的对象属性一般是无法更改的,但可以通过反射予以改变。String对象是不可变的,所以所有对字符串操作的方法都是以返回值对字符串引用重新赋值的方式进行。
详情可见:Java中的String为什么是不可变的? — String源码分析

其他类型转换为String

要把任意基本类型或引用类型转换为字符串,可以使用静态方法valueOf()。这是一个重载方法,编译器会根据参数自动选择合适的方法:

  1. String.valueOf(123); // "123"
  2. String.valueOf(45.67); // "45.67"
  3. String.valueOf(true); // "true"
  4. String.valueOf(new Object()); // 类似java.lang.Object@636be97c

String类型转换为其他类型

要把字符串转换为其他类型,就需要根据情况。例如,

  • 把字符串转换为int类型:

    1. int n1 = Integer.parseInt("123"); // 123
    2. int n2 = Integer.parseInt("ff", 16); // 按十六进制转换,255
  • 把字符串转换为boolean类型:

    1. boolean b1 = Boolean.parseBoolean("true"); // true
    2. boolean b2 = Boolean.parseBoolean("FALSE"); // false

要特别注意,Integer有个getInteger(String)方法,它不是将字符串转换为int,而是把该字符串对应的系统变量转换为Integer

  1. Integer.getInteger("java.version"); // 版本号,11

String与char[]互转

Stringchar[]类型可以互相转换,方法是:

  1. char[] cs = "Hello".toCharArray(); // String -> char[]
  2. String s = new String(cs); // char[] -> String