String类型的字符串的知识点
一:字符串的比较
public class StringPool { public static void main(String args[]) { String s0="Hello"; String s1="Hello"; String s2="He"+"llo"; System.out.println(s0==s1);//true System.out.println(s0==s2);//true System.out.println(new String("Hello")==new String("Hello"));//false } }
在java中如果没有给两个字符串申请空间,java会自动将相同的字符串保存在同一个地址,比较字符串时用==比较的是字符串的地址而不是内容。所以前两个会输出true,最后一个由于两个字符串都申请了空间,所以两个不同输出false。
二:String.equels()的比较方法
public class StringEquals { public static void main(String[] args) { String s1=new String("Hello"); String s2=new String("Hello"); System.out.println(s1==s2); System.out.println(s1.equals(s2)); String s3="Hello"; String s4="Hello"; System.out.println(s3==s4); System.out.println(s3.equalsIgnoreCase(s4)); } }
1.两个字符串申请了空间,==比较的字符串的地址,所以为flase。2.equals比较的是字符串的内容,所以为true。3,两个字符串没有申请空间,所以两个相同的字符串使用相同的地址。4与2相同。
三:String类的一些函数
(1)String.length(),定义一个字符串,String a;int i=a.length();则a就是字符串a的长度,也就是a所含的字符的个数,返回值为整数。
(2)String.charAt(),
String a;
int i=a.length();
String m=a.charAt(i);意思为获得字符串a的某一个位置的字符,i为下标。
(3)String.getchars().
char charArray[];
s1 = new String( "hello there" );
charArray = new char[ 5 ];
s1.getChars( 0, 5, charArray, 0 );
四个参数的含义
1.被拷贝字符在字串中的起始位置
2.被拷贝的最后一个字符在字串中的下标再加1
3.目标字符数组
4.拷贝的字符放在字符数组中的起始下标
结果就是:从s1的0下标开始,取5个字符串,赋给 charArray从下标0开始。charArray[0]=h,charArray[1]=e;charArray[2]=l;charArray[3]=l;charArray[4]=0;
(4)replace():
字符串替换String x = "[kllkklk\\kk\\kllkk]"; x.replace("kk", "++"),将kk用++替换,只替换第一个kk。
(5)toUpperCase()、 toLowerCase():大小写转换
.toLowerCase();//转成小写
.toUpperCase();//转成大写
String str = "aaaaaBBcccc";
String Upstr = str.toUpperCase();
String Lowstr = str.toLowerCase();
Upstr 的值是 "AAAAABBCCCC"
Lowstr 的值是 "aaaaabbcccc
(6)trim():去除头尾空格:
四:字符串加密
import java.util.*; public class Jiami { public static void main(String[] args) { Scanner input=new Scanner(System.in); String m=new String(input.nextLine());//输入字符串密码 char s[]=new char[m.length()]; int i,j=m.length(); for(i=0;i<j;i++) { if(m.charAt(i)=='x') { s[i]='a'; } else if(m.charAt(i)=='y') { s[i]='b'; } else if(m.charAt(i)=='y') { s[i]='c'; } else { s[i]=(char) (m.charAt(i)+3); } }//将每一个字符加3,如果是x.y.z就转换乘a,b,c for(i=0;i<j;i++) { System.out.print(s[i]);//输出加密后的字符串 } } }