您的位置:首页 > 编程语言 > Java开发

JAVA基础之集合(上)

2015-07-23 13:34 453 查看
常用对象:String、StringBuffer、StringBuilder
String类的特点:字符串对象一旦被初始化就不会被改变;
1.字符串创建的时候,会先在常量池中搜索,如果有一样的,则指向已经存在的字符串对象,此时用"=="比较两个字符串的值返回的将会是true。(注意:new是在堆内存中创建的,不一样)
2.String类的构造函数:String(bytes[]bytes);
例子1:
String s= new String();//等效于String s=" ";不等效于String
s==null;
byte[] arr={65,66,67,68};
String s1=new String(arr);
System.out.println(s1);//输出的将是ABCD;
例子2:
char[]arr={"w","a","e","c"};
String s=new String(arr);

System.out.println(s);//输出的将是waec;
3.String类的部分方法
(1)获取长度:intlength();
根据位置获取字符:charcharAt(int index);
根据字符获取字符在字符串中的位置:intindexOf(int ch);
从指定位置开始查找ch第一次出现的位置:
int indexOf(int ch;fromIndex);
int indexOf(String str);
int indexOf(String str,int fromIndex);
根据字符串获取字符串第一次出现的位置:
intlastIndexOf(int ch);
int lastIndexOf(int ch,int fromIndex);
可以利用-1来判断该元素是否存在。
获取字符串中的一部分字符串,也叫子串。
Stringsubstring(int beginIndex,intendIndex);
String substring(int beginIndex);
(2)转换
将字符串变成字符串数组(字符串的切割)
String[]split(String regex);涉及到正则表达式。
将字符串变成字符数组
char[]toCharArray();
将字符串变成字节数组
char[]getBytes();
例子: String s = "ab你"
;
byte [] bytes = s.getBytes();
for (int i = 0; i < bytes.length; i++){
System.out.println(bytes[i]);//输出的结果是97,98,-60,-29
将字符串中的字母转成大小写
String toUpperCase();大写
StringtoLowerCase();小写
将字符串中的内容进行替换
String replace(char oldCh,char newCh);
String replace(String s1,String s2);
去除字符串两端空格
String trim();
将字符串进行连接
String concat(String str);
将数值转成字符串用valueOf;
String.value(4);
(3)判断
两个字符串内容是否相同呢?
boolean equals(Object obj);
boolean equalsIgnoreCase(String str);忽略大小写比较字符串内容
字符串中是否包含指定字符串
booleancontains(String str);
字符串是否以指定字符串开头,是否以指定字符串结尾
boolean startsWith(String str);
boolean endsWith(String str);
(4)比较,String自带比较功能,要与equals区分开;compareTo是比较大小,有三个返回情况,它一般用于自定义排序;equals是比较是否相等,返回true或false。
int compareTo(String str); 如果参数字符串等于此字符串,则返回值0;如果此字符串按字典顺序小于字符串参数,则返回一个小于0的值;如果此字符串按字典顺序大于字符串参数,则返回一个大于0的值。
(5)返回字符串对象的规范化表示形式
String intern();
当调用intern方法时,如果池已经包含一个等于此String对象的字符串(用equals(Object)方法确定),则返回池中的字符串。否则,将此String对象添加到池中,并返回此String对象的引用。

练习:

1、给定一个字符串数组,按照字典顺序进行从小到大的排序。

{"nba","abc","cba","zz","qq","haha"}

package Array;

public class StringTest {

/**给定一个字符串数组,按照字典顺序进行从小到大的排序。

{"nba","abc","cba","zz","qq","haha"}

* @param args

*/

publicstatic void main(String[] args) {

//TODO Auto-generated method stub

//思路:给定一个字符串,利用compareTo进行每个元素的比较,利用冒泡进行整体排序;

//利用for循环

String[]str={"nba","abc","cba","zz","qq","haha"};

// printString(str);

String[]arr=sortString(str);

printString(arr);

}

publicstatic String[] sortString(String[] str)//对字符串数组进行排序

{

for(intx=str.length-1;x>0;x--)//采用冒泡的方式排序

{

for(int y=0;y<x;y++)

{

if(str[y].compareTo(str[y+1])>0)//如果前一个大于后一个,调换位子

{

Stringtemp=str[y];

str[y]=str[y+1];

str[y+1]=temp;

}

}

}

return str;

}

publicstatic void printString(String[] str)//打印字符数组

{

System.out.print("[");

for(intx=0;x<str.length;x++)

{

if(x!=str.length-1)

System.out.print(str[x]+" ");

else

System.out.print(str[x]+"]");

}

}
}

StringBuffer:字符串缓冲区,它的初始容量为16个字符,是一个容器对象;多用于将字符数组连接成字符串;
特点:1.长度是可变的。
2.可以存储不同类型数据。
3.最终要转成字符串进行使用。
功能:1.添加:StringBufferappend(data);
StringBuffer insert(index,data);
2.删除:StringBuffer delete(int start,int end);包含头,不包含尾。
StringBuffer deleteCharAt(int index):删除指定位置的元素
3.查找
charcharAt(int index);
intindexOf(String str);
int lastIndexOf(String str);
4.修改
StringBufferreplace(int start,int end,String str);
void setCharAt(int index,char ch);
5.其他方法
void setLength(int newLength);设置字符序列的长度
public StringBuffer reverse();将字符序列用其反转形式取代
StringBuilder:与StringBuffer的功能一模一样,是jdk1.5之后出现的;
它们两者之间的区别是:
StringBuffer是线程同步的,通常用于多线程。
StringBuilder是线程不同步的,通常用于单线程,它的出现能够提高程序效率。
基本数据类型对象包装类:就是把基本数据类型包装成了对象;
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean
该包装对象主要用于基本类型和字符串之间的转换:
(1) 将基本类型转成字符串有以下两种方法:
a.基本类型数值+" ";
b.用String类中的静态方法valueOf;
(2)将字符串转成基本类型
a.int parseInt(String str);//易错点:这个方法是Integer的静态的方法,引用时应该是Integer.parseInt(str)
b.long parseLong(String str);
c.boolean parseBoolean(String str);
只有Character没有parse方法。
注:如果字符串被Integer进行对象的封装,可使用另一个非静态的方法,intValue。
将一个Integer对象转成基本数据类型值,或者用Integer的静态方法valueOf(String
s);
视频中的一个例子可以很好的这些方法的运用:
public class WrapperTest {

/*对一个字符串中的数值进行从小到大的排序。

"20 78 9 -7 88 36 29"

思路:1.想将字符串变成字符串数组,用spilt;

2.将字符串数组变成int类型数组,parseInt

3.用系统自带功能进行排序,sort

4.将排完序的数组重新变成字符串形式,用StringBuilder

* */

public static void main(String[] args)

{

String numStr = "20 79 9 -7 88 36 29";

String Str=sortStringNumber(numStr);

System.out.println(Str);

}

public static String sortStringNumber(String numStr) {

// TODO Auto-generated method stub

//1.现将字符串变成字符串数组

String[] str=numStr.split(" ");

//2.将字符串数组变成int数组

int[] str2=toIntArray(str);

//3.用自带的功能进行排序

Mysort(str2);

//4.将数组重新变成字符串形式

String s=ArraytoString(str2);

return s;

}

public static String ArraytoString(int[] str2) {

// TODO Auto-generated method stub

StringBuilder sb=new StringBuilder();

for(int i=0;i<str2.length;i++)

{

sb.append(str2[i]).append(" ");

}

return sb.toString();

}

private static void Mysort(int[] str) {

// TODO Auto-generated method stub

Arrays.sort(str);

}

public static int[] toIntArray(String[] str) {

// TODO Auto-generated method stub

int[] arr=new int[str.length];

for(int i=0;i<str.length;i++)

{

arr[i]=Integer.parseInt(str[i]);//parseInt是Integer的静态方法!!!

}

return arr;

}

}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: