【Java】字符拼接成字符串的注意点

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

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

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

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

234
UGN

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

经过对结果的分析可知:

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

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

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

原文地址:https://www.cnblogs.com/tudou1179006580/p/9270569.html

时间: 2024-11-08 01:31:04

【Java】字符拼接成字符串的注意点的相关文章

Unicode字符转换成字符串

/*** * Unicode字符转换成字符串 * @param str * Unicode字符 * @return * String * * @author WXW */ public static String Unicode2String(String str){ Pattern pattern = Pattern.compile("(\\\\u(\\p{XDigit}{4}))"); Matcher matcher = pattern.matcher(str); char ch;

利用下划线将列表的每个元素拼接成字符串,li=["alex","eric","rain"]

利用下划线将列表的每个元素拼接成字符串,li=["alex","eric","rain"] li=['alex', 'eric', 'rain'] c = li[0] for k,n in enumerate(li[1:]): c += "_"+n print(c) 原文地址:https://www.cnblogs.com/riling/p/10133147.html

.Net将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),并使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA

前言: 前段时间因为项目进度比较繁重所以一直都没有时间更新博客,内心深深的负重感,没有履行年初立下的flag.不过这个月会把上个月没有完成的任务补上来,咱们可不是喜欢拖欠任务的攻城狮.哈哈,废话不多说,接下来是要总结下关于对接支付时我们经常会遇到的将对应集合中的参数按照ASCII码按照从小到大排序,并使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA,其实对于有些参数比较少的而已我们完全可以自己使用固定拼接的方式拼接好来,但是假如参数集合中的参

Sql Server将一列字段拼接成字符串方法

最近在项目中遇到个问题,需要将表中某列字段合并成字符串输出,如果直接通过代码全部读取出来,再遍历进行拼接显然不是最好的方法,所以想着能否在数据读取的时候直接拼接好返回,网上搜了可通过for xml来实现. 首先,准备好需要的数据,脚本如下: if exists (select * from sysObjects where id=object_id('Student')) drop table Student go create table Student ( Id int, Name varc

sqlserver中将查询结果拼接成字符串

#for xml path(param)--将查询结果以xml格式输出 1 select id,name from table1 for xml path 2 --id和name为table1的真实字段 - path后面没有参数时,且查询的字段为真实存在或取了别名的的(即查出来有列名的),每行数据以最外面以<row>标签包裹,接着有列名的数据被其列名标签包裹. 上面sql的结果可如下: 1 <row> 2 <id>1</id> 3 <name>h

python_如何将多个小字符拼接成大字符?

案例: 下面有一个列表,如何把这个列表拼接成一个字符串? l = [1, 2, 3, 4, 'a', 'b', 'c'] 有哪些方法? 方法1: for进行迭代拼接 #!/usr/bin/python3 def go_str(l): median = '' for i in l: # 判断是否是字符串类型 if isinstance(i, str): median += i # 如果是非字符串,转换成字符串 else: i = str(i) median += i return median i

java 数字转换成字符串

一.各种数字类型转换成字符串型:  public static void main(String[] args) { double value = 123456.123; String str = String.valueOf(value); // 其中 value 为任意一种数字类型. System.out.println("字符串str 的值: " + str); //字符串str 的值: 123456.123 } 二.字符串型转换成各种数字类型: public static vo

java 数字转换成字符串与数字转换成字符串

各种数字类型转换成字符串型: String s = String.valueOf( value); // 其中 value 为任意一种数字类型. 字符串型转换成各种数字类型: String s = "169"; byte b = Byte.parseByte( s ); short t = Short.parseShort( s ); int i = Integer.parseInt( s ); long l = Long.parseLong( s ); Float f = Float

python 字典写入文件join把列表字符拼接成新的字符串。

a1 = {'Yuan': 30000, 'Alex': 100000, 'Egon': 50000, 'Rain': 90} #定义字典 f = open("test.txt","w+",encoding="UTF-8") #打开文件 for key in a1: #循环遍历字典 a2 = (key,str(a1[key])) #把字典解析成列表 list1 = (list(a2)) #转列表 print(list1) #打印预览列表 list