黑马程序员-----String

---------------------- android培训java培训、期待与您交流!

 

下面是我学习String类时的总结:

 

String 类

1,  字符串是一个特殊的对象。

2,  字符串一旦初始化就不可以被改变

 

String str = “abc”;  //str是一个类类型变量,“abc”是一个对象。

String str1 = new String(“abc”);

有什么区别呢?

Str内存中代表一个对象;str1内存中代表两个对象

 打印 str.equals(str1)   true    //String类复写了object中的equals方法。该方法用于判断字符串是否相同

打印 str == str1  false

 

常见的方法:

1,  获取

1.1          字符串的长度

int length():获取长度

1.2          根据位置获取位置上某个字符

char charAt(int index)  //当访问到字符串中不存在的角标时会发生StringIndexOutOfBoundsException

1.3          根据字符获取该字符在字符串的位置

int indexOf(int ch ) 返回的ch在字符串中第一次出现的位置  //如果没有找到,返回-1

int indexOf(int ch,int fromIndex )  从fromIndex指定位置开始,返回的ch出现的位置

int indexOf(String str) 

int indexOf(String str,int fromIndex )

 int lastIndexOf()  反向索引一个字符出现的位置

 

2,  判断

2.1 字符串中是否包含某一个子串。

        boolean contains(str);

        特殊之处:indexOf(str): 可以索引str第一次出现的位置,如果返回-1,表示该str不再字符串中存在。所以,也可以对指定判断是否包含

2.2 字符串中是否有内容

        boolean isEmpty(); //判断长度是否为0.

2.3 字符串是否是以指定内容开始

        boolean startWith(str);

2.4 字符串是否是以指定内容结尾

       boolean endsWith(str);

2.5 判断字符串内容是否相同  复写了object类中的equals方法

        boolean equals(str);

2.6 判断内容是否相同,并忽略大小写。

        boolean equalsIgnoreCase();

 

3,转换

       3.1 将字符数组转成字符串

              构造函数String(char[])

                            String(char[],offset,count):将字符数组中的一部分转成字符串

              静态方法 static String copyValueOf(char[]);

                             static String copyValueOf(char[],offset,count);

                                  

                             static String valueOf(char[])

 

       3.2 将字符串转成字符数组

              char[] toCharArray();

       3.3 将字节数组转成字符串

              构造函数String(byte[])

                            String(byte[],offset,length):将字节数组中的一部分转成字符串

 

       3.4 将字符串转成字节数组

              byte[] getBytes();

       3,5 将基本数据类型转成字符串

              Static String valueOf(int )

              Static String valueOf(double )    3+””;//String.valueOf(3);

 

              特殊:字符串和字节数组在转换过程中,是可以指定编码表的

4   替换

String replace(oldchar,newchar);  //如果要替换的字符不存在,返回的还是原串

 

5  切割

String[] split(regex);

 

6    取子串。(获取字符串中的一部分)

String substring(begin); 从指定位置开始到结尾。如果角标不存在,会出现字符串角标越界异常

String substring(begin,end); 包含头,不包含尾

 

7    转换 去除空格 比较

7.1    将字符串转成大写或小写
String toUpperCase()

String toLowerCase();

7.2    将字符串两端的多个空格去除

String trim();

7.3    对两个字符串进行自然顺序的比较

int compareTo(Sring) // 正数、负数、0

 

StringBuffer  字符串缓冲区

1,  字符串的组成原理就是通过该类实现的。

2,  StringBuffer可以对字符串的内容进行增删

3,  StringBuffer是一个容器

4,  很多方法和String相同

5,  StringBuffer是可变长度的

 特点:1,长度是可变的

             2,可以一次操作多个数据类型

             3,最终会通过toString方法变成字符串

 

常用方法: 

1,  存储

StringBuffer append():将指定数据作为参数添加到已有数据结尾处。

StringBuffer insert(offset,数据):可以将数据插入到指定index位置

2,  删除

StringBuffer delete(start,end)  删除缓冲区的数据,包含start,不包含end

StringBuffer deleteCharAt(index)  删除指定位置的字符

             

3,  获取

char charAt(int index)

int indexOf(String str)

int lastIndexOf()

int length();

String substring(begin,end);

4,  修改

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

 void setCharAt(int index, char ch)

5,  反转。

 StringBuffer reverse()

6, 获取字符数组

void getChars(int srcBegin, int srcEnd, char[] dst,  int dstBegin)

将缓冲区指定数据存储到指定数组中

 

在JDK1.5版本后出现了StringBuilder

StringBuffer 是线程同步    (多线程使用)

StringBuilder 是线程不同步  (单线程使用)

 

以后开发建议使用StringBuilder

 

java升级三因素:

1,  提高效率

2,  简化书写

3,  提高安全性

 

基本数据类型对象包装类

 byte     Byte

short    short

int      Integer

long     Long

boolean  Boolean

float     Float

double   Double

char     Character

最常见作用:

就是用于基本数据类型和字符串类型之间做转换

 

基本数据类型转成字符串

       1,基本数据类型+“”

       2,基本数据类型.toString(基本数据类型值) 如:Integer.toString(34);//将34整数编程“34”。

 字符串转成基本数据类型

如:int a = Integer.parseInt(“123”);  //必须传入数字格式的字符串  ,可能会抛出NumberFormatException

        boolean b = Boolean.parseBoolean(“true”);

 

Integer I = new Integer(“123”);

int num = i.intValue();

 

 十进制转成其他进制。

        toBinaryString();

        toHexString();

        toOctalString();

其他进制转换成十进制

        parseInt(String,radix)

        如:Integer.parseInt(“3c”,16)

 

Jdk1.5版本以后出现的新特性:

 如:

Integer x = new Integer(4); 

Integer x = 4;        //自动装箱。 new Integer(4)

x = x + 2; // x进行自动拆箱。变成了int类型。和2进行加法运算。再将和进行装箱赋给x.

x相当于 x.intValue()

             

Integer m = 128;

Integer n = 128;

打印("m==n:"+(m==n));  //结果是false           

 Integer a = 127;

 Integer b= 127;

打印("m==n"+(a==b));  //结果为true.因为a和b指向了同一个Integer对象。因为当数值在byte范围内容,对于新特性,如果该数值已经存在,则不会开辟新空间

 

 

 

 

 -------------------------------------------- android培训java培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net/heima

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值