字符串中的一些功能函数的总结:
1:字符串类的特点:
1.1字符串的创建方式:
·通过直接的赋值
例子:String s1=”adc”;
其实就是将”abc”放入常量池中,如果下一次进行创建字符串对象时,如果发现常量池中有相应的数据,就不进行创建。直接用
·通过new
例子:String s2=new String(“abc”)
String s3=s2.intern(); //如果池子中有该对象,那么引用池子中的变量,如果没 //有,就讲该对象放入到池子中。
创建两个对象一个new一个字符串对象在堆内存中。
2:字符串类的一些常用方法
* 按照面向对象的思想对字符串进行功能分类。
* "abcd"
*
* 1,获取:
* 1.1 获取字符串中字符的个数(长度).
* int length();
* 1.2 根据位置获取字符。
* char charAt(int index);
* 1.3 根据字符获取在字符串中的第一次出现的位置.
* int indexOf(int ch)
* int indexOf(int ch,int fromIndex):从指定位置进行ch的查找第一次出现位置
* int indexOf(String str);
* int indexOf(String str,int fromIndex);
* 根据字符串获取在字符串中的第一次出现的位置.
* int lastIndexOf(int ch)
* int lastIndexOf(int ch,int fromIndex):从指定位置进行ch的查找第一次出现位置
* int lastIndexOf(String str);
* int lastIndexOf(String str,int fromIndex);
* 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 replace(String s1,String s2);
* 2.6 将字符串两端的空格去除。
* String trim();
* 2.7 将字符串进行连接 。
* String concat(string);
*
* 3,判断
* 3.1 两个字符串内容是否相同啊?
* boolean equals(Object obj);
* boolean equalsIgnoreCase(string str);忽略大写比较字符串内容。
* 3.2 字符串中是否包含指定字符串?
* boolean contains(string str);
* 3.3 字符串是否以指定字符串开头。是否以指定字符串结尾。
* boolean startsWith(string);
* boolean endsWith(string);
*
* 4,比较。
4.1 compareTo(String ) 按照字典的顺序进行比较,返回的是正负数
注意:
intern(): 对字符串池进行操作的
2:对字符串数组中的一些操作:
2.1对字符串数组进行排序:
class StringSort{
public static void main(String[] args)
{
String[] strs={"acd","ds","re","cds","redf","eres"};
System.out.println("排序前:");
printArray(strs);
arraySort(strs);
System.out.println("排序后:");
printArray(strs);
}
//打印数组
public static void printArray(String[] strs)
{
//省略了对字符串数组进行有效性检查
System.out.print("[");
for(int i=0;i
{
if(i!=strs.length-1)
System.out.print(strs[i]+",");
else
System.out.print(strs[i]+"]\n");
}
}
//对字符串数组进行排序
public static void arraySort(String[] strs)
{
for(int i=0;i
{
for(int j=i+1;j
{
if(strs[i].compareTo(strs[j])>0)
{
swap(strs,i,j);
}
}
}
}
//对字符串数组中的两个位置的字符串进行交换
public static void swap(String []strs,int i,int j){
String temp=strs[i];
strs[i]=strs[j];
strs[j]=temp;
}
}
2:对字符串中进行查找某个子串出现的次数:
class StringFind
{
public static void main(String[] args)
{
String str1="nbaafjsnbadjkfnbadsjkjnba";
String str2="nba";
int count=stringFind_1(str1,str2);
System.out.println("字符串"+str1+"中出现"+str2+"的次数是:"+count);
}
//进行查找的函数
public static int stringFind_1(String str1,String str2)
{
//定义角标和定义次数
int index=0,count=0;
while((index=str1.indexOf(str2))!=-1)
{
str1=str1.substring(index+str2.length());
count++;
}
return count;
}
//进行查找的函数
public static int stringFind_2(String str1,String str2)
{
//定义角标和定义次数
int index=0,count=0;
while((index=str1.indexOf(str2,index))!=-1)
{
index=index+str2.length();
count++;
}
return count;
}
}
3:进行匹配的字符串的最长的子串:
class StringMatch{
public static void main(String []args)
{
String str1="aewerwerfewf";
String str2="erwerew";
String str3=stringMatch(str1,str2);
System.out.println(str1+"与"+str2+"进行匹配的最大长度的子串是:"+str3);
}
public static String stringMatch(String str1,String str2)
{
for(int i=0;i
{
for(int a=0,b=str2.length()-i;b
{
String subs=str2.substring(a,b);
if(str1.contains(subs))
return subs;
}
}
return null;
}
}
4:进行模拟trim函数的功能:
class StringTrim{
public static void main(String[] args)
{
String str=" fefe ";
str=stringTrim(str);
System.out.println("---"+str+"---");
}
public static void stringTrim(String str)
{
int start=0,end=str.length()-1;
while(str.charAt(start)=='' && start<=end )
{
start++;
}
while(str.charAt(end)=='' && start<=end )
{
end--;
}
return str.substring(start,end+1);
}
}
二:StringBuffer类:(保证线程的安全性)
变长数组的原理:
其实先初始化一个数组空间,然后进行计算,重新分配一个长度的数组空间,将原有的数组中的内容进行复制到新的数组空间上。
StringBuilder(无线程安全性)和StringBuffer的区别:
例子:
package cn.itcast.p2.stringbuffer.test;
public class StringBuilderTest {
public static void main(String[] args) {
int[] arr = {3,1,5,3,8};
String s = arrayToString_2(arr);
System.out.println(s);
}
public static String arrayToString_2(int[] arr){
StringBuilder sb = new StringBuilder();
sb.append("[");
for (int i = 0; i < arr.length; i++) {
if(i!=arr.length-1)
sb.append(arr[i]+", ");
else
sb.append(arr[i]+"]");
}
return sb.toString();
}
public static String arrayToString(int[] arr){
String str = "[";
for (int i = 0; i < arr.length; i++) {
if(i!=arr.length-1)
str+=arr[i]+", ";
else
str+=arr[i]+"]";
}
return str;
}
}