在Java中如何把char数组转换为字符串
记得上次考试,用java实现凯撒密码的加密和解密,当时我的思路是没有什么问题的,但是当我把一个字符串转换为字符数组后,我不知道怎么把字符数组转换为字符串进行输出,下面我分享一下我后来的总结:
假设需要加密的字符串为s,首先把该字符串转换为一个字符数组再进行加密操作:
char[] c = s.toCharArray();
for (int i = 0; i < c.length; i++) {
if(c[i] < 97 || c[i] > 122){//没有操作
}else{
c[i] = (char) ((c[i]-'a'+3)%26+'a');
}
}
那么,怎么得到加密后的字符串呢?
1.一个字符一个字符的输出
for (int i = 0; i < c.length; i++) {
if(c[i] < 97 || c[i] > 122){//没有操作
}else{
c[i] = (char) ((c[i]-'a'+3)%26+'a');
}
System.out.print(c[]i);//注意这里不换行
}
2.使用StringBuffer的append()方法
for (int i = 0; i < c.length; i++) {
if(c[i] < 97 || c[i] > 122){
}else{
c[i] = (char) ((c[i]-'a'+3)%26+'a');
}
}
StringBuffer sb = new StringBuffer();//创建一个StringBuffer 对象
for (int i = 0; i < c.length; i++) {
sb.append(c[i]);//循环追加字符数组的元素到StringBuffer对象
}
String str = sb.toString();//把StringBuffer对象转换为String对象
System.out.println(str);
3.使用String类的构造方法,把字符数组当做参数
for (int i = 0; i < c.length; i++) {
if(c[i] < 97 || c[i] > 122){
}else{
c[i] = (char) ((c[i]-'a'+3)%26+'a');
}
}
String str = new String(c);//c为参数,创建一个字符串对象
System.out.println(str);
4.使用Arrays的toString()方法
for (int i = 0; i < c.length; i++) {
if(c[i] < 97 || c[i] > 122){
}else{
c[i] = (char) ((c[i]-'a'+3)%26+'a');
}
}
String str = Arrays.toString(c);//把字符数组当做参数传入,得到一个字符串对象
System.out.println(str);
注意:数组的toString()方法是Object的toString()方法,返回的不是一个字符串,可以使用Arrays类的toString()方法