java字符串的拼接

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java字符串的拼接相关的知识,希望对你有一定的参考价值。

String topic = new String(request.getParameter("topic").getBytes("ISO-8859-1"),"UTF-8");
从文本框中接收传来的关键词
String[] str = topic.split(",");
for(int i=0;i<=str.length-1;i++)
现在想把这些关键词拼接成:%"+小明+"% or %"+小李+"% or 。。。的样式,for循环中该怎么写呢

import java.util.Scanner;

public class dd
public static void main(String[] args)
Scanner sc = new Scanner(System.in); //声明输入对象
System.out.println("请输入第一个字符串:") ;//打印友好提示
String first = sc.next(); //阻塞,等待输入第一个字符串
System.out.println("请输入第一个字符串:"); //打印友好提示
String second = sc.next(); //阻塞,等待输入第二个字符串
String s = first+second; //进行拼接
System.out.println("您输入的字符串拼接后的结果为:"+s); //打印拼接结果



纯手打,求给分!绝对妥妥的!
这样可以么?追问

请问您这个输出的结果是什么呀?

参考技术A 是想地址传参吗?
其实可以设置一个request属性保存它。如果实在想对字符串拼接的话,推荐使用正则表达式
参考技术B StringBuffer buffer = new StringBuffer();
for (int i = 0; i < str.length - 1; i++)
if (0 < buffer.length())
buffer.append(" or ");

buffer.append(" %" + str[i] + "% ")

buffer.toString();本回答被提问者和网友采纳
参考技术C 没看懂楼主意思

java关于字符串拼接的问题

“编译时无法确定的字符串拼接需要创建新的对象”,请问这句话是什么意思?
String a = "test";
String b = "3";
String c = a + b;
String d = "test" + "3";
String e = a + 2 + 1;
String f = a + (2 + 1);
String g = a.concat("3");
System.out.println(c == d);
System.out.println(c == f);
System.out.println(c == g);
System.out.println(d == f);
System.out.println(d == g);
System.out.println(f == g);
输出结果均为false,请结合这个例子说一下上面那句话的意思,谢谢!
我的意思是不明白“编译时无法确定的字符串拼接需要创建新的对象”这句话的意思,为什么c==d会是false,即:String c = a + b,那么c为test3,String d = "test" + "3",为什么d不是指向c所指向的对象呢?

参考技术A 这是描述Java编译器对字符串常量的优化方法。
众所周知,数据内容是要定义在数据段的,假设下面的代码:
String s1 = "abc" ;
String s2 = "abc" ;
假如不进行优化的话,结果就是内存中有两个重复的"abc"内容,也就是说有两个“对象”。
Java编译器会针对这种情况进行优化,对于常量字符串"abc",java编译器会只产生一个"abc"对象。这样,s1和s2是指向同一个内存区域的。

但假如字符串的值无法在编译时确定,如:String g = a.concat("3");
那么Java编译器将会为g变量分配一个空间。注意也不是立即分配,因为Java编译器是在全局对动态分配内存。

补充: 编译器不会检查 "test" + "3" 的结果是否就是"test3",因此创建新对象。
参考技术B String c=a+b;
java中字符串的“+”操作实际上相当于以下的C操作的 c=concat(a,b)。
char * concat(char *a,char *b)

int aLen,bLen,cLen,i;
char *c;
aLen=strlen(a);
bLen=strlen(b);
cLen=aLen+bLen;
c=(char*)malloc(sizeof(char)*(cLen+1));
for(i=0;i<aLen;i++)

c[i]=a[i];

for(i=0;i<bLen;i++)

c[i+aLen]=b[i];

c[aLen+bLen]='\0';
return c;


随手写的C代码,应该不能编译的,看明白意思就成。
参考技术C String 是final类型的,也就是不可改变,如果进行了字符串的拼接、取字串等操作将返回一个新的String对象,所以进行==操作的时候就会返回false。对于对象的比较应该使用equals方法 参考技术D 内容一样...但是内存空间不一样!且是 == 比较的是内存... 而不是内容 第5个回答  2009-04-01 就是一个问题 你定义的所有的都是字符串型的 所以你的比较要用EQUES
这样的话显示的就是ture了

以上是关于java字符串的拼接的主要内容,如果未能解决你的问题,请参考以下文章

java字符串的拼接

java字符串拼接

Java 字符串拼接数字

java字符串拼接

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

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