Java基础——String、StringBuffer、StringBuilder、Integer

一. String类

1.特殊知识点

1.1 String s1 = "abc"; 与 String s2 = new String("abc");——s1内存中有1个对象,s2内存中有2个对象

1.2 String s1 = "abc" 与 String s1 = "abc", s1==s2 结果是true

     String是一个特殊的对象,当内存串中已有相同值的字符串,将不会从新开辟空间存储变量,而是直接引用已有的字符串s1

1.3 字符串一旦被初始化不会被改变(方法不会再原有的字符串上做出改变,只会从新创建一个)

2.常见操作

2.1 获取

(1)获取长度

 intlength() 
          返回此字符串的长度。

(2)获取某位置上的字符

 charcharAt(int index) 
          返回指定索引处的 char 值。

(3)获取索引

 intindexOf(int ch) 
          返回指定字符在此字符串中第一次出现处的索引。可以接收ASC码,从头开始索引,没有返回-1
 intindexOf(int ch, int fromIndex) 
          返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索。可以接ASC码没有返回-1
 intindexOf(String str) 
          返回指定子字符串在此字符串中第一次出现处的索引。可以接ASC码,从头开始索引,没有返回-1
 intindexOf(String str, int fromIndex) 
          返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。可以接收ASC码,没有返回-1
 intlastIndexOf(int ch) 
          返回指定字符在此字符串中最后一次出现处的索引。可以接收ASC码,从结尾处开始索引,没有返回-1
 intlastIndexOf(int ch, int fromIndex) 
          返回指定字符在此字符串中最后一次出现处的索引,从指定的索引处开始进行反向搜索。可以接收ASC码,没有返回-1
 intlastIndexOf(String str) 
          返回指定子字符串在此字符串中最右边出现处的索引。可以接收ASC码,从结尾处开始索引,没有返回-1
 intlastIndexOf(String str, int fromIndex) 
          返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索。可以接收ASC码,没有返回-1

2.2 判断

(1)字符串是否包含某一个子串

 booleancontains(CharSequence s) 
          当且仅当此字符串包含指定的 char 值序列时,返回 true。CharSequence是Sting类的父类接口,多态特性可以传入Sting、StringBuffer、StringBuilder类型。IndexOf(int ch)可以与此方法达成一样的效果

(2)字符串是否为空

 booleanisEmpty() 
          当且仅当 length() 为 0 时返回 true

(3)字符串中是否一个指定内容开头或者结尾

 booleanstartsWith(String prefix) 
          测试此字符串是否以指定的前缀开始。
 booleanstartsWith(String prefix, int toffset) 
          测试此字符串从指定索引开始的子字符串是否以指定前缀开始。
 booleanendsWith(String suffix) 
          测试此字符串是否以指定的后缀结束。

(4)判断字符串内容是否相同

 booleanequals(Object anObject) 
          将此字符串与指定的对象比较。
 booleanequalsIgnoreCase(String anotherString) 
          将此 String 与另一个 String 比较,不考虑大小写。

2.3 转换

(1)将字符数组转换成字符串

构造方法摘要
String(char[] value) 
          分配一个新的 String,使其表示字符数组参数中当前包含的字符序列。
String(char[] value, int offset, int count) 
          分配一个新的 String,它包含取自字符数组参数一个子数组的字符。

方法摘要
static StringcopyValueOf(char[] data) 
          返回指定数组中表示该字符序列的 String。
static StringcopyValueOf(char[] data, int offset, int count) 
          返回指定数组中表示该字符序列的 String。count是个数
static StringvalueOf(char[] data) 
          返回 char 数组参数的字符串表示形式。
static StringvalueOf(char[] data, int offset, int count) 
          返回 char 数组参数的特定子数组的字符串表示形式。count是个数

(2)将字符创转换为字符数组(重要)

 char[]toCharArray() 
          将此字符串转换为一个新的字符数组。

(3)将字节数组转换为字符串

构造方法摘要
String(byte[] bytes) 
          通过使用平台的默认字符集解码指定的 byte 数组,构造一个新的 String
String(byte[] bytes, int offset, int length) 
          通过使用平台的默认字符集解码指定的 byte 子数组,构造一个新的 String

(4)将字符串转换为字节数组(可以指定特定编码表)

 byte[]getBytes() 
          使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。
(5)将基本数据类型转换为字符串

static StringvalueOf(boolean b) 
          返回 boolean 参数的字符串表示形式。
static StringvalueOf(char c) 
          返回 char 参数的字符串表示形式。
static StringvalueOf(double d) 
          返回 double 参数的字符串表示形式。
static StringvalueOf(float f) 
          返回 float 参数的字符串表示形式。
static StringvalueOf(int i) 
          返回 int 参数的字符串表示形式。
static StringvalueOf(long l) 
          返回 long 参数的字符串表示形式。
static StringvalueOf(Object obj) 
          返回 Object 参数的字符串表示形式。

2.4 替换

 Stringreplace(char oldChar, char newChar) 
          返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。
 Stringreplace(CharSequence target, CharSequence replacement) 
          使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串。

2.5 切割 

 String[]split(String regex) 
          根据给定正则表达式的匹配拆分此字符串。写一般的字符串也可以,不用必须传入正则表达式

2.6 子串

 Stringsubstring(int beginIndex) 
          返回一个新的字符串,它是此字符串的一个子字符串。到结尾处
 Stringsubstring(int beginIndex, int endIndex) 
          返回一个新字符串,它是此字符串的一个子字符串。到endIndex处,包含头不包含尾

2.7 其他

 StringtoUpperCase() 
          使用默认语言环境的规则将此 String 中的所有字符都转换为大写。
 StringtoLowerCase() 
          使用默认语言环境的规则将此 String 中的所有字符都转换为小写。
 Stringtrim() 
          返回字符串的副本,忽略前导空白和尾部空白。去除空格
 intcompareTo(String anotherString) 
          按字典顺序比较两个字符串。按照自然顺序进行比较,小于返回负数,等于返回0,大于返回整数。结果就是ASC码相减得来的

3.代码体现

/*
1. 模拟一个trim方法,去除字符串两端的空格。
	思路:
	<1>.判断字符串第一个位置是否是空格,如果是继续向下判断,直到不是空格为止。结尾处判断空格也是如此。
	<2>.当开始和结尾都不是空格时就是获取字符串的位置。
2. 将一个字符串进行反转。将字符串中指定部分进行反转。
	<1>.曾经学习过对数组的元素进行反转。
	<2>.将字符串变成数组,对数组进行反转。
	<3>.将反转后的数组变为字符串。
	<4>.只要将反转的部分的开始和结束位置作为参数传递即可。
3. 获取一个字符串在另一个字符串中出现的次数。
	<1>.定义一个计数器。
	<2>.获取y第一次出现的位置。
	<3>.从第一次出现的位置后剩余的字符串中继续获取y出现的位置。
	<4>.当获取不到时,计数完成。
4. 获取两个字符串中最大相同子串。
	<1>.将短的那个字符串按照长度递减的方式获取到。
	<2>.将获取到的子串去长串中判断是否被包含。如果包含,则说明已经找到了!
*/

class StringMethod
{
	//去除两端空格
	public String trim(String s){
		int start = 0;
		int end = s.length()-1;
		while (start <= end && s.charAt(start++)==' '){}
		while (start <= end && s.charAt(end--)==' '){}
		return s.substring(start-1,end+2);
	}
	//反转字符串方法1
	public String turn(String s){
		char[] chr1 = s.toCharArray() ;
		char[] chr2 = new char[chr1.length];
		int a = chr1.length-1;
		for (int x =0 ;x < chr2.length  ;x++ ){
			chr2[x] = chr1[a];
			a--;
		}
		return String.valueOf(chr2)	;
	}

	//反转字符串中的子字符串
	public String reverseString(String s,int a,int b){
		char[] chs = s.toCharArray();
		reverse(chs,a,b);
		return new String(chs);
	}

	//反转字符串中2
	public String reverseString(String s){
		return reverseString(s,0,s.length());
	}

	//反转字符数组中的子数组
	private void reverse(char[] arr,int a,int b){
		for (int start = a,end = b-1 ;start < end ;start++,end-- ){
			swap(arr,start,end);
		}
	}
	
	//反转连个变量的值
	private void swap(char[] arr,int a,int b)
	{
		char temp = arr[a];
		arr[a] = arr[b];
		arr[b] = temp;
	}

	//获取子串在父串中的出现次数方法1
	public int getSubStringCount(String s1,String s2){
		int count = 0;
		int index = 0;
		while ((index = s1.indexOf(s2))!= -1){
			s1 =s1.substring(index+s2.length());
			count++;
		}
		return count;
	}
	
	//获取子串在父串中的出现次数方法2
	public int getSubCount(String s1,String s2){
		int count = 0;
		int index = 0;
		while ((index = s1.indexOf(s2,index))!= -1){
			index = index + s2.length();
			count++;
		}
		return count;
	}

	//获取两个字符串中最大相同子串
	public String getMaxSubString(String s1,String s2){
		String max = "",min = "";
		max = (s1.length() > s2.length())?s1:s2;
		min = (max == s1)?s2:s1;
		
		for (int x = 0;x <min.length() ;x++ )
			for (int y=0,z=min.length()-x;z!=min.length();y++,z++ ){
				String temp = min.substring(y,z);
				if (max.contains(temp))
					return temp;
			}
		return null;
	}

}

二. StringBuffer类

1.特点:

1.1 StringBuffer是字符串缓冲区,是一个容器

1.2 长度是可变化的

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

1.4 最后可以通过toString()方法转换为字符串

1.5 线程安全的字符序列,使用了同步(不推荐使用,效率低)

2.常见操作

2.1 存储

 StringBuilderappend(boolean b) 
          将 boolean 参数的字符串表示形式追加到序列。
 StringBuilderappend(char c) 
          将 char 参数的字符串表示形式追加到此序列。
 StringBuilderappend(char[] str) 
          将 char 数组参数的字符串表示形式追加到此序列。
 StringBuilderappend(CharSequence s) 
          向此 Appendable 追加到指定的字符序列。
 StringBuilderappend(double d) 
          将 double 参数的字符串表示形式追加到此序列。
 StringBuilderappend(float f) 
          将 float 参数的字符串表示形式追加到此序列。
 StringBuilderappend(int i) 
          将 int 参数的字符串表示形式追加到此序列。
 StringBuilderappend(long lng) 
          将 long 参数的字符串表示形式追加到此序列。
 StringBuilderappend(Object obj) 
          追加 Object 参数的字符串表示形式。
 StringBuilderappend(String str) 
          将指定的字符串追加到此字符序列。
 StringBuilderappend(StringBuffer sb) 
          将指定的 StringBuffer 追加到此序列。
 StringBuilderinsert(int offset, boolean b) 
          将 boolean 参数的字符串表示形式插入此序列中。
 StringBuilderinsert(int offset, char c) 
          将 char 参数的字符串表示形式插入此序列中。
 StringBuilderinsert(int offset, char[] str) 
          将 char 数组参数的字符串表示形式插入此序列中。
StringBuilderinsert(int offset, double d) 
          将 double 参数的字符串表示形式插入此序列中。
 StringBuilderinsert(int offset, float f) 
          将 float 参数的字符串表示形式插入此序列中。
 StringBuilderinsert(int offset, int i) 
          将 int 参数的字符串表示形式插入此序列中。
 StringBuilderinsert(int offset, long l) 
          将 long 参数的字符串表示形式插入此序列中。
 StringBuilderinsert(int offset, Object obj) 
          将 Object 参数的字符串表示形式插入此字符序列中。
 StringBuilderinsert(int offset, String str) 
          将字符串插入此字符序列中。

2.2 删除

 StringBuilderdelete(int start, int end) 
          移除此序列的子字符串中的字符。包含start不包含end
 StringBuilderdeleteCharAt(int index) 
          移除此序列指定位置上的 char

2.3 获取

 charcharAt(int index) 
          返回此序列中指定索引处的 char 值。
 intindexOf(String str) 
          返回第一次出现的指定子字符串在该字符串中的索引。
 intindexOf(String str, int fromIndex) 
 intlength() 
          返回长度(字符数)。
 intlastIndexOf(String str) 
          返回最右边出现的指定子字符串在此字符串中的索引。
 intlastIndexOf(String str, int fromIndex) 
          返回最后一次出现的指定子字符串在此字符串中的索引。
 Stringsubstring(int start) 
          返回一个新的 String,它包含此字符序列当前所包含字符的子序列。
 Stringsubstring(int start, int end) 
          返回一个新的 String,它包含此序列当前所包含字符的子序列。

2.4 修改

 StringBuilderreplace(int start, int end, String str) 
          使用给定 String 中的字符替换此序列的子字符串中的字符。
 voidsetCharAt(int index, char ch) 
          将给定索引处的字符设置为 ch

2.5 反转

 StringBuilderreverse() 
          将此字符序列用其反转形式取代。


三. StringBuilder类

1.特点

1.1 线程不同步,所以是不安全的字符序列。JDK1.5更新新特性(推荐使用,效率高)

1.2 方法与用法与StringBuffer相同


四. 基本数据类型包装类(例如Integer)

1.最常见的应用

1.1 基本数据类型的包装类最常见的应用就是与字符串之间的互相转换

2.常见操作

字段摘要
static intMAX_VALUE 
          值为 231-1 的常量,它表示 int 类型能够表示的最大值。
static intMIN_VALUE 
          值为 -231 的常量,它表示 int 类型能够表示的最小值。

方法摘要
static StringtoString(int i) 
          返回一个表示指定整数的 String 对象。每个基本数据类型包装类中都有此方法
static intparseInt(String s) 
          将字符串参数作为有符号的十进制整数进行解析。每个基本数据类型包装类中都有类似的此方法。统一格式——基本数据类型.parseXxx(String str)
static introtateLeft(int i, int distance) 
          返回根据指定的位数循环左移指定的 int 值的二进制补码表示形式而得到的值。左移>>
static introtateRight(int i, int distance) 
          返回根据指定的位数循环右移指定的 int 值的二进制补码表示形式而得到的值。右移<<
static StringtoBinaryString(int i) 
          以二进制(基数 2)无符号整数形式返回一个整数参数的字符串表示形式。
static StringtoHexString(int i) 
          以十六进制(基数 16)无符号整数形式返回一个整数参数的字符串表示形式。
static StringtoOctalString(int i) 
          以八进制(基数 8)无符号整数形式返回一个整数参数的字符串表示形式。
static intparseInt(String s, int radix) 
          使用第二个参数指定的基数,将字符串参数解析为有符号的整数。其他进制转换为十进制
 booleanequals(Object obj) 
          比较此对象与指定对象。复写Object中的equal方法,比较的是整数值
 intcompareTo(Integer anotherInteger) 
          在数字上比较两个 Integer 对象。比较的是自然顺序


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值