黑马程序员——String

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

String类

字符串是一个特殊的对象

字符串一旦初始化就不可以被改变

★String s1 = “abc”;

         Strings2 = new String(“abc”);

         有什么区别?

         s1在内存中有一个对象

         s2在内存中有两个对象

★String类适用于描述字符串事物,那么他就提供了多个方法对字符串进行操作

         (1)获取

                   (1.1)字符串中的包含的字符数,也就是字符串的长度 int length()

                   (1.2)根据位置获取位置上某个字符char charAt(int index);

                   (1.3)根据字符获取该字符在字符串中位置

                            intindexOf(int ch):返回的是ch在字符串中的第一次出现的位置

                            int indexOf(int ch,int fromIndex):从fromIndex制定位置开始,获取ch在字符串中出现的位置

                            intindexOf(String str):返回的是str在字符串中的第一次出现的位置

                            int indexOf(String str,int fromIndex):从fromIndex制定位置开始,获取str在字符串中出现的位置

                            intlastIndexOf(String str):

         (2)判断

                   (2.1)字符串是否包含某一子串   contains(str)

                   (2.2)字符串中时候有内容   Boolean isEmpty()

                   (2.3)字符串是否是以指定内容开头  boolean startWidth(str)

                   (2.4) 字符串是否是以指定内容结尾booleanendWidth(str)

                   (2.5)判断字符串内容是否相同,复写了Object类中的equals方法

                   (2.6) 判断字符串内容是否相同 忽略大小写 booleanequalsIgnoreCase();

         (3)转换

                   (3.1)将字符数组转成字符串

                            构造函数:String(char[])

                                                 String(char[],offset,count)

                            静态方法:

                                               staticString copyValueOf(char[])

                                               staticString copyValueOf(char[] data,int offset,int count)

                                    

                                               staticString valueOf(char[])

                   (3.2)将字符串转成字符串数组

                                               char[]toCharAarray();

                   (3.3)将字节数组转成字符串

                                               构造函数:String(byte[])

                                                 String(byte [],offset,count)

 

                   (3.4)将字符串转成字节数组

                                               byte[]getBytes()

                   (3.5)将基本数据类型转成字符串

                            static  String valueOf(int)       static  StringvalueOf(double)       

★特殊:字符串和字节数组在转换过程中,是可以制定编码表的

         (4)替换

                   (4.1)Stringreplace(char oldchar,char new char)

         (5)切割

                   String[]split(regex);

         (6)子串,获取字符串中的一部分

                   Stringsubstring(begin);

                   Stringsubstring(begin,end)

         (7)转换:取出空格,比较

                   (7.1)将字符串转成大写或者小写

                            StringtoUpperCase();

                            StringtoLowerCase()

                   (7.2)将字符串两端的多个空格去除

                            Stringtrim();

                   (7.3)对两个字符串进行自然顺序排序的比较

                            intcompareTo(String);  

●StringBuffer

    ◆字符串的组成原理就是通过该类实现的

    ◆StringBuffer可以对字符串内容进行增删

    ◆StringBuffer是一个容器

    ◆很多方法与String相同

特点:

    ◆StringBuffer是可变长度的

    ◆StringBuffer可以直接操作多个数据类型 

    ◆通过toString方法变成字符串

  ★(1)存储

        StringBufferappend():将制定数据作为参数添加到已有数据结尾处

        StringBufferinsert(index,数据)可以将数据插入到指定index指定位置

    (2)删除

        StringBufferdelete(start,end):删除缓冲区中的数据,包含start,不包含end

        StringBufferdeleteCharAt(index):删除指定位置的数据

    (3)获取

        charcharAt(int index)

        intindexOf(String str)

        intlastIndexOf(String str)

        intlength()

        Stringsubstring(int start,int end)

    (4)修改

        StringBufferreplace(start,end,string)

        voidsetCharAt(int index,char)

(5)反转

        StringBufferreverse()

(6)将缓冲区中指定数据存储到指定字符数组中

                   voidgetChars(int srcBegin,int srcEnd,char[] dst,int dstBegin)

JDK1.5版本之后出现了StringBuilder

StringBuffer是线程同步

StringBuilder是线程不同步的

 

*jdk升级原因 1提高效率2简化书写3提高安全性

●基本数据类型对象包装类

    byte    Byte

    short   Short

    int     Integer

    long    Long

    boolean     Boolean

    float   Float

    double  Double

    char    Character

 

基本数据类型对象包装类的最常见作用

就是用于基本数据类型和字符串类型之间做转换

 

◆基本数据类型转成字符串

         基本数据类型+“”

         基本数据类型.toString(基本数据类型值)   

         如Integer.toString(34)

 

◆字符串转成基本数据类型

                   xxxa=xxx.parseXXX(“  ”);

                  

                   Integer i = new Integer("123");

       int intValue =i.intValue();

◆十进制转成其它进制

toBinaryString()

toHexString()

toOctalString()

其他进制转成十进制

parsrInt(“110”,10)

 

 

 

 

 

●JDK1.5版本以后出现的新特性

    自动装箱  自动拆箱

    Integerm = 128

    Integern = 128

    sop(“m==n:”+m==n);false

    Integera = 127

    Integerb = 127

    sop(“a==b:”+a==b);true

    因为当数值在byte范围内,对于新特性,如果该数值已经存在不会在开辟新的空间


public class StringDemo {
	public static void main(String[] args) {
		String s= "skkjkka";
		System.out.println(reverseDemo(s,0,s.length()));
	}
	/*模拟一个trim方法,取出字符串两端的空格*/
	private static String trimDemo(String s) {
		int start=0;
		int end=s.length()-1;
		while(s.charAt(start)==' '&&start<=end){
			start++;
		}
		while(s.charAt(end)==' '&&start<=end){
			end--;
		}
		return s.substring(start,end+1);
	}
	/*将一个字符串反转,将字符串中指定部分进行反转*/
	private static String reverseDemo(String s,int start,int end){
		char[] arr = s.toCharArray();
		char temp;
		for (int i = start,j=end-1; i < j; i++,j--) {
			temp=arr[i];
			arr[i]=arr[j];
			arr[j]=temp;
		}
		return new String(arr);
	}

	/*获取一个字符串在另外一个人字符串中出现的次数*/
	private static String getCount(String s,String key){
		int count=0;
		int index=0;
		while((index=s.indexOf(key,index))!=-1){
			index=index+key.length();
			count++;
		}
		System.out.println(count);
		return s;
	}
	/*获取两个字符串中最大相同子串,第一个动作,将短的那个串进行长度一次递减的子串打印*/
	private static String getMaxSubString(String s1,String s2){
		String max="",min="";
		max=(s1.length()>=s2.length())?s1:s2;
		min=(max==s1)?s2:s1;
		for (int i = 0; i < min.length(); i++) {
			for (int j = 0,k=min.length()-i; k!=min.length()+1; j++,k++) {
				String temp = min.substring(j,k);
				if(max.contains(temp)){
					return temp;
				}
			}
		}
		return "";
	}
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值