黑马程序员之字符串(String)

------- <a  target="blank">android培训</a>、<a  target="blank">java培训</a>、期待与您交流! ----------

java中用String类进行描述。对字符串进行了对象的封装。这样的好处是可以对字符串这种常见的数据进行方便的操作。对象封装后,可以定义N多属性和行为。
如何定义字符串对象呢?String s="abc";只要是双引号引起的数据都是字符串对象。
特点:字符串一旦被初始化就不可以被改变。存放在方法区中的常量池中。
String s1="abc";//s1指向了内存中只有一个对象abc.
String s2=new String("abc");//s2指向了内存中有两个对象abc、new。
System.out.println(s1==s2);//false
System.out.println(s1.equals(s2));//true,字符串中equals比较的是字符串内容是否相同。

String s1=new String();//创建了一个空内容的字符串。
String s2=null;//s2没有任何对象指向,是一个null常量值。
String s3="";//s3指向了一个具体的字符串对象,只不过这个字符串中没有内容。

一般在定义字符串对象时不用new。
String s4=new String("abc");
String s5="abc";//一般用此写法。

字符串的方法。
一,构造方法:将字节数组或者字符数组转成字符串。
new String(char[]);//将字符数组转成字符串。
new String(char[],offset,count);//将字符数组中的一部分转成字符串。

二,一般方法:按照面向对象思想。
1,获取
length();//获取字符串的长度。
char charAt(int index);//根据位置获取位置上的某个字符。
int indexOf(int ch);//根据字符获取该字符在字符串中的位置。第一次找到的角标。
Int indexOf(int ch,int fromIndex);//返回从指定位置开始第一次找到的角标。
int indexOf(String str);//返回第一次找到的字符串角标。
int indexOf(String str,int fromIndex);
int lastIndexOf(int ch);//获取反向索引一个字符出现的位置。
int lastIndexOf(int ch,int fromIndex);
int lastIndexOf(String str);
int lastIndexOf(String str,int fromIndex);

获取子串。
String subString(int start);//从start位开始到length()-1为止。
String subString(int start,int end);//从start开始,到end为止,包含头不包含尾部。
subString(0,str.length());//获取整串。

2,判断
(1)字符串中是否包含指定的字符串啊。
     boolean contains(str);
     特殊之处:indexOf(str):可以索引str第一次出现的位置。如果返回-1,表示该str不在字符串中存在。所以也可以用于对指定字符串是否包含。
     if(str.indexOf("aa")!=-1)  而且该方法既可以判断,又可以获取出现的位置。
(2)字符串是否以指定的内容开头。
     boolean startsWith(str);
 (3)字符串是否以指定的内容结尾啊
      boolean endsWith(str);
 (4)字符串中是否有内容。
      boolean isEmpty();
 (5)判断字符串内容是否相同。
     boolean equals(str)//覆盖了Object类中的方法,判断字符串内容是否相同。
(6)判断字符串内容是否相同,并忽略大小写。
     bollean equalsIgnoreCase(str);

3,转换
(1)可以通过字符串中的静态方法,将字符数组转成字符串。
    static String copyValueOf(char[]);
    static String copyValueOf(char[],int offset,int count);
    static String ValueOf(char[]);
    static String ValueOf(char[],int offset,int count);
(2)将基本数据类型转成字符串。
    static String valueOf(char);
    static String valueOf(boolean);
    static String valueOf(double);
    static String valueOf(float);
    static String valueOf(int);
    static String valueOf(long);
    static String valueOf(Object);
(3)将字符串转成大小写。
    String toLowerCase();//将字符串转成小写。
    String toUpperCase();//将字符串转成大写。
(4)将字符串转成数组。
    char[] toCharArray();//转成字符数组。
    byte[] getBytes();//转成字节数组。
(5)切割。
   String[] split();//最终返回的还是字符串。
(6) 将字符串内容进行替换。
   String replace(oldChar,newChar);
   String replace(oldString,newString);
(7)去除字符串两端的空格。
   String trim();
   int compareTo();//如果参数字符串等于此字符串,则返回值为0;如果此字符串按照字典顺序小于字符串参数,则返回一个
          小于0的值;如果此字符串按照字典顺序大于字符串参数,则返回一个大于0的值。

字符串缓冲区:StringBuffer
构造一个其中不带字符的字符串缓冲区,初始容量为16个字符。
特点:
1,可以对字符串内容进行修改。
2,是一个容器。
3,是可变长度的。
4,缓冲区中可以存储任意类型的数据。
5,最终都需要变成字符串。

容器中通常具备一些固定的方法。
(1)添加。
StringBuffer append(data);//在缓冲区中添加数据,添加到尾部。
StringBuffer insert(index,data);//在指定位置插入数据。
(2)删除。
StringBuffer delete(start,end);//删除start到end-1范围的元素。
StringBuffer deleteCharAt(index);//删除指定位置的元素。
sb.delete(0,sb.length());//清空缓冲区。
(3)修改
StringBuffer replace(start,end,string;//将start至end-1替换成字符串。
StringBuffer setCharAt(index,char);//替换指定位置的字符。
void setLength(len);//将原字符串置为指定长度的字符串。
(4)查找。
int indexOf(string);//返回指定的字符串在此字符串中第一次出现的索引。
int indexOf(string,int fromIndex);//从指定位置开始查找字符串。
int lastIndexOf(string);//返回指定字符串在看此字符串中最右边出现处的索引。
int lastIndexOf(string,int fromIndex);//从指定的索引开始反向索引。
(5)反转。
StringBuffer reverse();//字符串反转。

StringBuilder:
JDK1.5出现StringBuilder,构造一个其中不带字符的字符串生成器,初始容量为16个字符。该类被设计用作StringBuffer的一个简易替换,用在字符串缓冲区
被单个线程使用的时候,其实这种情况很常见。

StringBuffer和StringBuilder的区别:
StringBuffer线程安全
StringBuilder线程不安全。
单线程操作,使用StringBuilder效率高。
多线程操作,使用StringBuffer安全。

基本数据类型对象包装类:是按照面向对象思想将基本数据类型封装成了对象。
好处:
1,可以通过对象中的属性和行为操作基本数据。
2,可以实现基本数据类型和字符串之间的转换。

关键字  对应的类名
byte    Byte
short   Short 
int     Integer
long    Long
float   Float
double  Double
char    Character
boolean  Boolean

基本数据类型对象包装类:都有XXX parseXXX方法。
只有一个类型没有parse方法:character

Integer对象。
数字格式的字符串转成基本数据类型的方法。
1,将该字符串封装成了Integer对象,并调用对象的方法intValue();
2,使用Integer.parseInt(numstring):不用建立对象,直接类名调用。

将基本数据类型转成字符串的方法。
1,Integer中的静态方法String toString(int);
2,int+"";

将一个十进制转成其他进制。
转成二进制:toBinaryString
转成八进制:toOctalString
转成十六进制:toHexString

其他进制转换成十进制
pareseInt(string,radix);//将给定的数转成指定的基数进制。

在JDK1.5版本以后的,对基本数据类型对象包装类进行升级。在升级中,使用基本数据类型对象包装类可以像使用基本数据类型一样
进行运算。
integer i=new Integer(4)//1.5版本之前的写法。
Integer i=4;//1.5版本之后的写法,自动装箱。
i=i+5;
//对象是不能直接和5相加的,其实底层是先将i转成int类型,在和5相加。而转成Int类型的操作是隐士的。自动拆箱:拆箱的原理就是i.intValue();
i+5运算完是一个int的整数,如何赋值给引用类型i呢?其实有对结果进行装箱。
Integer c=127;
Integer d=127;
//在装箱时,如果数值在byte范围之内,那么数值相同,不会产生新的对象,也就是说多个数值相同的引用指向的是同一个对象。



------- <a  target="blank">android培训</a>、<a  target="blank">java培训</a>、期待与您交流! ----------

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值