String字符串需要掌握的几个问题
一、两种定义方式的区别:
String str = "hello";
先在堆内存中查找是否已经有"hello",若有,将str指向已存在的它即可;若堆内存中没有,则新建一个"hello"对象,并赋给str。
String str = new String("hello");
不管堆内存中是否已经有"hello",直接新建一个"hello"对象。
另外:“==”比较的是地址,也就是说判断是否是同一个对象;“equals”比较的是值。
package Test527; public class StringTest { /** * @param args */ public static void main(String[] args) { String s1 = "hello"; String s2 = "hello"; String s3 = new String("hello"); //比较s1和s2的值是否相等 if(s1.equals(s2)) System.out.println("true"); else System.out.println("false"); //比较s1和s2是否是同一个对象 if(s1==s2) System.out.println("true"); else System.out.println("false"); //比较s1和s3的值是否相等 if(s1.equals(s3)) System.out.println("true"); else System.out.println("false"); //比较s1和s3是否是同一个对象 if(s1==s3) System.out.println("true"); else System.out.println("false"); } }
二、String和Char[] 的互相转换:
package Test527; public class StringAndChar { /** * @param args */ public static void main(String[] args) { String str = "hello"; char ch[] = {'w','o','r','l','d'}; //将String转换成char char ch2[] = str.toCharArray(); for(int i=0;i<ch.length;i++) { System.out.println(ch2[i]); } //将char转换成String,方法一: String str2 = new String(ch); System.out.println(str2); //将char转换成String,方法二: String str3 = String.valueOf(ch); System.out.println(str3); } }
String ——> char[ ] : 调用String类的toCharArray()方法。
char[ ] ——> String : 1.利用String(char[] ch)的构造方法;2.调用String类的静态方法valeOf(char[] ch)。
另外:关于他俩的长度,
String类里有length()方法;str.length();
char[ ] 字符数组则有length的属性,ch.length;
三、int类型转换成String类型:把整形数字24转换成字符串。
三种方法:
1.24+""
2.String.valueof(24)。运用String类里的静态方法valueof(int i)
3.Integer.toString()。运用Integer类里的静态方法toString(int i)
int x = 24; String str_x1 = x+""; String str_x2 = String.valueOf(x); String str_x3 = Integer.toString(x); System.out.println(str_x1+"\n"+str_x2+"\n"+str_x3);