字符串拼接时数值类型相加引发的问题

简介: 字符串拼接时数值类型相加引发的问题

背景

多个字段再进行,字符串拼接的过程中,需要格外留意待拼接的字段的类型,如果是数值类型的话,则需要小心出现bug。

如:String str = item.getSkuId() + item.getSkuType() + item.getClassicId() + item.getCurrency() + item.getStartTime() ;

各个字段的值分别是:101、1、1101、CNY、1687624332000

你期望的输出是:10111101CNY1687624332000

但实际的输出确是:1203CNY1687624332000

代码

public class ClassicPriceSettingReqDto {
    private Integer skuId;
    private Byte skuType;
    private Long classicId;
    private String currency;
    private Long startTime;
    public Integer getSkuId() {
        return skuId;
    }
    public Byte getSkuType() {
        return skuType;
    }
    public Long getClassicId() {
        return classicId;
    }
    public String getCurrency() {
        return currency;
    }
    public Long getStartTime() {
        return startTime;
    }
}

出错的写法

Set<String> existsDataSet = new HashSet<>();
for (ClassicPriceSettingReqDto item : reqDtoList) {
    // 按照指定字段进行去重,前三个字段均为数值类型,而我想要的是字符串的拼接效果
    String str = item.getSkuId() + item.getSkuType() + item.getClassicId() + item.getCurrency() + item.getStartTime() ;
    if (existsDataSet.contains(str)) {
        log.warn("This data already exists {}", str);
        continue;
    }
    existsDataSet.add(str);
}

正确的写法

Set<String> existsDataSet = new HashSet<>();
for (ClassicPriceSettingReqDto item : reqDtoList) {
    // 按照指定字段进行去重
    String str = item.getSkuId() + "-" + item.getSkuType() + "-" + item.getClassicId() + "-" + item.getCurrency() + "-" + item.getStartTime() ;
    if (existsDataSet.contains(str)) {
        log.warn("This data already exists {}", str);
        continue;
    }
    existsDataSet.add(str);
}

本篇文章如有帮助到您,请给「翎野君」点个赞,感谢您的支持。


目录
相关文章
|
17天前
|
存储 C语言 C++
截断&&整型提升&&算数转换
截断&&整型提升&&算数转换
|
2月前
整数常量
整数常量。
13 0
|
3月前
|
编译器 C语言 C++
整形提升和算数转换
整形提升和算数转换
18 0
|
4月前
|
C++
(C++)字符串相加
(C++)字符串相加
43 0
|
5月前
|
Linux C语言 C++
操作符&算数转换题
操作符&算数转换题
34 0
|
8月前
隐式类型转换 算术转换 操作符的属性
隐式类型转换 算术转换 操作符的属性
33 0
|
8月前
|
测试技术
变量、数据类型和运算符
变量、数据类型和运算符
|
9月前
|
C语言 索引
操作符续(整型提升与算术转换)
操作符续(整型提升与算术转换)
51 0
|
10月前
|
人工智能 算法
数组形式的整数加法
数组形式的整数加法
65 0
|
10月前
|
存储 编译器 C语言
C中的运算和数据类型
C中的运算和数据类型