java中有八中基本数据类型,分别为byte short int long四种整数类型,double float两种小数类型,char类型,boolean类型,而String类型则不属于八种基本数据类型之一,String类型则是最为特别的类型。String类型是一个类,每一个字符串都是String类的一个对象,所以字符串的实例都是存在于堆内存中的。当创建一个String变量的时候,他们指向的都是堆内存中的一个String对象的地址。而对于基本的数据类型在被创建的时候则直接指向这个变量的值;
列举常用的字符串方法:
1.intlength();
返回字符串的长度
2.intindexOf(intch);
返回该字符串第一个ch字符所在的位置
3.int
indexOf(Stringstr);
返回该字符串子字符串str起始位置
4.int
lastIndexOf(int
ch);
返回该字符串最后一个ch字符的位置
5.int
lastIndexOf(Stringstr);
返回该字符串最后一个str子字符串的起始位置
6.String subString(intbeginIndex);
从字符串某个位置到结束截取字符串
7. String subString(int beginIndex,
intendIndex);
从字符串的某个起始位置到结束(不包括末位置)截取字符串
8.String
trim();
返回去除了前后空格的字符串
9.boolean equals( Obiect object);
将自定字符串与指定对象比较
10.StringtoLowerCase();
将字母转换成小写
11.StringtoUpperCase()
将字幕转换成大写
12.char
charAt(intindex);
获取字符串指定位子的字符
13 .String [] split(String regex ,intlimit);
将字符串进行截取,返回子字符串数组
14.byte[]
getBytes();
将字符串转变为byte类型的数组
还有一点就是在条件语句中判断String类型的变量是否相等的时候不能用==,应该用.equals。因为String的变量指向的是一个地址;
一:java字符串中的不变性。
什么是java字符串的不变性呢?java字符串在被创建出来之后,这个字符串就存在于堆内存中,不能被修改,就像是创建了一个对象一样。但是可以在语句中做出类似修改的操作。例如:
String s1="你真好!"
s1=s1+"好喜欢你哦!"。
这时候打印s1时的结果为:你真好!我好喜欢你哦!
这样貌似是对s1这个字符串进行了修改,其实不然。在java中每次对字符串的修改都是创建了一个新的字符串对象。(s1+"好喜欢你哦!")就是新创建出来的字符串对象,占用了一个堆内存中的地址,而s1这个变量,重新指向了这个地址。原来s1指向的“你真好!”这个字符串对象仍然存在于堆内存中,只是没有被那个变量引用罢了,过不久就会被GC;每次newString的时候也都是创建一个新的String对象;
还有一点值得注意的是,如果在内存中创建了一个S2=“hello”;这时候S3=“hello”;其实S3跟S2引用的是同一个字符串对象;
二。java字符串的比较
java字符串用==进行比较的时候,比较的是地址,而用.equals比较的时候比较的则是字符串中的内容
三.java字符串常用的方法
String类包含了许多相应处理字符串的方法,其中包括转换字符大小写,获取字符串长度,截取字符串,对字符串进行分割等等。
注意:当返回某一字符或者子字符串的位置时如果在该字符串中没有,则返回-1
模拟运行