MyException - 我的异常网
当前位置:我的异常网» 编程 » 黑马软件工程师_String类

黑马软件工程师_String类

www.MyException.Cn  网友分享于:2013-02-20  浏览:3次
黑马程序员_String类

------- android培训、java培训、期待与您交流! ----------

 

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:去除字符串两端的空格。

 

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:将字符串反转。

 

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:获取一个字符串在另一个字符串里出现的次数。

 

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:获取两个字符串中最大相同子串。

 

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

------- android培训、java培训、期待与您交流! ----------

 

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有