您的位置:首页 > 产品设计 > UI/UE

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

2014-11-29 19:43 537 查看

一. 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)获取长度

 int
length()
 

          返回此字符串的长度。
(2)获取某位置上的字符

 char
charAt(int index)
 

          返回指定索引处的 
char
 值。
(3)获取索引

 int
indexOf(int ch)
 

          返回指定字符在此字符串中第一次出现处的索引。可以接收ASC码,从头开始索引,没有返回-1
 int
indexOf(int ch, int fromIndex)
 

          返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索。可以接收ASC码,没有返回-1
 int
indexOf(String str)
 

          返回指定子字符串在此字符串中第一次出现处的索引。可以接收ASC码,从头开始索引,没有返回-1
 int
indexOf(String str, int fromIndex)
 

          返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。可以接收ASC码,没有返回-1
 int
lastIndexOf(int ch)
 

          返回指定字符在此字符串中最后一次出现处的索引。可以接收ASC码,从结尾处开始索引,没有返回-1
 int
lastIndexOf(int ch, int fromIndex)
 

          返回指定字符在此字符串中最后一次出现处的索引,从指定的索引处开始进行反向搜索。可以接收ASC码,没有返回-1
 int
lastIndexOf(String str)
 

          返回指定子字符串在此字符串中最右边出现处的索引。可以接收ASC码,从结尾处开始索引,没有返回-1
 int
lastIndexOf(String str, int fromIndex)
 

          返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索。可以接收ASC码,没有返回-1

2.2 判断

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

 boolean
contains(CharSequence s)
 

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

 boolean
isEmpty()
 

          当且仅当 
length()
 为 0 时返回 true。
(3)字符串中是否一个指定内容开头或者结尾

 boolean
startsWith(String prefix)
 

          测试此字符串是否以指定的前缀开始。
 boolean
startsWith(String prefix, int toffset)
 

          测试此字符串从指定索引开始的子字符串是否以指定前缀开始。
 boolean
endsWith(String suffix)
 

          测试此字符串是否以指定的后缀结束。
(4)判断字符串内容是否相同

 boolean
equals(Object anObject)
 

          将此字符串与指定的对象比较。
 boolean
equalsIgnoreCase(String anotherString)
 

          将此 
String
 与另一个 
String
 比较,不考虑大小写。

2.3 转换

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

构造方法摘要
String(char[] value)
 

          分配一个新的 
String
,使其表示字符数组参数中当前包含的字符序列。
String(char[] value, int offset, int count)
 

          分配一个新的 
String
,它包含取自字符数组参数一个子数组的字符。
方法摘要
static String
copyValueOf(char[] data)
 

          返回指定数组中表示该字符序列的 String。
static String
copyValueOf(char[] data, int offset, int count)
 

          返回指定数组中表示该字符序列的 String。count是个数
static String
valueOf(char[] data)
 

          返回 
char
 数组参数的字符串表示形式。
static String
valueOf(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 String
valueOf(boolean b)
 

          返回 
boolean
 参数的字符串表示形式。
static String
valueOf(char c)
 

          返回 
char
 参数的字符串表示形式。
static String
valueOf(double d)
 

          返回 
double
 参数的字符串表示形式。
static String
valueOf(float f)
 

          返回 
float
 参数的字符串表示形式。
static String
valueOf(int i)
 

          返回 
int
 参数的字符串表示形式。
static String
valueOf(long l)
 

          返回 
long
 参数的字符串表示形式。
static String
valueOf(Object obj)
 

          返回 
Object
 参数的字符串表示形式。

2.4 替换

 String
replace(char oldChar, char newChar)
 

          返回一个新的字符串,它是通过用 
newChar
 替换此字符串中出现的所有 
oldChar
 得到的。
 String
replace(CharSequence target, CharSequence replacement)
 

          使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串。

2.5 切割 

 String[]
split(String regex)
 

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

2.6 子串

 String
substring(int beginIndex)
 

          返回一个新的字符串,它是此字符串的一个子字符串。到结尾处
 String
substring(int beginIndex, int endIndex)
 

          返回一个新字符串,它是此字符串的一个子字符串。到endIndex处,包含头不包含尾

2.7 其他

 String
toUpperCase()
 

          使用默认语言环境的规则将此 
String
 中的所有字符都转换为大写。
 String
toLowerCase()
 

          使用默认语言环境的规则将此 
String
 中的所有字符都转换为小写。
 String
trim()
 

          返回字符串的副本,忽略前导空白和尾部空白。去除空格
 int
compareTo(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;
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.特点:

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

1.2 长度是可变化的

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

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

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

2.常见操作

2.1 存储

 StringBuilder
append(boolean b)
 

          将 
boolean
 参数的字符串表示形式追加到序列。
 StringBuilder
append(char c)
 

          将 
char
 参数的字符串表示形式追加到此序列。
 StringBuilder
append(char[] str)
 

          将 
char
 数组参数的字符串表示形式追加到此序列。
 StringBuilder
append(CharSequence s)
 

          向此 Appendable 追加到指定的字符序列。
 StringBuilder
append(double d)
 

          将 
double
 参数的字符串表示形式追加到此序列。
 StringBuilder
append(float f)
 

          将 
float
 参数的字符串表示形式追加到此序列。
 StringBuilder
append(int i)
 

          将 
int
 参数的字符串表示形式追加到此序列。
 StringBuilder
append(long lng)
 

          将 
long
 参数的字符串表示形式追加到此序列。
 StringBuilder
append(Object obj)
 

          追加 
Object
 参数的字符串表示形式。
 StringBuilder
append(String str)
 

          将指定的字符串追加到此字符序列。
 StringBuilder
append(StringBuffer sb)
 

          将指定的 StringBuffer 追加到此序列。
 StringBuilder
insert(int offset, boolean b)
 

          将 
boolean
 参数的字符串表示形式插入此序列中。
 StringBuilder
insert(int offset, char c)
 

          将 
char
 参数的字符串表示形式插入此序列中。
 StringBuilder
insert(int offset, char[] str)
 

          将 
char
 数组参数的字符串表示形式插入此序列中。
StringBuilder
insert(int offset, double d)
 

          将 
double
 参数的字符串表示形式插入此序列中。
 StringBuilder
insert(int offset, float f)
 

          将 
float
 参数的字符串表示形式插入此序列中。
 StringBuilder
insert(int offset, int i)
 

          将 
int
 参数的字符串表示形式插入此序列中。
 StringBuilder
insert(int offset, long l)
 

          将 
long
 参数的字符串表示形式插入此序列中。
 StringBuilder
insert(int offset, Object obj)
 

          将 
Object
 参数的字符串表示形式插入此字符序列中。
 StringBuilder
insert(int offset, String str)
 
          将字符串插入此字符序列中。

2.2 删除

 StringBuilder
delete(int start, int end)
 

          移除此序列的子字符串中的字符。包含start不包含end
 StringBuilder
deleteCharAt(int index)
 

          移除此序列指定位置上的 
char

2.3 获取

 char
charAt(int index)
 

          返回此序列中指定索引处的 
char
 值。
 int
indexOf(String str)
 

          返回第一次出现的指定子字符串在该字符串中的索引。
 int
indexOf(String str, int fromIndex)
 
 int
length()
 

          返回长度(字符数)。
 int
lastIndexOf(String str)
 

          返回最右边出现的指定子字符串在此字符串中的索引。
 int
lastIndexOf(String str, int fromIndex)
 

          返回最后一次出现的指定子字符串在此字符串中的索引。
 String
substring(int start)
 

          返回一个新的 
String
,它包含此字符序列当前所包含字符的子序列。
 String
substring(int start, int end)
 

          返回一个新的 
String
,它包含此序列当前所包含字符的子序列。

2.4 修改

 StringBuilder
replace(int start, int end, String str)
 

          使用给定 
String
 中的字符替换此序列的子字符串中的字符。
 void
setCharAt(int index, char ch)
 

          将给定索引处的字符设置为 
ch

2.5 反转

 StringBuilder
reverse()
 

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

三. StringBuilder类

1.特点

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

1.2 方法与用法与StringBuffer相同

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

1.最常见的应用

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

2.常见操作

字段摘要
static int
MAX_VALUE
 

          值为 231-1 的常量,它表示 
int
 类型能够表示的最大值。
static int
MIN_VALUE
 

          值为 -231 的常量,它表示 
int
 类型能够表示的最小值。
方法摘要
static String
toString(int i)
 

          返回一个表示指定整数的 
String
 对象。每个基本数据类型包装类中都有此方法
static int
parseInt(String s)
 

          将字符串参数作为有符号的十进制整数进行解析。每个基本数据类型包装类中都有类似的此方法。统一格式——基本数据类型.parseXxx(String str)
static int
rotateLeft(int i, int distance)
 

          返回根据指定的位数循环左移指定的 int 值的二进制补码表示形式而得到的值。左移>>
static int
rotateRight(int i, int distance)
 

          返回根据指定的位数循环右移指定的 int 值的二进制补码表示形式而得到的值。右移<<
static String
toBinaryString(int i)
 

          以二进制(基数 2)无符号整数形式返回一个整数参数的字符串表示形式。
static String
toHexString(int i)
 

          以十六进制(基数 16)无符号整数形式返回一个整数参数的字符串表示形式。
static String
toOctalString(int i)
 

          以八进制(基数 8)无符号整数形式返回一个整数参数的字符串表示形式。
static int
parseInt(String s, int radix)
 

          使用第二个参数指定的基数,将字符串参数解析为有符号的整数。其他进制转换为十进制
 boolean
equals(Object obj)
 

          比较此对象与指定对象。复写Object中的equal方法,比较的是整数值
 int
compareTo(Integer anotherInteger)
 

          在数字上比较两个 
Integer
 对象。比较的是自然顺序
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐