String类:public final class String
extends Object
implements Serializable, Comparable<String>, CharSequence
是一个final类,意思就是最终的不可变的类。不可以有其他类来继承
一.String类创建对象:
1.字面量形式:
String str = “abc”;一个字符串对象
2.用new关键字来创建
String str = new String(“abc”);有两个字符串对象:一个是str,二是“abc”;推荐用字面量的形式来定义。
二.字符串的比较
String str1 = “abc”;
String str2 = new String(“abc”);
String str 3= “abc”;
System.out.println(str1==str2); false;
System.out.println(str1==str3); true
System.out.println(str1.equals(str2)); true
System.out.println(str1.equals(str3)); true
第一个比较为两个不同字符串对象,所以是false;
第二个比较,因为两种方式都是字面量的形式,会把申明的字符放在常量池中,在str3被创建的时候发现在常量池中已经存在了所以就不会再创建,str3指向的还是str1的字符串。所以就会相等.
第三种比较为equals比较,因为String类重写了Object的equals方法。equals比较的是内容是否相同,因为两个字符串都是”abc”所以都为true.
第四种同上。
三.String和StringBuffer
1.当创建String对象之后,字符串就不可以改变,如果需要改变它的指,就会重新创建新的字符串对象。所以当改变字符串对象会消耗很多资源。
String str=”abc”;
Str = str+”efg”; 这种方式会重新创建一个对象指向“abcefg”
2.StringBuffer类
StringBuffer()
构造一个其中不带字符的字符串缓冲区,初始容量为 16 个字符。
StringBuffer(CharSequence seq)
public java.lang.StringBuilder(CharSequence seq) 构造一个字符串缓冲区,它包含与指定的 CharSequence 相同的字符。
StringBuffer(int capacity)
构造一个不带字符,但具有指定初始容量的字符串缓冲区。
StringBuffer(String str)
构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。
有四个构造方法。重用的创建对象如下:
StringBuffer sb1 = new StringBuffer(); //构造一个其中不带字符的字符串缓冲区,初始容量为 16 个字符。
StringBuffer sb3= new StringBuffer(20); //构造一个具有20个字符串的缓冲区
StringBuffer sb4 = new StringBuffer(“abc”); //构造一个字符串缓冲区,并初始化制定的字符串内容
Stringbuffer特性:它与String最大的特点是可以通过一系列方法来在字符串后面来添加新的字符串。而不会去另外创建新的对象。如下:
StringBuffer sb = new StringBuffer();
Sb.append(“abc”);
自定义去除两端空格方法
作为java程序员对于String的操作必须非常之熟悉
String 常用方法。
1. charAt(int index)
返回指定索引处的 char 值。索引范围为从 0 到 length() - 1。序列的第一个 char 值位于索引 0 处,第二个位于索引 1 处,依此类推,这类似于数组索引。
参数:index指定的位置
如:”abcdefg”.charAt(3);
返回:d
2. compareTo(String anotherString)
如果参数字符串等于此字符串,则返回 0 值;如果按字典顺序此字符串小于字符串参数,则返回一个小于 0 的值;如果按字典顺序此字符串大于字符串参数,则返回一个大于 0 的值。
参数:要比较的字符串:
如:”abcdef”.compareTo(“abcdef”);
返回:0
3. equals(Object anObject)
将此字符串与指定的对象比较。当且仅当该参数不为 null,并且是与此对象表示相同字符序列的 String 对象时,结果才为 true。
参数:与此 String 进行比较的对象。
如:”abc”.equals(“abc”);
返回:true
4. substring(int beginIndex)
返回一个新的字符串,它是此字符串的一个子字符串。该子字符串从指定索引处的字符开始,直到此字符串末尾。
如:"unhappy".substring(2)
返回: happy
实例:自定义反转类型
基本思路:
[img]http://dl.iteye.com/upload/attachment/0071/1524/239a4600-0816-37bd-a7e7-e9b3b1e9c5b1.jpg[/img]
代码如下:
extends Object
implements Serializable, Comparable<String>, CharSequence
是一个final类,意思就是最终的不可变的类。不可以有其他类来继承
一.String类创建对象:
1.字面量形式:
String str = “abc”;一个字符串对象
2.用new关键字来创建
String str = new String(“abc”);有两个字符串对象:一个是str,二是“abc”;推荐用字面量的形式来定义。
二.字符串的比较
String str1 = “abc”;
String str2 = new String(“abc”);
String str 3= “abc”;
System.out.println(str1==str2); false;
System.out.println(str1==str3); true
System.out.println(str1.equals(str2)); true
System.out.println(str1.equals(str3)); true
第一个比较为两个不同字符串对象,所以是false;
第二个比较,因为两种方式都是字面量的形式,会把申明的字符放在常量池中,在str3被创建的时候发现在常量池中已经存在了所以就不会再创建,str3指向的还是str1的字符串。所以就会相等.
第三种比较为equals比较,因为String类重写了Object的equals方法。equals比较的是内容是否相同,因为两个字符串都是”abc”所以都为true.
第四种同上。
三.String和StringBuffer
1.当创建String对象之后,字符串就不可以改变,如果需要改变它的指,就会重新创建新的字符串对象。所以当改变字符串对象会消耗很多资源。
String str=”abc”;
Str = str+”efg”; 这种方式会重新创建一个对象指向“abcefg”
2.StringBuffer类
StringBuffer()
构造一个其中不带字符的字符串缓冲区,初始容量为 16 个字符。
StringBuffer(CharSequence seq)
public java.lang.StringBuilder(CharSequence seq) 构造一个字符串缓冲区,它包含与指定的 CharSequence 相同的字符。
StringBuffer(int capacity)
构造一个不带字符,但具有指定初始容量的字符串缓冲区。
StringBuffer(String str)
构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。
有四个构造方法。重用的创建对象如下:
StringBuffer sb1 = new StringBuffer(); //构造一个其中不带字符的字符串缓冲区,初始容量为 16 个字符。
StringBuffer sb3= new StringBuffer(20); //构造一个具有20个字符串的缓冲区
StringBuffer sb4 = new StringBuffer(“abc”); //构造一个字符串缓冲区,并初始化制定的字符串内容
Stringbuffer特性:它与String最大的特点是可以通过一系列方法来在字符串后面来添加新的字符串。而不会去另外创建新的对象。如下:
StringBuffer sb = new StringBuffer();
Sb.append(“abc”);
自定义去除两端空格方法
作为java程序员对于String的操作必须非常之熟悉
String 常用方法。
1. charAt(int index)
返回指定索引处的 char 值。索引范围为从 0 到 length() - 1。序列的第一个 char 值位于索引 0 处,第二个位于索引 1 处,依此类推,这类似于数组索引。
参数:index指定的位置
如:”abcdefg”.charAt(3);
返回:d
2. compareTo(String anotherString)
如果参数字符串等于此字符串,则返回 0 值;如果按字典顺序此字符串小于字符串参数,则返回一个小于 0 的值;如果按字典顺序此字符串大于字符串参数,则返回一个大于 0 的值。
参数:要比较的字符串:
如:”abcdef”.compareTo(“abcdef”);
返回:0
3. equals(Object anObject)
将此字符串与指定的对象比较。当且仅当该参数不为 null,并且是与此对象表示相同字符序列的 String 对象时,结果才为 true。
参数:与此 String 进行比较的对象。
如:”abc”.equals(“abc”);
返回:true
4. substring(int beginIndex)
返回一个新的字符串,它是此字符串的一个子字符串。该子字符串从指定索引处的字符开始,直到此字符串末尾。
如:"unhappy".substring(2)
返回: happy
实例:自定义反转类型
基本思路:
[img]http://dl.iteye.com/upload/attachment/0071/1524/239a4600-0816-37bd-a7e7-e9b3b1e9c5b1.jpg[/img]
代码如下:
package com.itheima.stringdemo;
/**
* 自定义去除字符串两端空格
* @author Administrator
*
*/
public class StringTrim {
public static void main(String[] args) {
String str= " abc df ";
System.out.println(str.substring(4,11)+"------------");
System.out.println("("+str+")");
str = myTrim(str);
System.out.println("("+str+")");
}
/**
* 去除字符串两端字符串
* @param str
* @return
*/
public static String myTrim(String str){
int start=0;
int end = str.length()-1;
while(start<=end&&str.charAt(start)==' '){
start++;
}
while(end>=start&&str.charAt(end)==' '){
end--;
}
return str.substring(start,end+1); //包括头不包括尾部
}
}