Java小白踩坑录 - 字符 & 字符串(一)

简介: Java小白踩坑录 - 字符 & 字符串(一)

Java 中的大头儿子和小头爸爸


image.png


Java 中也有一对冤家对头,它们就是字符串 String 和字符 char 。来看看它们的表现吧


System.out.println("h"+"i");
System.out.println('h'+'i');

会打印出什么呢?结果可能出乎你的意料:


hi
209

为什么会出现 209 这个结果呢?


编译器在计算常量表达式 ‘h’+‘i’ 时,是通过我们熟知的拓宽原始类型转换,将两个具有字符型数值的操作数(‘h’和’i’)提升为 int 数值而实现的。从 char 到 int 的拓宽原始类型转换,是将 16 位的 char 数值零扩展到 32 位的 int。对于’h’,char 数值是 104,而对于’i’,char 数值是 105,因此表达式 ‘h’+‘i’ 等价于 int 常量 104 + 105,或 209。


有三种方式避免出现 char 的连接问题。第一种最简单:



System.out.println("" + 'h' + 'i');

第二种:使用函数:

System.out.printf("%c%c", 'h', 'i');

或者:

System.out.println(String.format("%c%c", 'h','i'));

第三种,利用 API 拼装:

StringBuffer sb = new StringBuffer();
sb.append('h');
sb.append('i');
System.out.println(sb);

也许你会认为这比较简单,那我们就见识一个比较复杂点的吧!


private static Random rnd = new Random();
  public static void main(String[] args) {
    StringBuffer word = null;
    switch(rnd.nextInt(2)) {
      case 1: word = new StringBuffer('P');
      case 2: word = new StringBuffer('G');
      default: word = new StringBuffer('M');
  }
  word.append('a');
  word.append('i');
  word.append('n');
  System.out.println(word);
}   
目录
相关文章
|
9天前
|
自然语言处理 Java
Java中的字符集编码入门-增补字符(转载)
本文探讨Java对Unicode的支持及其发展历程。文章详细解析了Unicode字符集的结构,包括基本多语言面(BMP)和增补字符的表示方法,以及UTF-16编码中surrogate pair的使用。同时介绍了代码点和代码单元的概念,并解释了UTF-8的编码规则及其兼容性。
81 60
|
2月前
|
SQL Java 索引
java小工具util系列2:字符串工具
java小工具util系列2:字符串工具
152 83
|
2月前
|
存储 安全 Java
Java零基础-字符串详解
【10月更文挑战第18天】Java零基础教学篇,手把手实践教学!
116 60
|
2月前
|
Java 数据库
java小工具util系列1:日期和字符串转换工具
java小工具util系列1:日期和字符串转换工具
62 26
|
2月前
|
存储 缓存 安全
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
68 8
|
2月前
|
缓存 算法 Java
本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制
在现代软件开发中,性能优化至关重要。本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制。通过调整垃圾回收器参数、优化堆大小与布局、使用对象池和缓存技术,开发者可显著提升应用性能和稳定性。
56 6
|
3月前
|
Java 数据库
案例一:去掉数据库某列中的所有英文,利用java正则表达式去做,核心:去掉字符串中的英文
这篇文章介绍了如何使用Java正则表达式从数据库某列中去除所有英文字符。
80 15
|
3月前
|
Java
JAVA易错点详解(数据类型转换、字符串与运算符)
JAVA易错点详解(数据类型转换、字符串与运算符)
66 4
|
4月前
|
Java 数据库
java小工具util系列1:日期和字符串转换工具
java小工具util系列1:日期和字符串转换工具
59 3
|
4月前
|
SQL Java 索引
java小工具util系列2:字符串工具
java小工具util系列2:字符串工具
27 2