字符串是一个特殊的对象:
在下面代码中体现String类中的功能:
<span style="font-size:18px;"><strong>public class SringDemo {
public static void main(String[] args) {
/*
* 字符串最大的特点:一旦初始化就不可以被改变
* str在内存中有一个对象
* str1在内存中有两个对象
*
* String 中常用的方法 :
* 1.获取
* 获取字符串的长度:int length();
* 根据索引获取字符:char charAt(int index);
* 根据字符串获取该字符在字符串中的位置:
* int indexOf(int char);返回的是char在字符中第一次出现的位置
* int indexOf(int char,int fromIndex);从fromIndex指定位置开始,获取ch在字符串中出现的位置
*
* int indexOf(String str);返回的是str在字符中第一次出现的位置
* int indexOf(Sting str,int fromIndex);从fromIndex指定位置开始,获取str在字符串中出现的位置
*
* 2.判断:
* 判断一个字符串是否包含某一个字串:boolean contains(str);
* 判断字符串中是否有内容: boolean isEmpty();
* 字符串是否以指定内容开头: boolean startWith(str);
* 字符串是否以指定内容结尾: boolean endsWith(str);
* 判断字符串内容是否相同: boolean equals(str);
* 判断字符串内容是否相同并忽略大小写: boolean equalsIgnoreCase();
*/
//str是一个变量,"abc"是一个对象
String str1 = new String("abc");
String str2 = "abc";
String str = "abcdeafgd";
// 1、获取
System.out.println(str.length());
System.out.println(str.charAt(4));//根据索引获取字符
System.out.println(str.indexOf('d'));//返回的是char在字符中第一次出现的位置
System.out.println(str.indexOf('a', 3));//从fromIndex指定位置开始,获取ch在字符串中出现的位置
System.out.println(str.lastIndexOf("a"));//反向索引一个字符串出席那的位置
//2、判断
String str3 = "ArrayDemo.java";
System.out.println(str3.startsWith("Array"));//判断是否以Array开始
System.out.println(str3.endsWith(".java"));//判断是否以.java结束
System.out.println(str3.contains("Demo"));//判断是否包含Demo
System.out.println(str3.isEmpty());//判断字符串是否为空
// System.out.println(str == str1);
// System.out.println(str == str2);
// System.out.println(str.equals(str1));//该方法用于判断字符串是否相等
}
}
</strong></span>
<span style="font-size:18px;"><strong>public class StringDemo {
/*
* 转换:将字符串转换成大写或小写;
* String toUpperCase();
* String toLawerCase();
* 将字符串两端的空格取去除:
* String trim();
* 对两个字符串进行自然顺序的比较:
* int CompareTo(string);
* 返回的值正数,负数,0 表示大小
*
*/
public static void main(String[] args) {
String str = " Hello java";
String str1 = "aaa";
String str2 = "abc";
System.out.println(str.toUpperCase());//变成大写
System.out.println(str.toLowerCase());//变成小写/
System.out.println(str.trim());//去除两端空格
System.out.println(str1.compareToIgnoreCase(str2));
}
}</strong></span>
<pre class="html" name="code"><span style="font-size:18px;"><strong>public class StringDemo {
/*
* 替换:
* String replace(oldchar,newchar);
* 如果替换的字符不存在返回原来的
*
* 切割:
* String[] split(regex);
*
* 获取字串:
* String substring(int beginIndex);
* String substring(int begin,int endIndex);
* 获取结果包含头,不包含尾
*/
public static void main(String[] args) {
//替换
String str = "hellojava";
System.out.println(str.replace('h', 'H'));//替换指定字符
System.out.println(str.replace("java","你好"));//替换指定字符串
//切割
String s = "张三,李四,王五";
String[] s1 = s.split(",");//以逗号为切割点
for(String k : s1){//遍历数组
System.out.println(k);
}
System.out.println(s.substring(3,5));//可以作为获取功能,获取指定位置上的字符串
//获取字符串
String s2 = "abcdefgh";
System.out.println(s2.substring(2));//从指定位置开始获取
System.out.println(s2.substring(2,5));//获取指定某段字符串
}
}
</strong></span>
<pre class="html" name="code"><span style="font-size:18px;"><strong>public class Demo {
/*
*将字符数组转换成字符串:
* 构造函数:String(char[]);
* String(char[],offest,count)
* 静态方法:static String copyValueOf(char[]);
* static String copyValueOf(char[],int offext,int count);
* static valueOf(char[]);
*将字符串转换成字符数组:
*char[] toCharArray();
*将字节数组转换成字符串:
*构造函数:String(byte[]);
* String(byte[],offest,count);
*将基本数据类型转换成字符串:
*static String valueOf(int);
*Static String valueOf(double);
*
*/
public static void main(String[] args) {
//将字符数组转换成字符串
char[] arr = {'a','b','c','d','e','f','g','h'};
String s = new String(arr);//转换成字符串
System.out.println(s);
String s1 = new String(arr,1,3);//转换其中的一部分
System.out.println(s1);
System.out.println(String.copyValueOf(arr));//静态方法的用法
System.out.println(String.copyValueOf(arr,1,5));//转换其中的一部分(count是数组的长度)
//将字符串变化成字符数组
String ss = "abcdsss";
char[] arr1 = ss.toCharArray();
for(char k : arr1){
System.out.println("char=" + k);
}
//基本数据类型转换成字符串
int x = 3;
String n = 3 + "";
System.out.println(String.valueOf(x));
System.out.println(n);
}
}</strong></span>
<span style="font-size:18px;"><strong>下面细节个练习的代码:</strong></span>
<pre class="html" name="code"><span style="font-size:18px;"><strong>public class StringDemo1 {
public static void main(String[] args) {
//去掉字符串两端"-"获取字符串
String str = "--ab cd--";
int start = 0, end = str.length() - 1;
//从开始位置判断
while(start <= end && str.charAt(start) == '-'){
start++;
//从结束位置判断
while(start <= end && str.charAt(end) == '-'){
end--;
}
}
//System.out.println(str.trim());
System.out.println(str.substring(start, end+1));
}
}</strong></span>
<span style="font-size:18px;"><strong></strong></span>
<span style="font-size:18px;"><strong>public class StringDemo2 {
/*
* 字符串翻转
* 1.将字符串变成数组
* 2.对数组翻转
* 3.将数组变成字符串
*/
public static void main(String[] args) {
String str = "abcd efgh";
System.out.println(reverseString(str,0,2));//怎么不可以局部翻转
}
public static String reverseString(String s,int start,int end){
char[] chars = s.toCharArray();
reverse(chars,start,end);
return (new String(chars));
}
public static String reverseString(String s){
return reverseString (s,0,s.length());
}
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);
}
}
private static void swap(char[] arr, int x, int y) {
char temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
}
</strong></span>
<span style="font-size:18px;"><strong></strong></span>
public class StringDemo {
/*
* 替换:
* String replace(oldchar,newchar);
* 如果替换的字符不存在返回原来的
*
* 切割:
* String[] split(regex);
*
* 获取字串:
* String substring(int beginIndex);
* String substring(int begin,int endIndex);
* 获取结果包含头,不包含尾
*/
public static void main(String[] args) {
//替换
String str = "hellojava";
System.out.println(str.replace('h', 'H'));//替换指定字符
System.out.println(str.replace("java","你好"));//替换指定字符串
//切割
String s = "张三,李四,王五";
String[] s1 = s.split(",");//以逗号为切割点
for(String k : s1){//遍历数组
System.out.println(k);
}
System.out.println(s.substring(3,5));//可以作为获取功能,获取指定位置上的字符串
//获取字符串
String s2 = "abcdefgh";
System.out.println(s2.substring(2));//从指定位置开始获取
System.out.println(s2.substring(2,5));//获取指定某段字符串
}
}
<span style="font-size:18px;"><strong>public class StingDemo3 {
/*
* 获取字符串中一个字符串出现的次数
*/
public static void main(String[] args) {
String str = "abkkcdakkebfakkgbakkha";
System.out.println(getCount(str,"kk"));
}
public static int getCount(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;
}
}
</strong></span>
<span style="font-size:18px;"><strong>public class StringDemo4 {
/*
* 获取两个字串中的最大相同的字串
*/
public static void main(String[] args) {
String s = "abcdhellodfgda";
String s1 = "echellomklkji";
System.out.println(getMaxSubString(s,s1));
}
public static String getMaxSubString(String s1,String s2){
for(int x = 0; x < s2.length(); x++){
for(int y = 0, z = s2.length()-x; z != s2.length()+1; y++, z++){
String temp = s2.substring(y,z);
//System.out.println(temp);
if(s1.contains(temp)){
return temp;
}
}
}
return "";
}
}
</strong></span>
StringBuffer的特性:
<span style="font-size:18px;"><strong>public class StringBufferDemo {
/*
* StringBuffeer:字符串缓冲区
* 特点:
* 长度可变化
* 可以操作多种类型
* 最终会通过toString转换成字符串
* 存储:
* StringBuffer apppend();将指定数据添加到已有数据的结尾处
* 插入:StringBuffer insert(index,数据);在指定位置插入
*
* 删除:
* StringBuffer delete(start,end);//删除某一段包,含start不包含end
* StringBuffer deleteCharAt(index);//查出指定位置的字符
* 修改:(替换)
* StringBufffer replace(start,end,str);//替换指定位置上的内容
* void steCharAt(index,char);//替换某一个字符 (无返回)
*
* 查询:
* char charAt(index); 根据下标获取
* int indexOf(String str); 跟字符获取下标
* int length();字符长度
* String substring(int start,int end);//获取一部分
*
* 反转:
* StringBuffer reverse();//反转
*
* 将缓冲区中的指定字符串存储到指定字符数组中
* void getChars(int srcBegin,int srcEnd,char[] dest,int dextBegin)
* 参数意思:指定开始出,指定结束处,指定存储位置,指定存储开始位置
*/
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();
//添加(插入)
sb.append("abcde").append("java").append("hello");
sb.insert(2, "qq");//在指定位置插入
System.out.println(sb.toString());
//删除
sb.delete(1, 3);//删除一段数据
System.out.println(sb.toString());
sb.deleteCharAt(4);//删除指定位置上的数据
System.out.println(sb.toString());
//替换
sb.replace(1, 3, "kk");//替换一段字符
System.out.println(sb.toString());
sb.setCharAt(2, 's');//替换特定字符
System.out.println(sb);
//反转
sb.reverse();//字符串反转
System.out.println(sb.toString());
//将缓冲区中的指定字符串存储到指定字符数组中
StringBuffer s = new StringBuffer("abcdefgh");
char[] arr = new char[4];
s.getChars(1, 4, arr, 1);
for(int i = 0; i < arr.length; i++){
System.out.println("char["+ i +"]=" + arr[i]);
}
}
}</strong></span>
public class StringBufferDemo {
/*
* StringBuffeer:字符串缓冲区
* 特点:
* 长度可变化
* 可以操作多种类型
* 最终会通过toString转换成字符串
* 存储:
* StringBuffer apppend();将指定数据添加到已有数据的结尾处
* 插入:StringBuffer insert(index,数据);在指定位置插入
*
* 删除:
* StringBuffer delete(start,end);//删除某一段包,含start不包含end
* StringBuffer deleteCharAt(index);//查出指定位置的字符
* 修改:(替换)
* StringBufffer replace(start,end,str);//替换指定位置上的内容
* void steCharAt(index,char);//替换某一个字符 (无返回)
*
* 查询:
* char charAt(index); 根据下标获取
* int indexOf(String str); 跟字符获取下标
* int length();字符长度
* String substring(int start,int end);//获取一部分
*
* 反转:
* StringBuffer reverse();//反转
*
* 将缓冲区中的指定字符串存储到指定字符数组中
* void getChars(int srcBegin,int srcEnd,char[] dest,int dextBegin)
* 参数意思:指定开始出,指定结束处,指定存储位置,指定存储开始位置
*/
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();
//添加(插入)
sb.append("abcde").append("java").append("hello");
sb.insert(2, "qq");//在指定位置插入
System.out.println(sb.toString());
//删除
sb.delete(1, 3);//删除一段数据
System.out.println(sb.toString());
sb.deleteCharAt(4);//删除指定位置上的数据
System.out.println(sb.toString());
//替换
sb.replace(1, 3, "kk");//替换一段字符
System.out.println(sb.toString());
sb.setCharAt(2, 's');//替换特定字符
System.out.println(sb);
//反转
sb.reverse();//字符串反转
System.out.println(sb.toString());
//将缓冲区中的指定字符串存储到指定字符数组中
StringBuffer s = new StringBuffer("abcdefgh");
char[] arr = new char[4];
s.getChars(1, 4, arr, 1);
for(int i = 0; i < arr.length; i++){
System.out.println("char["+ i +"]=" + arr[i]);
}
}
}