• Python工程师Java之路(h)Java字符串拼接+null拼接处理


    Java版本:1.8

    加号

    String a = "ab" + 'c' + 5L;
    System.out.println(a);
    //abc5
    
    String b = 9.99F + "ABC" + null;
    System.out.println(b);
    //9.99ABCnull
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    String的concat

    System.out.println("aa".concat("bb"));
    //aabb
    
    • 1
    • 2

    StringBuilder和StringBuffer的append

    StringBuilder stringBuilder = new StringBuilder("ab");
    stringBuilder.append(99L).append("cd");
    System.out.println(stringBuilder);
    //ab99cd
    
    StringBuffer stringBuffer = new StringBuffer("ab");
    stringBuffer.append(9.99F).append("cd");
    System.out.println(stringBuffer);
    //ab9.99cd
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    StringBuffer是线程安全的(synchronized),源码截取如下

        @Override
        synchronized StringBuffer append(AbstractStringBuilder asb) {
            toStringCache = null;
            super.append(asb);
            return this;
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    StringBuilder的append不是线程安全的,速度更快,源码截取如下

        public StringBuilder append(StringBuffer sb) {
            super.append(sb);
            return this;
        }
    
    • 1
    • 2
    • 3
    • 4

    String的join

    String a = String.join("-", "a", "b", "c");
    System.out.println(a);
    //a-b-c
    
    String[] strings = {"a", "b", "c", null, "e"};
    String b = String.join("-", strings);
    System.out.println(b);
    //a-b-c-null-e
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    源码截取如下,第一个参数为分隔符

        public static String join(CharSequence delimiter, CharSequence... elements) {
            Objects.requireNonNull(delimiter);
            Objects.requireNonNull(elements);
            // Number of elements not likely worth Arrays.stream overhead.
            StringJoiner joiner = new StringJoiner(delimiter);
            for (CharSequence cs: elements) {
                joiner.add(cs);
            }
            return joiner.toString();
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    StringJoiner

    StringJoiner实例化时,可设置(分隔符,前缀,后缀)

    import java.util.StringJoiner;
    
    public class Hi {
        public static void main(String[] args) {
            //StringJoiner(分隔符, 前缀, 后缀)
            StringJoiner stringJoiner = new StringJoiner(",", "[", "]");
            //遍历
            String[] strings = {"a", "b", "c", null, "e"};
            for (String string : strings) {
                //过滤空值
                if (string != null) {
                    stringJoiner.add(string);
                }
            }
            //打印
            System.out.println(stringJoiner.toString());
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    打印效果
    [a,b,c,e]

    StringUtils.join

    import com.sun.deploy.util.StringUtils;
    
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Objects;
    
    public class Hi {
        public static void main(String[] args) {
            ArrayList<String> a = new ArrayList<>(Arrays.asList("a", "b", null, "d"));
            //不过滤空值
            System.out.println(StringUtils.join(a, ",")); //a,b,null,d
            //过滤空值
            a.removeIf(Objects::isNull);
            System.out.println(StringUtils.join(a, ",")); //a,b,d
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    场景:拼接SQL

    Phoenix(待完善)

    import com.alibaba.fastjson.JSONObject;
    import com.sun.deploy.util.StringUtils;
    
    public class Hello {
        public static void main(String[] args) {
            String s = "{\"tb\":\"sku\",\"data\":{\"id\":\"99\",\"name\":\"椰子\"}}";
            JSONObject js = JSONObject.parseObject(s);
            String table = js.getString("tb");
            JSONObject data = js.getJSONObject("data");
            String sql = "upsert into " + table
                    + " (" + String.join(",", data.keySet()) + ") "
                    + "values"
                    + " ('" + StringUtils.join(data.values(), "','") + "');";
            System.out.println(sql);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    打印结果

    upsert into sku (name,id) values ('椰子','99');
    
    • 1

    MySQL(待完善)

    import com.alibaba.fastjson.JSONObject;
    
    import java.util.StringJoiner;
    
    public class Hi {
        public static void main(String[] args) {
            String s = "{\"tb\":\"sku\",\"data\":{\"id\":99,\"name\":\"椰子\"}}";
            JSONObject js = JSONObject.parseObject(s);
            String table = js.getString("tb");
            JSONObject data = js.getJSONObject("data");
            StringJoiner columns = new StringJoiner(",", "(", ")");
            StringJoiner values = new StringJoiner(",", "(", ")");
            for (String column : data.keySet()) {
                columns.add(column);
                Object value = data.get(column);
                if (value.getClass() == String.class) {
                    values.add("'" + value + "'");
                } else {
                    values.add(value.toString());
                }
            }
            System.out.println("INSERT " + table + columns + " VALUES " + values + ";");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    打印结果

    INSERT sku(name,id) VALUES ('椰子',99);
    
    • 1
  • 相关阅读:
    php初级教程七 安全E-mail
    day01 快速认识mongodb以及基本的增删改查
    五、e2studio VS STM32CubeIDE之汉化
    玩转Vue3全家桶开篇词丨如何借助Vue3建构你的前端知识体系?
    opencv 车牌识别
    Citus 分布式 PostgreSQL 集群 - SQL Reference(创建和修改分布式表 DDL)
    API设计笔记:抽象基类、工厂方法、扩展工厂
    uniapp h5网页打开白屏
    springboot配置swagger
    1. Vue 3.0介绍
  • 原文地址:https://blog.csdn.net/Yellow_python/article/details/128015983