精华内容
下载资源
问答
  • 字符串拼接

    2020-06-10 19:40:59
    1.可以使用+将多个字符串拼接起来。例如:’aa’ +’bb’==>’ aabb’ (1)如果+两边都是字符串,则拼接。 (2)如果+两边都是数字,则加法运算。 (3)如果两边类型不同,则抛出异常。 2.可以在中间加一个空格将多个字面...

    字符串拼接
    1.可以使用+将多个字符串拼接起来。例如:’aa’ +’bb’==>’ aabb’
    (1)如果+两边都是字符串,则拼接。
    (2)如果+两边都是数字,则加法运算。
    (3)如果两边类型不同,则抛出异常。
    2.可以在中间加一个空格将多个字面字符串直接放到一起实现拼接。例如:
    ’ aa’ ’ bb’ ==>’ aabb’

    展开全文
  • MYSql-字符串拼接

    万次阅读 2018-10-25 15:54:21
    一、MySQL自带字符串拼接函数 CONCAT 字符串拼接 ...代表可以多个字符串拼接 示例: SELECT CONCAT("hello","word"); SELECT CONCAT("how","are","yo...

    一、MySQL自带字符串拼接函数

    • CONCAT 字符串拼接
    • CONCAT_WS    指定字符串分割拼接字符串拼接

    ① 语法:CONCAT(str1,str2…) 

     解释:concat 拼接 str1和str2字符串, 省略号....代表可以多个字符串拼接

    示例:

    SELECT CONCAT("hello","word");
    SELECT CONCAT("how","are","you","?");

    结果一:                 结果二:    

    ② 语法:CONCAT_WS(separator,str1,str2…) 

    解释:concat_ws 拼接str1,str2,并且将separator【指定的字符串】分割拼接,....代表多个字符串拼接

    示例:

    SELECT CONCAT_WS(" ","hello","word");
    SELECT CONCAT_WS(",","hello","word");
    SELECT CONCAT_WS(" ","how","are","you","?");

    结果一:   

    结果二:   

    结果三:   

    展开全文
  • 字符串拼接常用方法

    万次阅读 多人点赞 2019-04-19 10:40:37
    字符串拼接是我们在Java代码中比较经常要做的事情,就是把多个字符串拼接到一起。我们都知道,String是Java中一个不可变的类,所以他一旦被实例化就无法被修改。(不可变类的实例一旦创建,其成员变量的值就不能被...

            字符串,是Java中最常用的一个数据类型了。本文,也是对于Java中字符串相关知识的一个补充,主要来介绍一下字符串拼接相关的知识。本文基于jdk1.8.0_181。字符串拼接是我们在Java代码中比较经常要做的事情,就是把多个字符串拼接到一起。我们都知道,String是Java中一个不可变的类,所以他一旦被实例化就无法被修改。(不可变类的实例一旦创建,其成员变量的值就不能被修改。这样设计有很多好处,比如可以缓存hashcode、使用更加便利以及更加安全等)。

          但是,既然字符串是不可变的,那么字符串拼接又是怎么回事呢?字符串不变性与字符串拼接,其实,所有的所谓字符串拼接,都是重新生成了一个新的字符串。下面一段字符串拼接代码:

    String s = "abcd"; 

    s = s.concat("ef");

    其实最后我们得到的s已经是一个新的字符串了。如下图:

    中保存的是一个重新创建出来的String对象的引用。那么,在Java中,到底如何进行字符串拼接呢?字符串拼接有很多种方式,这里简单介绍几种比较常用的。

    一,使用+拼接字符串

    在Java中,拼接字符串最简单的方式就是直接使用符号+来拼接。如:

    String wechat = "Hollis";

    String introduce = "召唤师峡谷";

    String hollis = wechat + "," + introduce;

    这里要特别说明一点,有人把Java中使用+拼接字符串的功能理解为运算符重载。其实并不是,Java是不支持运算符重载的。这其实只是Java提供的一个语法糖。后面再详细介绍。

    概念普及:

    运算符重载:在计算机程序设计中,运算符重载(英语:operator overloading)是多态的一种。运算符重载,就是对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型。

    语法糖:语法糖(Syntactic sugar),也译为糖衣语法,是由英国计算机科学家彼得·兰丁发明的一个术语,指计算机语言中添加的某种语法,这种语法对语言的功能没有影响,但是更方便程序员使用。语法糖让程序更加简洁,有更高的可读性。

    concat  

    除了使用+拼接字符串之外,还可以使用String类中的方法concat方法来拼接字符串。如:

    String wechat = "Hollis";

    String introduce = "召唤师峡谷";

    String hollis = wechat.concat(",").concat(introduce);

    StringBuffer

           关于字符串,Java中除了定义了一个可以用来定义字符串常量的String类以外,还提供了可以用来定义字符串变量的StringBuffer类,它的对象是可以扩充和修改的。使用StringBuffer可以方便的对字符串进行拼接。如:

    StringBuffer wechat = new StringBuffer("Hollis");

    String introduce = "召唤师峡谷";

    StringBuffer hollis = wechat.append(",").append(introduce);

    StringBuilder  

          除了StringBuffer以外,还有一个类StringBuilder也可以使用,其用法和StringBuffer类似。如:

    StringBuilder wechat = new StringBuilder("Hollis");

    String introduce = "召唤师峡谷";

    StringBuilder hollis = wechat.append(",").append(introduce);

    StringUtils.join  

           除了JDK中内置的字符串拼接方法,还可以使用一些开源类库中提供的字符串拼接方法名,如apache.commons中提供的StringUtils类,其中的join方法可以拼接字符串。

    String wechat = "Hollis"; String introduce = "召唤师峡谷";

    System.out.println(StringUtils.join(wechat, ",", introduce));

    这里简单说一下,StringUtils中提供的join方法,最主要的功能是:将数组或集合以某拼接符拼接到一起形成新的字符串,如:

    String []list ={"Hollis","每日更新Java相关技术文章"};

    String result= StringUtils.join(list,",");

    System.out.println(result); //结果:Hollis,每日更新Java相关技术文章

    并且,Java8中的String类中也提供了一个静态的join方法,用法和StringUtils.join类似。

    以上就是比较常用的五种在Java种拼接字符串的方式,那么到底哪种更好用呢?为什么阿里巴巴Java开发手册中不建议在循环体中使用+进行字符串拼接呢?

    接下来我们就来分析一下以上五种方式的底层原理,再来分析到底哪种更好。

    使用+拼接字符串的实现原理:

           前面提到过,使用+拼接字符串,其实只是Java提供的一个语法糖, 那么,我们就来解一解这个语法糖,看看他的内部原理到底是如何实现的。还是这样一段代码。我们把他生成的字节码进行反编译,看看结果。

    String wechat = "Hollis";

    String introduce = "每日更新Java相关技术文章";

    String hollis = wechat + "," + introduce;

    反编译后的内容如下,反编译工具为jad。

    String wechat = "Hollis"; String introduce = "每日更新Java相关技术文章";

     String hollis = (new StringBuilder()).append(wechat).append(",").append(introduce).toString();

    通过查看反编译以后的代码,我们可以发现,原来字符串常量在拼接过程中,是将String转成了StringBuilder后,使用其append方法进行处理的。那么也就是说,Java中的+对字符串的拼接,其实现原理是使用StringBuilder.append。

    concat是如何实现的

       我们再来看一下concat方法的源代码,看一下这个方法又是如何实现的。

    public String concat(String str) {

           int otherLen = str.length();

           if (otherLen == 0) {

                 return this;

                }

          int len = value.length; char buf[] = Arrays.copyOf(value, len + otherLen);

          str.getChars(buf, len); return new String(buf, true);

    }

     这段代码首先创建了一个字符数组,长度是已有字符串和待拼接字符串的长度之和,再把两个字符串的值复制到新的字符数组中,并使用这个字符数组创建一个新的String对象并返回。通过源码我们也可以看到,经过concat方法,其实是new了一个新的String,这也就呼应到前面我们说的字符串的不变性问题上了。

    StringBuffer和StringBuilder

    接下来我们看看StringBuffer和StringBuilder的实现原理。

    和String类类似,StringBuilder类也封装了一个字符数组,定义如下:

    char[] value;

    与String不同的是,它并不是final的,所以他是可以修改的。另外,与String不同,字符数组中不一定所有位置都已经被使用,它有一个实例变量,表示数组中已经使用的字符个数,定义如下:

    int count;其append源码如下:

    public StringBuilder append(String str) { super.append(str); return this; }

    该类继承了AbstractStringBuilder类,看下其append方法:

    public AbstractStringBuilder append(String str) { if (str == null) return appendNull(); int len = str.length(); ensureCapacityInternal(count + len); str.getChars(0, len, value, count); count += len; return this; }

    append会直接拷贝字符到内部的字符数组中,如果字符数组长度不够,会进行扩展。

    StringBuffer和StringBuilder类似,最大的区别就是StringBuffer是线程安全的,看一下StringBuffer的append方法。

    public synchronized StringBuffer append(String str) {

        toStringCache = null; super.append(str); return this;

    }

    该方法使用synchronized进行声明,说明是一个线程安全的方法。而StringBuilder则不是线程安全的。

    StringUtils.join是如何实现的:

    通过查看StringUtils.join的源代码,我们可以发现,其实他也是通过StringBuilder来实现的。

    public static String join(final double[] array, final char separator, final int startIndex, final int endIndex) {
    
           if (array == null) {
    
               return null;
    
           }
    
           final int noOfItems = endIndex - startIndex;
    
           if (noOfItems <= 0) {
    
               return EMPTY;
    
           }
    
           final StringBuilder buf = new StringBuilder(noOfItems * 16);
    
           for (int i = startIndex; i < endIndex; i++) {
    
               if (i > startIndex) {
    
                   buf.append(separator);
    
               }
    
               buf.append(array[i]);
    
           }
    
           return buf.toString();
    
       }

    效率比较:

    从结果可以看出,用时从短到长的对比是:StringBuilder < StringBuffer < concat < + < StringUtils.join

    所以,阿里巴巴Java开发手册建议:循环体内,字符串的连接方式,使用 StringBuilder 的 append 方法进行扩展。而不要使用+。

    总结

    本文介绍了什么是字符串拼接,虽然字符串是不可变的,但是还是可以通过新建字符串的方式来进行字符串的拼接。

    常用的字符串拼接方式有五种,分别是使用+、使用concat、使用StringBuilder、使用StringBuffer以及使用StringUtils.join。

    由于字符串拼接过程中会创建新的对象,所以如果要在一个循环体中进行字符串拼接,就要考虑内存问题和效率问题。

    因此,经过对比,我们发现,直接使用StringBuilder的方式是效率最高的。因为StringBuilder天生就是设计来定义可变字符串和字符串的变化操作的。

    但是,还要强调的是:

    1、如果不是在循环体中进行字符串拼接的话,直接使用+就好了。

    2、如果在并发场景中进行字符串拼接的话,要使用StringBuffer来代替StringBuilder。

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • 多个字符串拼接成大字符串

    千次阅读 2018-10-16 22:59:17
    有列表p = [‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’],如何将其中的每个元素给拼接起来。 最容易想到的是,迭代列表使用‘+’拼接。...内容太多,详情请看将多个小字符拼接成大字符串 ...

    有列表p = [‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’],如何将其中的每个元素给拼接起来。
    最容易想到的是,迭代列表使用‘+’拼接。但这样的话,假如有很多很多的字符串,就会造成严重的开销和浪费,这并不是一种推荐的做法。推荐的做法是使用str.join()方法,更加快速的拼接列表中所有字符串。内容太多,详情请看将多个小字符拼接成大字符串

    展开全文
  • C# 字符串拼接整理_C#字符串拼接方式整理 一、字符串连接使用+ 注意:此方式多种语言通用,js,java中都可以如此操作 string hello = "Hello"; string world = "World"; string result = hello+" "+ world+"!...
  • C中多个字符串拼接

    万次阅读 2016-12-04 14:34:11
    之前在做两个字符串拼接,一般都是用strcat函数, 即使是宏定义的字符串。 比如定义了宏A, B, 第一反应会用 A"other"这样的拼接方式, 却不会没反应过来 A B 也可以做拼接。 基础不扎实,好二好二。 宏字符串可以...
  • 羞,Java 字符串拼接竟然有这么姿势

    万次阅读 多人点赞 2019-11-14 05:57:55
    二哥,我今年大二,看你分享的《阿里巴巴 Java 开发手册》上有一段内容说:“循环体内,拼接字符串最好使用 StringBuilder 的 append 方法,而不是 + 号操作符。”到底为什么啊,我平常一直就用的‘+’号操作符啊!...
  • 实际案例在设计某网络程序时,我们自定义了一基于UDP的网络协议,按照固定次序向服务器传递一系列参数
  • Python字符串拼接

    千次阅读 2019-03-14 12:48:26
    第一种,使用+链接两个或多个字符串,如: s1 = 'a' s2 = 'b' s3 = s1 + s2 print(s3) 输出: ab 第二种,把所有待连接的字符串放到一个列表中,然后使用join把它们连接在一起,如 s1 = 'a' s2 = 'b' s3 = '...
  • 运算符重载每次都会重新生成一变量然后释放,会造成一定的开销,推荐使用 str.jion(),而且在使用 str.jion() 时使用生成器要比列表开销更小 #!/usr/bin/env python3 # -*- coding: UTF-8 -*- data = [2019, '03'...
  • oracle字符串拼接

    万次阅读 2019-05-06 02:28:14
    一、“||”拼接 类似于“+”号 二、CONCAT()函数 除了“||”,Oracle还支持使用CONCAT()函数进行字符串拼接,但是只支持两个字符: 三、多个CONCAT()函数嵌套 如果需要拼接多个字符串,可以进行嵌套: ...
  • SQL 字符串拼接

    千次阅读 2017-11-29 17:21:57
    前言 ...C++更是通过操作符重载实现了可以直接对两个字符串进行相加操作(string str = "纯屌丝" + "程序员",则str="纯屌丝程序员");在结构化查询语言中则是通过‘||’符号实现字符串的拼接的。
  • String字符串拼接方式及效率问题

    千次阅读 2019-03-12 10:48:54
    字符串拼接是我们在Java代码中比较经常要做的事情,就是把多个字符串拼接到一起。 我们都知道,String是Java中一个不可变的类,所以他一旦被实例化就无法被修改。 不可变类的实例一旦创建,其成员变量的值就不能被...
  • 字符串拼接问题

    千次阅读 2018-10-18 13:36:05
    字符串拼接问题 通常我们在使用String的“+”进行字符串连接时会,知道它其实会产生多个String对象,从而使性能变差,所以我们通常比较推荐StringBuffer或StringBuilder的append方法进行字符串连接,但大家知道字符...
  • 多个字符串拼接时使用“+”进行合并拼接 例如: &amp;amp;amp;amp;gt;&amp;amp;amp;amp;gt;&amp;amp;amp;amp;gt;print('hello '+'world') hello world “+”不但可以拼接多个字符串还可以拼接两...
  • Java字符串拼接原理

    千次阅读 2020-05-25 17:12:15
    字面量的拼接结果(注意:如果字符串拼接中有变量则结果不会进入字符串常量池) 调用String的intern方法可以将String存入字符串常量池 2. 字面量的拼接原理 java源码 package com.hgy; import java.util.Arrays;...
  • 1): pl = ['&lt;0112&gt;','&lt;32&gt;','&lt;1024x768&gt;','&...] 原字符串 ...s = '' 创建空字符串 for p in pl: 创建循环,把列表里每元素遍历出来  s += p 
  • SQL字符串拼接

    千次阅读 2019-01-05 10:43:40
    不同数据库连接字符串的方法不完全相同 一、MySQL字符串拼接 ...1.2)连接多个字符串 ​ 2、"+"操作符 2.1)连接两个字符串 ​ 2.2)连接多个字符串 ​ 3、假如其中一个字段为N...
  • string字符串拼接

    千次阅读 2019-07-03 13:41:50
    实现在字符串末尾拼接字符串 函数原型: string& operator+=(const char* str); //重载+=操作符 string& operator+=(const char c); //重载+=操作符 string& operator+=(const st...
  • golang中的字符串拼接

    万次阅读 2020-08-16 12:19:29
    这种方式实现的字符串拼接过程最简单,在实际中这种拼接方式在应对少量拼接时,效率还是不错的。 s1 := "hello" s2 := "world" s3 := s1 + s2 fmt.Print(s3) //s3 = "helloworld" 2 sprintf函数 使用sprintf函数,...
  • oracle sql语句中字符串拼接

    千次阅读 2014-08-20 14:26:54
    在oracle的SQL语句中有时候需要将多个字符串拼接成语句,
  • Lua的String字符串拼接

    千次阅读 2020-08-02 22:08:23
    Lua的String字符串拼接 每个语言都会遇到字符串拼接的问题。上回说到C#的字符串拼接Concat,我们知道C#中拼接许多字符串...但是当我们需要拼接多个字符串的时候,同样的思路table.concat table.concat (list [, sep [,
  • 字符串拼接是我们在Java代码中比较经常要做的事情,就是把多个字符串拼接到一起。 我们都知道,String 是 Java 中一个不可变的类,所以他一旦被实例化就无法被修改。 不可变类的实例一旦创建,其成员变量的值就不...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 200,166
精华内容 80,066
关键字:

多个字符串拼接