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

Java中String类以及相关的类的学习

2015-06-10 17:23 489 查看
——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-

/*

=* 字符串的特点

* 1. 字符串是一个对象

* 2. 字符串是一个常量

* 3. 字符串一旦初始化,就不会被改变

* 4. String类,是一个不可变的对象

*/

//建立了2个对象,一个是new String对象,一个是“abc”对象
String str1 = new String("abc");


String s1 = "你好";
String s2 = "你";
String s3 = "好";
//变量,编译时期,没有值,运行时候,从新开内存空间
System.out.println(s1==(s2+s3));//false
//运算的是常量,固定不变的,编译时期,JVM已经确定了值是什么,运行时期不会开新的内存空间
System.out.println(s1==("你"+"好"));//true


String对象一旦创建就不会被改变

String s1 = "abc";
String s2 = "bcd";
method(s1,s2);
System.out.println(s1);
System.out.println(s2)
//内存区域
public static void method(String s1,String s2){
s1 = s1+=s2;
s2 = s1+=s2;
}`


int[] arr = {1,2,3};
//传递的是一个地址,能够影响到以前的
method(arr);
System.out.println(arr[0]);

public static void method(int[] arr){
arr[0] = 5;
}


//重点掌握,2个构造方法,将字节数组和字符数组变成字符串
public static void method(){
//String str = "abc";
//String(byte[] bytes) 将字节数组变成字符串
byte[] buf = {98,99,100};
String s = new String(buf);
System.out.println(s);
//  字节数组   开始位置  个数
//String(byte[] bytes, int offset, int length)
String s1 = new String(buf,2,1);
System.out.println(s1);

//String(char[] value) 将字符数组变成字符串
char[] ch = {'a','b','c'};
String s2 = new String(ch);
System.out.println(s2);
//   字符数组  开始位置   个数
//String(char[] value, int offset, int count)
String s3 = new String(ch,0,ch.length);
System.out.println(s3)
}


/*

* “” null区别是什么

* “”是一个具体的字符串对象,null是空常量

* “”调用String类中的方法,null是所有引用类型的公共值

*/

String类的方法总结

|– 很重要的,生活中的大部分数据,都是以字符串的形式存在

|– 特点,常量,不可变对象

方法的总结

|– 构造,将字节数组和字符数组转成字符串

|– new String(字节数组)

|– new String(字符数组)

|– 判断,返回的都是布尔类型

|– boolean equals()两个字符串的全等判断,完全一致,返回true,后期比较的常用

|– boolean contains()判断一个字符串是否在另一个字符串中,完全存在,返回true

|– boolean startsWith()判断一个字符串是否以另一个字符串开头

|– boolean endsWith()判断一个字符串是否以另一个字符串结尾

|– boolean isEmpty()如果字符串的长度是0,返回true return str.length()==0

|– 获取

|– char charAt(int index)返回指定索引出的单个字符

|– int indexOf(ch c) 返回指定的字符在字符串中第一次出现的位置

|– int indexOf(String s)返回指定的字符串在字符串中第一次出现的位置

|– int lastIndexOf(ch c)反向索引,获取指定的字符在字符串中最后一次出现的位置

|– int lastIndexOf(String s)反向索引,获取指定的字符串在字符串中最后一次出现的位置

|– String substring(int start,int end)获取字符串中的一部分,包含头,不包含尾,返回新字符串

|– 转换

|– String toUpperCase()字符串转成大写,返回新字符串

|– String toLowerCase()字符串转成小写,返回新字符串

|– char[] toCharArray()将字符串转成字符数组,原始字符串不会变

|– static String valueOf(任意)将任意类型转成字符串

String s = String.valueOf(任意的)

|– 其他

|– int compareTo()按照字典顺序比较两个字符串,前面的大,返回正数,

相等返回0,前面的小,返回负数

|– String[] split(字符串) 对字符串进行切割,返回字符串数组,原始字符串不变

|– String replace(老串,新串)替换字符串,返回新的字符串,原始字符串不变

|– String trim()去掉字符串的两端的空格

StringBuffer字符串操作的缓冲区,提高字符串的操作效率

底层实现是可变的数组结构。默认是16个字符 new StringBuffer()

|– StringBuffer中的常用的方法

|– StringBuffer append(任意类型)将任意类型追加到缓冲区中,结果都是字符串

|– StringBuffer delete(int start,int end)删除缓冲区中的字符,包含头,不包含尾

|– StringBuffer deleteCharAt(int index)删除缓冲区中指定索引上的单个字符

|– StringBuffer insert(int index,任意)将任意类型插入到指定的位置,其他的字符顺延

|– void setCharAt(int index ,char ch)修改指定位置上的单个字符

|– String toString()将缓冲区变成字符串,可以使用String对象中的方法

|– StringBuffer reverse()将缓冲区中的字符进行反转,位置已经发生变化

StringBuffer和StringBuilder

完全一样的方法,但是StringBuffer线程安全,StringBuilder线程不安全,效率高

单线程的程序,推荐使用StringBuilder开始于1.5/

/**
* 编写程序,从键盘接收一个字符串,对字符串中的字母进行大小写互转(大写字母转成小写,小写字母转成大写)
*
* @author zyy
*
*/
public class Test7 {
public static void main(String[] args) {

//获取字符数组
String str = getString();
//数组字母大小写转换
char[] strArray = str.toCharArr);
reserveCase(strArray);
//输出数组
System.out.println(new String(strArray));

}

/**
* 大小写转换,用ASICC来操作,感觉是最简单的,也可以用正则表达式
* @param strArray
*/
private static void reserveCase(char[] strArray) {

int dist = 'a'-'A';
for (int i = 0; i < strArray.length; i++) {
if('a'<=strArray[i]&&strArray[i]<='z'){
//小写转大写
strArray[i] = (char) (strArray[i] - dist);
}else if('A'<=strArray[i]&&strArray[i]<='Z'){
//大写转小写
strArray[i] = (char) (strArray[i] + dist);
}
}
}

/**
* 获取一个字符串
*
* @return 返回字符串
*/
private static String getString() {
return new Scanner(System.in).next();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: