精华内容
下载资源
问答
  • 使用这种方式进行字符串连接的操作效率低下,因为python中使用 + 拼接两个字符串时会生成一个新的字符串,生成新的字符串就需要重新申请内存,当拼接字符串较多时自然会影响效率。2. 通过str.join()方法拼接输出结果...

    python3.x拼接字符串一般有以下几种方法:

    1. 直接通过(+)操作符拼接

    输出结果:Hello World!

    使用这种方式进行字符串连接的操作效率低下,因为python中使用 + 拼接两个字符串时会生成一个新的字符串,生成新的字符串就需要重新申请内存,当拼接字符串较多时自然会影响效率。

    2. 通过str.join()方法拼接

    输出结果:Hello World!

    这种方式一般常使用在将集合转化为字符串,''.join()其中''可以是空字符,也可以是任意其他字符,当是任意其他字符时,集合中字符串会被该字符隔开,例如:

    输出结果:Hello, ,World,!

    3. 通过str.format()方法拼接

    输出结果:Hello World!

    通过这种方式拼接字符串需要注意的是字符串中{}的数量要和format方法参数数量一致,否则会报错。

    4. 通过(%)操作符拼接

    输出结果:Hello World!

    这种方式与str.format()使用方式基本一致。

    5. 通过()多行拼接

    输出结果:Hello World!

    python遇到未闭合的小括号,自动将多行拼接为一行。

    6.通过string模块中的Template对象拼接

    输出结果:Hello World!

    Template的实现方式是首先通过Template初始化一个字符串。这些字符串中包含了一个个key。通过调用substitute或safe_subsititute,将key值与方法中传递过来的参数对应上,从而实现在指定的位置导入字符串。这种方式的好处是不需要担心参数不一致引发异常,如:

    输出结果:Hello World ${s3}!

    7. 通过F-strings拼接

    在python3.6.2版本中,PEP 498 提出一种新型字符串格式化机制,被称为“字符串插值”或者更常见的一种称呼是F-strings,F-strings提供了一种明确且方便的方式将python表达式嵌入到字符串中来进行格式化:

    输出结果:Hello World!

    在F-strings中我们也可以执行函数:

    输出结果:4 * 4 = 16

    而且F-strings的运行速度很快,比%-string和str.format()这两种格式化方法都快得多。

    展开全文
  • 和其他多数程序设计语言一样,Java 语言允许使用 + 连接两个字符串。String name = "stephen";String foo = "Hey, " + name;我们将一个字符串和一个非字符串的值进行拼接时,并不会报错:String name = "Stephen";...

    和其他多数程序设计语言一样,Java 语言允许使用 + 连接两个字符串。

    String name = "stephen";String foo = "Hey, " + name;

    当我们将一个字符串和一个非字符串的值进行拼接时,并不会报错:

    String name = "Stephen";int age = 25;String foo = name + age; // 结果为 Stephen25

    其原因是当 + 运算符左右两边有一个值是字符串时,会将另一个值尝试转化为字符串。

    字符串转换机制

    我们在了解字符串连接运算符前,先了解一下字符串转换机制(String Conversion)。

    Any type may be converted to type String by string conversion.

    如果值 x 是基本数据类型 T,那么在字符串转换前,首先会将其转换成一个引用值,举几个例子:

    • 如果 T 是 boolean 类型的,那么就会用 new Boolean(x) 封装一下;
    • 如果 T 是 char 类型的,那么就会用 new Character(x) 封装一下;
    • 如果 T 是 byte、short、int 类型的,那么就会用 new Integer(x) 封装一下;

    我们知道,对于基本数据类型,Java 都对应有一个包装类(比如 int 类型对应有 Integer 对象),这样操作以后,每个基础数据类型的值 x 都变成了一个对象的引用。

    为什么这么做?为了统一对待,当我们把基础数据类型转换成对应的包装类的一个实例后,所有的值都是统一的对象引用。

    此时才开始真正进行字符串转换。我们需要考虑两种情况:空值和非空值。

    如果此时的值 x 是 null,那么最终的字符串转换结果就是一个字符串 null;

    否则就会调用这个对象的 toString() 的无参方法。

    前者很好理解,后者我们一起来看看:

    在 Java 所有的父类 Object 中,有一个重要的方法就是 toString 方法,它返回表示对象值的一个字符串。在 Object 类中对 toString 的定义如下:

    public String toString() {    return getClass().getName() + "@" + Integer.toHexString(hashCode());}

    该方法返回对象的类名和散列码。如果类没有重写 toString 方法,默认就会调用它的父类的 toString 方法,而此时我们的值 x 统一都是对象值,所以一定有 toString 方法可以调用并打印出值(也有个特殊,如果调用 toString 返回的值是一个 null 值,那么就会用字符串 null 代替)。

    字符串连接符

    当 + 运算符左右两边参与运算的表达式的值有一个为字符串时,那么在程序运行时会对另一个值进行字符串转换。

    这里需要注意的是 + 运算符同时作为算术运算符,在含有多个值参与运算的时候,要留意优先级,比如下面这个例子:

    String a = 1 + 2 + " equals 3";String b = "12 eqauls " + 1 + 2;

    变量 a 的结果是 3 equals 3,变量 b 的结果是 12 equals 12。

    有些人这里可能会有疑问,解释一下,第一种情况根据运算优先级是先计算 1+2 那么此时的 + 运算符是算术运算符,所以结果是 3,然后再和 " equals 3" 运算,又因为 3 + " equals 3" 有一个值为字符串,所以 + 运算符是字符串连接运算符。

    在运行时,Java 编译器一般会使用类似 StringBuffer/StringBuilder 这样带缓冲区的方式来减少通过执行表达式时创建的中间 String 对象的数量,从而提高程序性能。

    我们可以用 Java 自带的反汇编工具 javap 简单的看一下:

    假设有如下这段代码:

    public class Demo {    public static void main(String[] args) {        int i = 10;        String words = "stephen" + i;    }}

    然后编译,再反汇编一下:

    javac Demo.javajavap -c Demo

    可以得到如下内容:

    Compiled from "Demo.java"public class Demo {  public Demo();    Code:       0: aload_0       1: invokespecial #1                  // Method java/lang/Object."":()V       4: return  public static void main(java.lang.String[]);    Code:       0: bipush        10       2: istore_1       3: new           #2                  // class java/lang/StringBuilder       6: dup       7: invokespecial #3                  // Method java/lang/StringBuilder."":()V      10: ldc           #4                  // String stephen      12: invokevirtual #5                  // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;      15: iload_1      16: invokevirtual #6                  // Method java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;      19: invokevirtual #7                  // Method java/lang/StringBuilder.toString:()Ljava/lang/String;      22: astore_2      23: return}

    我们可以发现,Java 编译器在执行字符串连接运算符所在表达式的时候,会先创建一个 StringBuilder 对象,然后将运算符左边的字符串 stephen 拼接(append)上去,接着在拼接右边的整型 10,然后调用 StringBuilder 的 toString 方法返回结果。

    如果我们拼接的是一个对象呢?

    public class Demo {    public static void main(String[] args) {        Demo obj = new Demo();        String words = obj + "stephen";    }    @Override    public String toString() {        return "App{}";    }}

    一样的做法,我们会发现此时 Method java/lang/StringBuilder.append:(Ljava/lang/Object;) 也就是 StringBuilder 调用的是 append(Object obj) 这个方法,我们查看 StringBuilder 类的 append 方法:

    public StringBuilder append(Object obj) {    return append(String.valueOf(obj));}

    而 String.valueOf(obj) 的实现代码如下:

    public static String valueOf(Object obj) {    return (obj == null) ? "null" : obj.toString();}

    也就是会调用对象的 toString() 方法。

    可能到这里大家会有一个疑问:上面不是说字符串转换对于基本类型是先转换成对应的包装类,然后调用它的 toString 方法吗,这边怎么都是调用 StringBuilder 的 append 方法了呢?

    实现方式不同,其实是本质上是一样的,只不过为了提高性能(减少创建中间字符串等的损耗),Java 编译器采用 StringBuilder 来做。感兴趣的可以自己去追踪下 Integer 包装类的 toString 方法,其实和 StringBuilder 的 append(int i) 方法的代码是几乎一样的。

    0e09bbe2d881b3581d12e79ef2fbd41d.png
    展开全文
  • 使用这种方式进行字符串连接的操作效率低下, 因为python中使用 + 拼接两个字符串时会生成一个新的字符串, 生成新的字符串就需要重新申请内存, 当拼接字符串较多时自然会影响效率。2.通过str.join()方法拼接: ...

    python拼接字符串一般有以下几种方法:

    1.直接通过(+)操作符拼接:

    a7f3af0e83d094b7edaa01cda5178479.png


    输出结果:Hello World!
    使用这种方式进行字符串连接的操作效率低下,
    因为python中使用 + 拼接两个字符串时会生成一个新的字符串,
    生成新的字符串就需要重新申请内存,
    当拼接字符串较多时自然会影响效率。2.通过str.join()方法拼接:

    baddd1758b7313b751decd3889bec427.png


    输出结果:Hello World!
    这种方式一般常使用在将集合转化为字符串,
    ''''.join()其中''''可以是空字符,也可以是任意其他字符,
    当是任意其他字符时,集合中字符串会被该字符隔开,
    例如:

    19f6303824ff664de68b5ea02b85530e.png


    输出结果:Hello, ,World,!3.通过str.format()方法拼接

    67ec0f522d4b907f35213ba1faf98cde.png


    输出结果:Hello World!
    通过这种方式拼接字符串需要注意的是:
    字符串中{}的数量要和format方法参数数量一致
    否则会报错!

    4.通过(%)操作符拼接

    57f67303c361a7576b68252fc72ab85a.png


    输出结果:Hello World!
    这种方式与str.format()使用方式基本一致

    5.通过()多行拼接

    1e56a1885904ea4ace2f58be771cb59d.png


    输出结果:Hello World!
    python遇到未闭合的小括号
    自动将多行拼接为一行。

    6.通过string模块中的Template对象拼接

    a2d435a6c07cbadbb0a67d9488a85de4.png


    输出结果:Hello World!
    Template的实现方式是首先通过Template初始化一个字符串。
    这些字符串中包含了一个个key。
    通过调用substitute或safe_subsititute,将key值与方法中传递过来的参数对应上,从而实 现在指定的位置导入字符串。
    这种方式的好处是不需要担心参数不一致引发异常,
    如:

    e13438f4feecca757fede4302b517c8d.png


    输出结果:Hello World ${s3}!7.通过F-strings拼接
    在python3.6.2版本中,
    PEP 498 提出一种新型字符串格式化机制,被称为“字符串插值”或者更常见的一种称呼是F-strings,
    F-strings提供了一种明确且方便的方式将python表达式嵌入到字符串中来进行格式化:

    8a92edbc7d61b7666ccfc9006dc4be9d.png


    输出结果:Hello World!
    在F-strings中我们也可以执行函数:

    96ba89db6ef4f4b4fe2fa29a95b1525a.png


    输出结果:4 * 4 = 16
    而且F-strings的运行速度很快,
    比%-string和str.format()这两种格式化方法都快得多。


    成长离不开与优秀的同伴共同交流,如果你需要好的学习环境,好的学习资源,这里欢迎每一位热爱Python的小伙伴,Python学习圈

    展开全文
  • 1. plus方式左右两个量其中有一个为String类型,用plus方式可将两个量转成字符串拼接。String a="";int b=0xb;String c=a+b;2. concat方式当两个量都为String类型且值不为null,可以用concat方式。String a=...

    1. plus方式

    当左右两个量其中有一个为String类型时,用plus方式可将两个量转成字符串并拼接。

    String a="";

    int b=0xb;

    String c=a+b;

    2. concat方式

    当两个量都为String类型且值不为null时,可以用concat方式。

    String a="a";

    String b="b";

    String c= a.concat(b);

    理论上,此时拼接效率应该最高,因为已经假定两个量都为字符串,做底层优化不需要额外判断或转换,而其他方式无论如何优化,都要先走到这一步。

    3. append方式

    当需要拼接至少三个量的时候,可以考虑使用StringBuffer#append()以避免临时字符串的产生

    StringBuffer buf=new StringBuffer()

    buf.append("a");

    if(someCondition){

    buf.append("b");

    }

    buf.append("c");

    String d=buf.toString();

    当a,b,c拼接起来会很长时,可以给在构造器中传入一个合适的预估容量以减少因扩展缓冲空间而带来的性能开销。

    StringBuffer buf=new StringBuffer(a.length()+b.length()+c.length());

    JDK对外提供的一些涉及可append CharSequence的参数或返回值类型往往是StringBuffer类型,毕竟安全第一,而StringBuffer大多数情况(包括append操作)线程安全。

    若不会出现多线程同时对一实例并发进行append操作,建议使用非线程安全的StringBuilder以获得更好性能

    4. 其他

    若需拼接至少三个量,只用一个连续拼接的语句就可完成时,从使代码简洁角度考虑,用plus方式。

    String a="a";

    String b="b";

    String c="c";

    String d=a+b+c;

    此时,第4句经JDK编译后其字节码(或)会自动优化为等效于下列代码编译后的字节码。

    String d=new StringBuilder().append(a).append(b).append(c).toString();

    若采用模板+参数来替换占位符的方式或需同时对要拼接日期/数字进行格式化,可以用String.format()来实现

    ---------------------

    原文:https://blog.csdn.net/fei7837226/article/details/79377906

    展开全文
  • python拼接字符串

    2018-08-28 17:21:00
    python拼接字符串一般有以下几...使用这种方式进行字符串连接的操作效率低下,因为python中使用 + 拼接两个字符串时会生成一个新的字符串,生成新的字符串就需要重新申请内存,当拼接字符串较多时自然会影响效率。 ...
  • 使用这种方式进行字符串连接的操作效率低下,因为python中使用 + 拼接两个字符串时会生成一个新的字符串,生成新的字符串就需要重新申请内存,当拼接字符串较多时自然会影响效率。②通过str.join()方法拼接strlist=...
  • '使用这种方式进行字符串连接的操作效率低下,因为python中使用 + 拼接两个字符串时会生成一个新的字符串,生成新的字符串就需要重新申请内存,当拼接字符串较多时自然会影响效率。2、通过str.join()方法拼接>>...
  • 使用这种方式进行字符串连接的操作效率低下,因为python中使用 + 拼接两个字符串时会生成一个新的字符串,生成新的字符串就需要重新申请内存,当拼接字符串较多时自然会影响效率。2.通过str.join()方法拼接:输出...
  • 使用这种方式进行字符串连接的操作效率低下,因为python中使用 + 拼接两个字符串时会生成一个新的字符串,生成新的字符串就需要重新申请内存,当拼接字符串较多时自然会影响效率。 2.通过str.join()方法拼接:输出...
  • Python_拼接字符串

    2019-04-04 14:25:29
    (+)操作符 s = 'Hello'+' '+'World'+'!...拼接两个字符串时会生成一个新的字符串,生成新的字符串就需要重新申请内存,当拼接字符串较多时自然会影响效率。 str.join() strlist=['Hello',' ','World...
  • 使用这种方式进行字符串连接的操作效率低下,因为python中使用 + 拼接两个字符串时会生成一个新的字符串,生成新的字符串就需要重新申请内存,当拼接字符串较多时自然会影响效率。②通过str.join()方法拼接strlist=....
  • 用指针函数将两个字符串拼接

    万次阅读 2014-04-14 10:59:11
    # include # include char *str(char *p1, char *p2){ char *p = p1; //将目标遗产地址赋给指针变量p;...*p的值不是\0, p就向后位移 直到*p为\0。 p1--; //因为p1现在的位置在\0,所以应向前移一位置 while(*p1++
  • 使用这种方式进行字符串连接的操作效率低下,因为python中使用 + 拼接两个字符串时会生成一个新的字符串,生成新的字符串就需要重新申请内存,当拼接字符串较多时自然会影响效率。 2. 通过str.join()方法拼接 ...
  • Python字符串拼接方法

    2019-09-18 06:46:00
    使用这种方式进行字符串连接的操作效率低下,因为python中使用 + 拼接两个字符串时会生成一个新的字符串,生成新的字符串就需要重新申请内存,当拼接字符串较多时自然会影响效率。 如果你依然在编程的世界里迷茫,...
  • 原标题:Python 中字符串...使用这种方式进行字符串连接的操作效率低下,因为python中使用 + 拼接两个字符串时会生成一个新的字符串,生成新的字符串就需要重新申请内存,当拼接字符串较多时自然会影响效率。2、通...
  • 当两个字符串常量“z”和“s”进行拼接时,会先从字符串常量池中进行查找是否存在"zs"这个字符串,如果存在则直接指向该字符串常量,如果不存在则在堆内存new一个String对象并将地址值传给拼接结果。   &...
  • 使用这种方式进行字符串连接的操作效率低下,因为python中使用 + 拼接两个字符串时会生成一个新的字符串,生成新的字符串就需要重新申请内存,当拼接字符串较多时自然会影响效率。②通过str.join()方法拼接strlist=...
  • 使用这种方式进行字符串连接的操作效率低下,因为python中使用 + 拼接两个字符串时会生成一个新的字符串,生成新的字符串就需要重新申请内存,当拼接字符串较多时自然会影响效率。②通过str.join()方法拼接strlist=...
  • 使用这种方式进行字符串连接的操作效率低下,因为python中使用 + 拼接两个字符串时会生成一个新的字符串,生成新的字符串就需要重新申请内存,当拼接字符串较多时自然会影响效率。2. 通过str.join()方法拼接st...
  • 使用这种方式进行字符串连接的操作效率低下,因为python中使用 + 拼接两个字符串时会生成一个新的字符串,生成新的字符串就需要重新申请内存,当拼接字符串较多时自然会影响效率。 2、通过str.join()方法拼接 >>> ...
  • 使用这种方式进行字符串连接的操作效率低下,因为python中使用 + 拼接两个字符串时会生成一个新的字符串,生成新的字符串就需要重新申请内存,当拼接字符串较多时自然会影响效率。 ②通过str.join()方法拼接 ...
  • 使用这种方式进行字符串连接的操作效率低下,因为python中使用 + 拼接两个字符串时会生成一个新的字符串,生成新的字符串就需要重新申请内存,当拼接字符串较多时自然会影响效率。 2、通过str.join()方法拼接 >&...
  • 这样在字符串内出现两个单引号 ie8有可能会报错 ,并且死都找不到为什么,只知道在某种环境下不能这样写, 出错后要么只剩下一个单引号,要么这样写 var a = "My Name is \'"+name+"\',and hom...
  • 使用这种方式进行字符串连接的操作效率低下, 因为python中使用 + 拼接两个字符串时会生成一个新的字符串, 生成新的字符串就需要重新申请内存, 当拼接字符串较多时自然会影响效率。2.通过str.join()方法拼接: ...
  • 因为python中使用 + 拼接两个字符串时会生成一个新的字符串, 生成新的字符串就需要重新申请内存,当拼接字符串较多时自然会影响效率。 ''' 通过str.join()方法拼接 >>> strlist = ['Hello', ' ', '...
  • 小菜鸟的我今天在使用ajax拉取出数据,拼接字符串时就遇到了需要带函数带参数的拼接。需求是我点击某一链接时会触发一事件,需要拼接函数名称而且动态传入参数,结果参数引号一直引起js报错,经过查询后,正确...
  • 1.与绝大多数的程序设计语言一样,Java语言允许使用 + 号连接(拼接两个字符串。 String expletive = "Expletive"; String PC13 = "deleted"; String message = expletive + PC13; //上述代码将“ ...

空空如也

空空如也

1 2 3 4 5 ... 14
收藏数 262
精华内容 104
关键字:

当拼接两个字符串时