Java中字符与字符串如何互转_Java字符处理语法说明

char是16位基本类型,String是不可变引用类型;char转String推荐String.valueOf(),String转char需先确保长度为1再用charAt();批量转换用new String(char[])或toCharArray();处理emoji等需用codePoint相关方法。

Java中字符(char)与字符串(String)的相互转换非常直接,核心在于理解两者本质:char是16位基本数据类型,表示单个Unicode字符;String是不可变的引用类型,本质是字符序列。

char转String的常用方式

最推荐、最高效的方式是使用String.valueOf(char),它专为基本类型设计,简洁且无多余对象创建。

  • 推荐写法String s = String.valueOf('A');
  • 也可用空字符串拼接String s = "" + 'A';(编译器会优化,但语义不如valueOf清晰)
  • 不建议用n

    ew String(char[])
    new String(new char[]{'A'})会额外创建数组和String对象,效率低且冗余

String转char的关键限制

字符串可能含0个、1个或多个字符,因此不能无条件“转成char”。只有当字符串长度为1时,才能安全获取其唯一字符。

  • 安全取单字符char c = s.charAt(0);(需先判断s.length() == 1
  • 转为字符数组再取char c = s.toCharArray()[0];(同样要求非空且长度为1,否则抛StringIndexOutOfBoundsExceptionArrayIndexOutOfBoundsException
  • 避免直接强转:Java不支持(char)str这类语法,编译报错

批量字符与字符串互转场景

处理多个字符时,常涉及char[]String的转换,这是实际开发高频操作。

  • char数组转StringString s = new String(charArray);String s = String.valueOf(charArray);
  • String转char数组char[] chars = s.toCharArray();(注意返回的是副本,修改不影响原字符串)
  • 截取部分字符转数组char[] sub = s.substring(1, 3).toCharArray();

Unicode与扩展字符注意事项

Java的char是UTF-16编码单位,一个emoji或某些汉字可能占两个char(即代理对)。此时charAt()toCharArray()可能无法正确拆分语义字符。

  • 需要按Unicode码点处理时,用s.codePointAt(i)s.offsetByCodePoints()
  • 遍历所有字符应使用s.codePoints().forEach(...)或传统循环配合Character.isSurrogatePair()判断
  • 简单场景下无需考虑,但处理国际化文本或emoji时必须留意