---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----------------------
String类:
特点:
1、字符串是一个特殊的对象。
2、字符串一旦初始化就不可以被改变。
3、String不能被继承。
一个常见的面试题:
String str = “abc” 和 String str1 = new String(“abc”);的区别:
“abc”是一个对象,前者只创建了一个对象,后者为两个对象。
1、获取
字符串中的包含的字符数,也就是字符串的长度。
int length();
根据位置获取位置上的某个字符。
char charAt(int index);
根据字符获取该字符在字符串中位置。
int indexOf(int ch)返回的是ch第一次在字符串中出现的位置;
int indexOf(int ch,int fromIndex);从fromIndex指定位置开始,查找ch在在字符串中出现的位置;
2、判断
字符串中是否包含某一个子串。 boolean contains(str)
字符串中是否有内容。 boolean isEmpty()
字符串是否是以指定内容开头。 boolean startsWith(str)
字符串是否是以指定内容结尾。 boolean endsWith(str)
判断内容是否相同,并忽略大小写。 boolean equalsIgnoreCase()
3、转换
将字符数组转换成字符串。
构造函数:String(char[]),String(char[],offset,count);
静态方法:static String copyValueOf(char[]);
Static String copyValueOf(char[],offset,count);
Static String valueOf(char[]);将基本数据类型转换为String。
将字符串转换成字符数组。
char[] toCharArray();
将字节数组转换成字符串。
将字符串转换成字节数组。
Byte[] getBytes();
4、替换
replace(oldchar,newchar);返回的是一个新的字符串。如果要替换的字符不存在,返回的还是原字符串。
replace(str,restr);
5、切割
String[] split(regex);
子串
String substring(begin);
String substring(begin,end);
转换大小写,去除空格,比较
将字符串转成大写或小写。
String toUpperCase();
String toLowerCase();
将字符串两端的多个空格去除。
String trim();
对两个字符串进行自然顺序的比较。
Int compareTo(String);
练习1:去除字符串两端的空格。
Java代码
- public static String myTrim(String str) {
- int start = 0,end = str.length()-1;//初始化两个指针变量,一前一后
- while(start<=end && str.charAt(start)==' ') //从前取第一个不为空格的角标值
- start++;
- while(start<=end && str.charAt(end)==' ')//从后往前取第一个不为空格的角标值
- end--;
- return str.substring(start,end+1);//截取这个字符串
- }
练习2:将字符串反转。
Java代码
- public static String reverseString(String s,int start,int end) {
- //字符串变数组。
- char[] chs = s.toCharArray();
- //反转数组。
- reverse(chs,start,end);
- //将数组变成字符串。
- return new String(chs);
- }
- /**
- * 将数组元素进行反转
- * @param arr
- * @param x
- * @param y
- */
- private static void reverse(char[] arr,int x,int y) {
- for(int start=x,end=y-1; start<end ; start++,end--) {
- swap(arr,start,end);
- }
- }
- /**
- * 交换元素方法
- * @param arr
- * @param x
- * @param y
- */
- private static void swap(char[] arr,int x,int y) {
- char temp = arr[x];
- arr[x] = arr[y];
- arr[y] = temp;
- }
练习3:获取一个字符串在另一个字符串里出现的次数。
Java代码
- public static int getSubCount(String str,String key) {
- //初始化两个指针
- int count = 0;
- int index = 0;
- while((index=str.indexOf(key))!=-1) {//判断字符串中是否有这个字符串,并记录角标值
- System.out.println("str="+str);
- str = str.substring(index+key.length());//截取从上一次出现字符串的位置到最后剩下的字符串
- count++; //记录出现的次数
- }
- return count;
- }
练习4:获取两个字符串中最大相同子串。
Java代码
- public static String getMaxSubString(String s1,String s2) {
- String max = "",min = "";//初始化两个字符串
- max = (s1.length()>s2.length())?s1: s2; //将长度较大的那个字符串赋值给max
- min = (max==s1)?s2: s1;//将长度小的赋值给min
- /**
- * 比较思想:拿长度较小的字符串去判断是否包含在长字符串中,如果没有包含
- * 则将短串的长度缩减1,会出现两个子串,再去比较,如果没有,再缩减1个长度
- * 此时出现3个子串,依次类推,直至出现包含的情况,即是最大长度的子串。
- */
- for(int x=0; x<min.length(); x++) {
- for(int y=0,z=min.length()-x; z!=min.length()+1; y++,z++) {
- String temp = min.substring(y,z);
- System.out.println(temp);
- if(max.contains(temp))
- return temp;
- }
- }
- return "";
- }
StringBuffer类:
StringBuffer是字符串缓冲区,是一个容器。长度是可变的,可以字节操作多个数据类型。最终会通过toString方法变成字符串。
1、存储 StringBuffer append():将字符串添加大已有数据的结尾处。
2、删除 StringBuffer delete(start,end):删除缓冲区中的数据,包含start。
StringBuffer deleteCharAt(index):删除指定位置的字符。
3、 获取
char charAt(int index);
int indexOf(String str);
int lastIndexOf(String str);
int length();
String substring(int start,int end);
4、修改
StringBuffer replace(start,end,str);
Void setCharAt(int index,char ch);
JDK升级的三个因素:
1、 提高效率
2、 简化书写
3、 提高安全性
基本数据类型对象包装类。
byte Byte
short Short
int Integer
long Long
boolean Boolean
float Float
double Double
char Character
---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----------------------