【编程】89%的人不知道的字符拼接成字符串的注意点

简介: 【编程】89%的人不知道的字符拼接成字符串的注意点

【编程】89%的人不知道的字符拼接成字符串的注意点

这两天敲代码的时候,偶然间发现一个好玩的事情,分享一下,记录一下。

该段代码主要是:先产生的几个整数,把整数转换成对应的字符,最后的字符拼接成字符串,在把字符拼接成字符串的时候,个人因为偷懒使用+号进行操作,出现了一点小惊喜。拼接以后出现了两种不同的结果,感到十分的意外,所以分析了一下出现的结果,记录一下。

package top.supertd.www;
import java.util.concurrent.ThreadLocalRandom;
public class TestString {
    public static void main(String[] args) {
        //获取一个产生随机数的类
        ThreadLocalRandom random = ThreadLocalRandom.current();
        //因为大写字母A~Z对应的ASCII码为65~90,所以生成这样的随机数,
        //字符和对应的ASCII码(整数)可以互相转换
        char a = (char) random.nextInt(65, 90);
        char b = (char) random.nextInt(65, 90);
        char c = (char) random.nextInt(65, 90);
        //把三个字符拼接成一个字符串
        System.out.println(a + b + c + "");
        System.out.println("" + a + b + c);
    }
}

出乎意料的是,最后产生了两种结果:

234
UGN

咦?!第一个输出结果居然是数字,是不是很神奇啊,这是为什么吗?到底发生了什么呀?

经过对结果的分析可知:

在第一个输出中,前三个字符相加,并不是简单的执行字符和字符之间的连接操作,而是把字符对应的ASCII值相加了起来,最后在和 "" 这个空字符串相加,这时候才是执行的字符串连接的操作,ASCII值变成了字符串,导致最后输出的是“234”。

在第二个输出中,""直接和第一个字符连接操作,变成一个新的字符串"U",这个字符串再和后面的字符相加时,后面的字符转化成了字符串,和前面的字符串拼接在一起,变成一个新的字符串。以此类推,最后得到了字符串"UNG"。

  综上所述,单个字符之间相加时,系统会把其对应的ASCII值相加起来,并不会把字符变成字符串,一个字符串和一个字符相加时,字符转化成字符串,两个字符串进行拼接操作。字符串和多个字符之间用加号连接时,应多加注意字符的位置。

目录
相关文章
|
7月前
|
C语言
【C语言】大小写字母的相互转化:多种方法解析及原理说明
【C语言】大小写字母的相互转化:多种方法解析及原理说明
554 0
|
数据采集 Java 机器人
根据正则表达式截取字串符,这个办法打败99%程序员
作为一名程序员,常常会在以下情况下使用函数功能根据正则表达式截取字符串:
|
7月前
|
测试技术
【错题集-编程题】添加字符(字符串)
【错题集-编程题】添加字符(字符串)
|
7月前
|
机器学习/深度学习 Java
java字符串练习题3、字符串中字符是否相同判断
java字符串练习题3、字符串中字符是否相同判断
66 0
|
7月前
|
Java 容器
java字符串练习题2、反向输出英文字符串
java字符串练习题2、反向输出英文字符串
43 0
|
7月前
|
Java
java字符串练习题6、最后一个单词的长度
java字符串练习题6、最后一个单词的长度
51 0
|
7月前
|
Java 测试技术 索引
java字符串练习题1、反向输出字符串
java字符串练习题1、反向输出字符串
72 0
|
7月前
|
Java Go
每日一题《剑指offer》字符串篇之字符流中第一个不重复的字符
每日一题《剑指offer》字符串篇之字符流中第一个不重复的字符
65 0
每日一题《剑指offer》字符串篇之字符流中第一个不重复的字符
1. 实现含有中文字符的字符串逆转,如: “我是小萌新” 转换成“新萌小是我”(指针项目练习1)
1. 实现含有中文字符的字符串逆转,如: “我是小萌新” 转换成“新萌小是我”(指针项目练习1)
如何将一串数字用函数的方法倒过来(C语言)
如何将一串数字用函数的方法倒过来(C语言)