黑马程序员----String类

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


String类

String类:

          java为便于对字符串这种常见的数据进行描述,将字符串进行了对象的封装,这样就可以定义多种方法和属性。

          字符串的最大特点是一旦被初始化就不可以被改变。

定义字符串的两种方法:

     String s1="abc";                        这个在内存中只有一个对象abc

     String s2=new String("abc")      这个在内存中有两个对象,一个new.一个abc


String类中的常见方法:

             1.equals(),这个方法复写了Object中的方法,是比较两个字符串的内容。

              所以上述的:s1==s2>>>>false,比较的是地址

                                    s1.eguqls(s2)>>>>true,比较的是内容

              2.获取和判断:

            2.1获取字符串的长度:int length()

                  2.2 根据位置获取某个字符:char charAt(int index)

                  2.3 根据字符或取字符在字符串中的位置:int indexOf(int ch)>>ch接受的字符码;第一次出现的位置,这个方法有多个重载方式

                                                                                      int insexOf(int ch,int fromIndex)从指定位置开始获取ch的位置

                                                                                      int indexOf(String str),获取字符串str第一次出现的位置

                                                                                      int indexOf(String str,int fromindex)从指定位置开始获取str的位置

                                                                                      int lastindexOf(int ch),反响索引字符出现的位置


                  2.4 判断字符串中是否包含一个子串:boolean contains(str),indexOf(str)也可以进行这样的判断,判断返回值是否为-1.注意,只需判断用contains,

                        需要返回值用indexOf。

                  2.5 判断字符串中是否有内容:boolean isEmpty()>>原理就是判断字符串的长度是否为0

                  2.6 判断字符串是否以指定内容开头:boolean startsWith(str)

                  2.7 判断字符串是否一指定内容结尾:boolean endsWith(str)

                  2.8 忽略大小写判断内容是否相同。boolean equalsIgnoreCase().

代码示例:

package xiaobing.string;

public class StringDemo01
{
	public static void method_is()//定义判断的方法
	{
		String str="ArrayDemo.java";
		//判断是否已Array单词开头
		sop(str.startsWith("Array"));
		//判断是否是是java文件
		sop(str.endsWith(".java"));
		//判断文件中是否包含D恶mo
		sop(str.contains("Demo"));
	}
	public static void method_get()//练习获取的方法
	{
		String str="abcdeakpf";
		sop(str.length());//获取长度
		//根据索引获取字符
		sop(str.charAt(4));//访问到不存在的角标时,或有角标越界异常
		//恩菊字符获取索引
		sop(str.indexOf('d',3));//没有找到角标,返回-1
		//反向索引
		sop(str.lastIndexOf("a"));
		
	}
	public static void main(String[] args)
	{
		method_get();
	}
	public static void sop(Object obj)//定义输出的方法,简化代码
	{
		System.out.println(obj);
	}
}

           3.转换

               3.1 将字符数组转换为字符串:

                             构造函数String(char[]),

                             构造函数 String(char[],int offect,int count)>>将数组一部分转换

                              静态方法:static String copyValueOf(char[]),statc string copyValueOf(char[] data,int offect,count)

                3.2 将字符串转换为字符数组>>char[] toCharArray();

                3.3 将字节数组转换为字符串,byte[] getBytes()

                3.4 将字节数组转换为字符串:

                             构造函数String(byte[]),

                             构造函数 String(byte[],int offect,int count)>>将数组一部分转换

                 3.5 将基本数据类型进行转换:static String valueOf(数据类型)》》》》3+"";String.valueOf(3).

代码示例:

package xiaobing.string;

public class StringDemo02 {
	public static void method_trans()
	{
		char[] arr={'a','b','c','d','e','f'};
		String s=new String(arr,1,3);//数组转换为字符串
		sop("s="+s);
		String s1="zxcvbnm";
		char[] chs=s1.toCharArray();//转换为数组
		for(int i=0;i<chs.length;i++)
		{
			sop(chs[i]);
		}
	}
	public static void main(String[] args)
	{
		method_trans();
	}
	public static void sop(Object obj)//定义输出的方法,简化代码
	{
		System.out.println(obj);
	}
}<strong><span style="font-size:18px;color:#ff0000;">
</span></strong>

      四、替换和切割方法

                             4.1 替换:String replace(oldchar,newchar),按指定规则进行替换

                             4.2 切割:String[] split(regex)

                             4.3 获取字符串中的一部分。String substring(begin);String substing(begin,end).

代码示例:

package xiaobing.string;

public class StringDemo03 {
	public static void method_replace()
	{
		String s="Hello Java";
		String s1=s.replace('a', 'b');//替换
		String s2="zhangsan,lisi,wangwu";
		String[] arr=s2.split(",");//以逗号分分割切割
		for(int i=0;i<arr.length;i++)
		{
			sop(arr[i]);
		}
		sop("s"+s);
		sop("s1="+s1);
		sop(s.substring(2));//从指定位置开始获取
		sop(s.subSequence(2, 5));//包含头,不包含尾
	}
	public static void main(String[] args)
	{
		method_replace();
	}
	public static void sop(Object obj)//定义输出的方法,简化代码
	{
		System.out.println(obj);
	}
}

             、比较和去除空格方法

                      5.1 将字符串转换为大写或小写,String toUpperCaer(),String toLowerCase().

                      5.2 去除两端空格,String trim()

                      5.3 对两个字符串进行自然顺序比较,int compareTo(string)

代码示例:

package xiaobing.string;

public class StringDemo04 {
	public static void method()
	{
		String s="    Hello Java";
		sop(s.toLowerCase());//转为小写
		sop(s.toUpperCase());//转换为大写
		sop(s.trim());//去除空格
		String s1="abc";
		String s2="aaa";
		sop(s1.compareTo(s2));//返回正数,表示s1>s2,负数表示小于,0位相等
	}
	public static void main(String[] args)
	{
		method();
	}
	public static void sop(Object obj)//定义输出的方法,简化代码
	{
		System.out.println(obj);
	}
}



练习1:

package xiaobing.string;
/*
 * 需求:编写程序模拟字符串去除空格
 * 思路:从开始和结尾判断是否为空格,直到都不为空格获取的字符串即为无空格的
 * 获取到首和尾不为空格的角标后利用substring方法即可。
 */

public class StringTest01 {
	public static void myStrim(String str)
	{
		int start=0;
		int end =str.length()-1;
		while(start<=end&&str.charAt(start)==' ')//获取首部角标
			start++;
		while(start<=end&&str.charAt(end)==' ')//获取尾部角标
			end--;
		String s=str.substring(start, end+1);//包含头不包含尾
		System.out.println(s);
	}
	public static void main(String[] args)
	{
		myStrim("   asad  sdsfg    ");
	}
}

练习2:

package xiaobing.string;
/*
 * 需求:将字符串反转
 * 思路:
 * 1.字符串变为数组
 * 2.对数组反转
 * 3.数组变为字符串
 */

public class StringTest02 {
	public static String reverseString(String s)
	{
		//将字符串变为数组
		char[] chs=s.toCharArray();
		//反转数组
		reverse(chs);
		//数组转换为字符串
		return new String(chs);
	}
	private static void reverse(char[] arr)//反转数组
	{
		for(int start=0,end=arr.length-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;
	}
	public static void main(String[] args)
	{
		String s="    ab  cd    ";
		sop("("+s+")");
		sop("("+reverseString(s)+")");
	}
	public static void sop(String str)//打印语句
	{
		System.out.println(str);
	}

}

练习3:

package xiaobing.string;
/*
 * 需求:获取一个字符串在另一个字符串中出现的次数
 * "abkkcdkkedkkskk"
 * 思路:
 * 1.定义一个计数器
 * 2.获取kk第一次出现的位置
 * 3.从第一次出现的后面剩余字符串继续找
 * 4.获取不到时计数完成
 */
public class StringTest03 {
	public static int getSubCount(String str,String key)
	{
		int count=0;
		int index=0;
		while((index=str.indexOf(key))!=-1)//获取key的位置
		{
			str=str.substring(index+key.length());//去除该位置后的字符串
			count++;
		}
		return count;
	}
	public static void main(String[] args)
	{
		String str="abkkcdkkefkkskk";
		sop("count="+getSubCount(str,"kk"));
	}
	public static void sop(String str)
	{
		System.out.println(str);
	}
}


 StringBuffer字符串缓冲区:

               StringBuffer是一个容器,具有存储、删除、获取、修改。该容器长度可变,可以修改字符串内容,并且可以存储任意数据。

1.存储:append()方法,可以添加任意数据,每次添加在结尾处insert(index,数据)将数据指定位置。

2.删除。delete(start,end),删除数据,包含start,不包含end

3.获取:char charAt(int index)

              int insdexOf(String str)

              int lastIndexOf(String str)

              int length()

              String substring(int start,int end)

4.修改

      StringBuffer replace(start,end,string)

      void setCharAt(int idex,char ch)

5.反转

      StringBuffer  revese()

    

package xiaobing.string;

public class StringBufferDemo {
	public static void method_add()//添加
	{
		StringBuffer sb=new StringBuffer();
		sb.append("sff").append(123).append(true);
		sop(sb.toString());
	}
	public static void method_del()//删除
	{
		StringBuffer sb=new StringBuffer();
		sb.append("abcdefghjkl");
		sb.delete(2, 6);
		sop(sb.toString());
	}
	public static void method_update()
	{
		StringBuffer sb=new StringBuffer("abcdefghjk");
		sb.replace(1,4,"java");
		sop(sb.toString());
		//sb.setCharAt(2, 'o');替换

	}
	public static void main(String[] args)
	{
		method_add();
		method_del();
		method_update();
	}
	public static void sop(String str)
	{
		System.out.println(str);
	}
	
}


StringBuilder:也是字符串缓冲区,于JDK1.5以后出现

            

                    StringBuffer 和 StringBuilder 的区别:

StringBuffer线程安全。

StringBuilder线程不安全。

单线程操作,使用StringBuilder 效率高。

多线程操作,使用StringBuffer 安全。

                        



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值