黑马程序员——初识String类:String类的知识点总结

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

String类概述
String类特点
    String类通过final声明,所以不能被继承,方法也不能被覆盖。所以字符串对象的特点是作为一个常量,一经初始化,永远不会改变,这是它跟其它引用数据类型最大的不同之处。
常量池
    常量池里专门放置源代码中的符号信息,并且不同的符号信息放置在不同标志的常量表中。而字符串常量池内部是一个char[]数组,存放一个个的字符。如:对于String s1="abc";String s2 ="efg"; 这时字符串常量池中,会用char[]数组存储'a'、'b'、'c'、'e'、'f'、'g'6个字符,如果此时String s3 = "acg",那么它会从常量池中拿出这个'a' 'c' 'g'这三个字符,组成一个字符串对象赋给s3。
特点展示代码:
class StringDemo 
{
	public static void main(String[] args) 
	{
		/*
		String s1 = "abc";//s1是一个类类型变量, "abc"是一个对象。
						//字符串最大特点:一旦被初始化就不可以被改变。

		String s2 = new String("abc");

		//s1和s2有什么区别?
		//s1在内存中有一个对象。
		//s2在内存中有两个对象。
		




		System.out.println(s1==s2);
		System.out.println(s1.equals(s2));//String类复写了Object类中equals方法,
										//该方法用于判断字符串是否相同。

		*/

		String s = "abcde";
		method_1(s);
	}

	/*
	String类是对字符串事物的描述。
	该类定义了专门用于操作字符串的方法。
	"abc":
	*/

	public static void method_1(String s)
	{
		char ch = s.charAt(3);

		System.out.println("ch="+ch);
		int num = s.codePointAt(3);

		System.out.println("num="+num);

		String s1 = "qq";
		s1 = s1.concat("mm");

		System.out.println("s1="+s1);
		System.out.println("qq"+"mm");

		String a = "opq";
		String b = "opq";
		System.out.println("a==b:"+(a==b));


	}
}
 
String类的的常见功能
String类适用于描述字符串事物。那么它就提供了多个方法对字符串进行操作。
1.获取     
    字符串中的包含的字符数,也就是字符串的长度。
        intlength():获取长度(数组中的长度是数组的一个属性)
        charcharAt(int index):
    根据字符获取该字符在字符串中的位置。
        intindexOf(int ch):放回的ch在字符串中第一次出现的位置。
        intindexOf(int ch,int fromIndex):从fromIndex指定位置开始,获取ch在字符串中的位置。
        intindexOf(String str):返回的是str在字符串中第一次出现才位置。
        intindexOf(String str, int fromIndex) :从fromIndex指定位置开始,获取str在字符串中出现的位置。
2.判断
    字符串中是否包含某一个子串
        boolean contains(CharSequence s)
        特殊之处:indexOf(str):可以所以str第一次出现的位置,如果返回-1,表示str不在字符串中存在。所以,也可以用于判断指定判断是否包含。
                if(str.indexOf("aa"!=-1));而且该方法,既可以判断,也可以获取出现的位置。
    字符串中是否有内容。
         booleanisEmpty():原理就是判断长度是否为零。
    字符 串是否是以指定内容开头。
         booleanstartsWith(str)
    字符串知否以指定内容结尾。
         booleanendsWith(str)
    判断字符串的内容是否相同,复写了Object类中equals方法。
         booleanequals(str)
    判断内容是否相同,并忽略大小写。
         booleanequalsignoreCase()
3.转换
    将字符数组转成字符串。
        构造函数:String(char[])
             String(char [],offset,count):将字符数组中的一部分转成字符串。
        静态方法:
             static String copyValueOf(char [])
             static String copyValueOf(char [] data,intoffset ,int count)
             static String valueOf(char []);
    将字符串转成字符数组。
        char[]toCharArray();
    将字节数组转成字符串。
        String(byte[])
        String(byte[],offset,count):将字节数组中的一部分转成字符串。                
    将字符串转换成字节数组。
        byte[]getBytes();
    将基本数据类型转成字符串。
        staticString valueOf(int);
        staticString valueOf(double);
        //3+"";//String.valueOf(3);
        注意:字符串和字节数组在转换过程中,是可以指定编码表的。
4.替换
    Stringreplace(oldchar,newchar);
5.切割
    String[]split(regex);(后边正则表达式)
6.子串,获取字符串中的一部分。
    String substring(int beginIndex)
    String substring(int beginIndex, int endIndex)
7.大小写转换,去除空格,比较。
    将字符串转成大写或者小写。
        StringtoUpperCase();
        StringtoLowerCase();
    将字符串两端的多个空格去除。
        Stringtrim(); 
    对两个字符串进行自然顺序比较。
        intcompareTo(String)
        忽略大小写比较,其实即使全部转成小写或大写,然后再比较。
 
String的方法示例
class  StringMethodDemo
{

	public static void method_7()
	{
		String s = "    Hello Java     ";
		sop(s.toLowerCase());
		sop(s.toUpperCase());
		sop(s.trim());

		String s1 = "a1c";
		String s2 = "aaa";

		sop(s1.compareTo(s2));
	}
	public static void method_sub()
	{
		String s = "abcdef";

		sop(s.substring(2));//从指定位置开始到结尾。如果角标不存在,会出现字符串角标越界异常。
		sop(s.substring(2,4));//包含头,不包含尾。s.substring(0,s.length());
	}

	public static void  method_split()
	{
		String s = "zhagnsa,lisi,wangwu";

		String[] arr  = s.split(",");

		for(int x = 0; x<arr.length; x++)
		{
			sop(arr[x]);
		}
	}

	public static void method_replace()
	{
		String s = "hello java";

		//String s1 = s.replace('q','n');//如果要替换的字符不存在,返回的还是原串。


		String s1 = s.replace("java","world");
		sop("s="+s);
		sop("s1="+s1);
	}

	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 x=0; x<chs.length; x++)
		{
			sop("ch="+chs[x]);
		}
	}
	public static void method_is()
	{
		String str = "ArrayDemo.java";
		
		//判断文件名称是否是Array单词开头。
		sop(str.startsWith("Array"));
		//判断文件名称是否是.java的文件。
		sop(str.endsWith(".java"));
		//判断文件中是否包含Demo
		sop(str.contains(".java"));


	}


	public static void method_get()
	{
		String str = "abcdeakpf";

		//长度
		sop(str.length());

		//根据索引获取字符。
		sop(str.charAt(4));//当访问到字符串中不存在的角标时会发生StringIndexOutOfBoundsException。


		//根据字符获取索引
		sop(str.indexOf('m',3));//如果没有找到,返回-1.
		
		//反向索引一个字符出现位置。
		sop(str.lastIndexOf("a"));

		
	}
	public static void main(String[] args) 
	{
		method_7();
//		method_trans();
//		method_is();
//		method_get();
		/*
		String s1 = "abc";
		String s2 = new String("abc");

		String s3 = "abc";
		System.out.println(s1==s2);
		System.out.println(s1==s3);

		*/
	}

	public static void sop(Object obj)
	{
		System.out.println(obj);
	}


}
 
 
StringBuffer
特点
    StringBuffer是一种容器,他的特点是:
        1.长度是可变化的 
        2.可以直接操作多个数据类型。
        3.最终会通过toString()方法变成字符串。
    容器有一些共性的操作,即:C create U update R read D delete
  
StringBuffer的常见操作
1.存储
    StringBufferappend():将指定的数据作为参数添加到已有数据的尾处。
    StringBufferinsert(index,String str):可以将数据插入到指定index位置。
2.删除
    StringBufferdelete(start,end):删除缓冲区中的数据,包含start,不包含end。
    StringBufferdeleteCharAt(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(int start, int end,String str)
    void setCharAt(int index, char ch)
5.反转
    StringBufferreverse();
 
StringBuffer的使用示例
class StringBufferDemo 
{
	public static void main(String[] args) 
	{
		//method_update();

		StringBuilder sb = new StringBuilder("abcdef");
	
		char[] chs = new char[6];


		sb.getChars(1,4,chs,1);
		for(int x=0; x<chs.length; x++)
		{
			sop("chs["+x+"]="+chs[x]+";");
		}

		draw(3,6);
		draw(8,9);

//		StringBuilder sb1 = new StringBuilder();
//		sb1.append(new Demo()).append(new Demo());
//		sop("sb1="+sb1);
	}
	public static void method_update()
	{
		StringBuffer sb  = new StringBuffer("abcde");

//		sb.replace(1,4,"java");
		sb.setCharAt(2,'k');


		sop(sb.toString());
	
	}
	public static void method_del()
	{
		StringBuffer sb  = new StringBuffer("abcde");
		
//		sb.delete(1,3);
		//清空缓冲区。
		//sb.delete(0,sb.length());

		//sb.delete(2,3);
		sb.deleteCharAt(2);

		sop(sb.toString());
	}

	public static void method_add()
	{
		StringBuffer sb = new StringBuffer();


		//sb.append("abc").append(true).append(34);
//		StringBuffer sb1 = sb.append(34);
//		sop("sb==sb1:"+(sb==sb1));

		sb.insert(1,"qq");
		sop(sb.toString());//abctrue34
		//sop(sb1.toString());

		
	}

	
	public static void sop(String str)
	{
		System.out.println(str);
	}
	
	public static void draw(int row,int col)
	{
		StringBuilder sb = new StringBuilder();
		for(int x=0; x<row; x++)
		{
			for(int y=0; y<col; y++)
			{
				sb.append("*");
			}
			sb.append("\r\n");
		}

		sop(sb.toString());
	}

}

 

 

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值