黑马程序员——Java API总结(String)

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

一、String类中的方法及应用

         1、String类在Java中代表字符串。

按照面向对象的的思想对字符串进行功能分类。

1、获取:
      1.1、获取字符串字符的个数(长度):int length()
      1.2、根据位置获取字符。char charAt(int index)
      1.3、根据字符获取在字符串中的第一次出现的位置:
               int indexOf(int ch)
      1.4、获取字符串中一部分字符串。也叫子串。String substring(int beginIndex,int endIndex)//包含begin,不含end
                                               String substring (int beginIndex)
2、转换:
      2.1、将字符串变成字符串数组(字符串的切割):String[] split(String regex)   
      2.2、将字符串变成字符数组:char tocharArray()
      2.3、将字符串变成字节数组:byte[] getBytes()
      2.4、将字符串中的字母转成大小写:String toUpperCase();String toLowerCase()
      2.5、将字符串中的内容替换:String replace(char oldch ,char newch)或(String s1 ,String s2)
      2.6、将字符串两端空格去掉:String trim();
      2.7、将字符串进行连接:String cncat(string)
3、判断
      3.1、字符串中是否包含指定字符串?booblean contains(string str)(s.contains("cc"))
4、比较:
      s.compareTo("ABC")
示例:
package 练习2;

public class StringDemo
	{	
	public static void main(String[]args)
	{
			/*
			 * 字符串转化为字符数组 char[] toCharArray();
			 * */

			String s ="abc";
			char[] c=s.toCharArray();
			for(int i=0;i<s.length();i++)
			{
				System.out.println(c[i]);
			}
			
			/*
			 * 将字符串转化为字节数组byte【】 getBytes()
			 * 
			 * */
			byte[] B=s.getBytes();
			for(int i=0;i<B.length;i++)
			{
				System.out.println(B[i]);
			}
			
			/*将字符串中的字母转成大小写;String toUpperCase();大写
			 *                  String toLowerCase();小写
			 * 
			 * 
			 * */
			System.out.println(s.toUpperCase());
			
			/*
			 * 将字符串中的内容进行替换;
			 * String replace (char oldch,char newch)
			 * String replace (String s1,String s2)
			 * */
			
			System.out.println(s.replace("a","b"));
			
			
			/*
			 * 6、将字符串两端的空格去除。String trim();
			 * 
			 * 
			 * */
			System.out.println("   abc  +".trim());
			
			/*将字符串进行连接。String concat(string)
			 * 
			 *
			 * */
			System.out.println("abc".concat("dd"));
			/*
			 * 字符串判断
			 *    1、两个字符串内容是否相同? boolean equals (object obj)
			 *                       boolean equalsIgnoreCase(string str);忽略大写比较字符串内容
			 *    2、字符串中是否包含指定字符串?
			 *       boolean contains(string str)
			 *    3、字符串是否以指定的字符串开头和结尾。boolean startWith(string);
			 *                              boolean endWith(string)
			 *        
			 * 
			 * */
			System.out.println(s.contains("a"));
			System.out.println(s.startsWith("b"));
			/*
			 * 字符串比较:
			 *     
			 * 
			 * */
			System.out.println("a".compareTo("b"));
			/*
			 * 
			 *
			 * intern()对字符串池进行操作:
			 * */
			String s1=new String("abc");
			String s2=s1.intern();
			System.out.println(s1==s2);
			/*
			 * 将字符串变换成字符串数组
			 * 
			 * 
			 * 
			 * */
			
			System.out.println(s.substring(1,3));
			String s4="a,b,g";
			String[] s3=s4.split(",");
			for(int i=0;i<s3.length;i++)
			{
			System.out.println(s3[i]);
			}
		}
	}

二、String练习一 
          给定一个字符串数组,按照字典进行从小到大的排序: {"nba","abc","cba","zz","qq","dd","hh"}
     思路:
1、对数组进行排序。
2,、for嵌套和比较以及换位
3、利用compareTo()方法进行数组比较
   代码:
public class StringTest 
{
	public static void main(String[]args)
	{
		String []arr={"nba","abc","cba","zz","qq","dd","hh"};
		printArrary(arr);
		sortArray(arr);
		printArrary(arr);
	}

	public static void printArrary(String[] arr) {
		System.out.print("[");
		for(int i=0;i<arr.length;i++)
			if(i!=arr.length-1)
		{
			System.out.print(arr[i]+",");
		}else
		{
			System.out.println(arr[i]+"]");
		}
		
	}
	public static void sortArray(String[]arr)
	{
		for(int i=0;i<arr.length-1;i++)
		{
			for(int j=i+1;j<arr.length;j++)
			{
				if(arr[i].compareTo(arr[j])>0)
				{
					swap(arr, i, j);
				}
			}
		}
	}

	public static void swap(String[] arr, int i, int j) {
		String  temp = arr[i];
		arr[i]=arr[j];
		arr[j]=temp;
		
	}
	
	
}

示例(2)
            
package string练习;
/*
 * 
 *  一个子串在整串中出现的次数;
 * abdjjfjkfkflslsaasd
 * 
 * 思路:
 *    1、首先要确定字符串是否存在,如果存在获取其存在的位置,可以用indexof()完成,
 *    2、如果找到了记录下该位置,并从剩余的子串里继续寻找,而剩余子串得起始位就是子串出现位置+子串长度;
 *    3、以此类推,通过循环来完成,如果没有就返回-1,并对每次的次数用计数器记录。
 * */
public class StringTest
{
	public static void main(String[]args)
	{
		/*
		 * 创建字符串s,并初始化,并确定我们要找的子串key
		 * */
		String s ="abdjjfjkfkflslsaasd";
		String key="j";
		int count =getCount(s,key);
	    System.out.println("count="+count);
	}

	public  static int getCount(String s, String key) {
		// TODO 自动生成的方法存根
		int count=0;
		int index=0;
		while((index =s.indexOf(key))!=-1)
		{
			s=s.substring(index+key.length());
			//index=index+key.length();
			count++;
		}
		return count;
	}

}

示例(3):
   
package string练习;
/**
 * 3:两个字符串中最大相同的子串。
 * qwerabcdtyuiop
 * xcabcdvbn
 * 
 * 思路:
 *     1:既然取得最大子串,先看最短的的那个字符串是否在长的那个字符串中。如果存在最短那个字符串就是最大子串;
 *     
 *     2:如果不是,那么将短的那个子串进行 长度递减的方式取子串,去长子串中判断是否存在,
 *       如果存在,就结束,不存在继续寻找。
 * 
 * */
public class StringTest3
{
    public static void main(String[]args)
    {
    	String s1="qwerabcdtyuiop";
    	String s2="xcabcdvbn";
    	String s=getMaxSubstring( s1, s2);
    	System.out.println("s="+s);
    }
    public static String getMaxSubstring( String s1,String s2)
    {
    	for(int i=0;i<s2.length();i++)
    	{
    		for(int j=0, k=s2.length()-i;k!=s2.length()+1;j++,k++)
    		{
    			String sub=s2.substring(j,k);
    			//System.out.println(sub);
    			if(s1.contains(sub))
    			return sub;
    		}
    	}
    	return null;
    		
    }
}


示例(4)”

package string练习;
/**模拟一个trim功能一致的方法,去去除字符串两端的空白
 * 思路:
 *   1:定义两个变量:
 *      一个变量作为从头开始判断字符串空格的脚标,不断++;
 *      一个变量作为从尾部开始判断字符串空格的脚标,不断--;
 *      判断不是空格为止,取其之间的字符串即可。
 *
 * */
public class StringTest4 
{
	public static void main(String[]args)
	{
		String s="   +a ba  +   ";
		s=myTrim(s);
		System.out.println(s);
	}

	 public static String myTrim(String s) {
		// TODO 自动生成的方法存根
		 //定义变量并且初始化;
		 int start=0,end=s.length()-1;
		 while(start<=end&&s.charAt(start) == ' ')
		 {
			 start++;
		 }
		 while(start<=end&&s.charAt(end) == ' ')
		 {
			 end--;
		 }
			 
		 
		return s.substring(start,end+1);
 
  
 

三、StringBuffer

StringBuffer是字符串缓冲区,是一个容器。
特点:
长度是可变化的。
可以字节操作多个数据类型。
最终会通过toString方法变成字符串。
(1)存储
StringBuffer append():将指定数据作为参数添加到已有数据结尾处。
StringBuffer insert(index,数据):可以将数据插入到指定index位置。
(2)删除
StringBuffer delete(start,end):删除缓冲区中的数据,包含start,不包含end。
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,string);
void setCharAt(int index, char ch) ;
(5)反转
StringBuffer reverse();
(6)将缓冲区中指定数据存储到指定字符数组中。
void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 


JDK1.5 版本之后出现了StringBuilder.
StringBuffer是线程同步。
StringBuilder是线程不同步。
以后开发,建议使用StringBuilder
升级三个因素:
(1)提高效率。
(2)简化书写。
(3)提高安全性。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值