黑马程序员—12—java基础:有关字符串的学习笔记和学习心得体会

来源:互联网 发布:fasttext python 编辑:程序博客网 时间:2024/06/08 01:57

 ------- <a href="http://www.itheima.com" target="blank">android培训</a><a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------

1. String 类:

字符串是一个特殊的对象,字符串一旦初始化就不可以被改变。

如:String s1 = abc ;s1是一个类类型变量,abc一个对象。S1=kkabc没有改变,s1原先指向abc,现在指向kks1的地址改变。

String s1 = abc ;String s2 = new String(abc);s1s2有什么区别?

S1在内存中一个对象,s2在内存中有两个对象:new一个对象,abc一个对象。

System.out.println(s1.equals(s2))String类复写了Object类中equals方法,该方法用于判断字符串是否相同。

2. String类适用于描述字符串事物,那么它就提供了多个方法对字符串进行操作。

常见的操作有?

1. 获取:

1.1字符串中包含的字符数,也就是字符串的长度,int length():获取长度。

1.2根据位置获取位置上某个字符。char charAt(int index):

1.3根据字符获取字符在字符串中位置:int indexofint ch):返回是ch在字符串中第一次出现的位置。

int indexofint ch, int fromIndex):从fromIndex指定位置开始,获取ch在字符串中出现的位置

int indexofString str):返回是str在字符串中第一次出现的位置。

int indexofString str, int fromIndex):从fromIndex指定位置开始,获取str在字符串中出现的位置

2. 判断

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

boolean contains(str) 

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

If(str.indexof(aa)!=-1)

2.2字符串中是否有内容。

boolean isEmpty():原理就是判断长度是否为

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

boolean startsWith(str)

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

boolean endsWith(str)

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

Boolean equals(str);

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

Boolean equalsIgnoreCasestr);

例子

class StringMethodDemo 

{

public static void method_is()

{

String str = "ArrayDemo.java";

//判断文件名称是否是Array单词开头。

sop(str.startsWith("Array"));

//判断文件名称是否是.java的文件

sop(str.endsWith(".java"));

//判断文件中是否包含Demo

sop(str.contains("Demo"));

}

public static void method_get()

{

String str ="abcdef";

//长度

sop(str.length);

//根据索引获取字符

sop(str.charAt(4));//当访问到字符串中不存在的角标时会发生StringIndexOutofBoundsException

//根据字符获取索引

sop(str.indexof('a'),3);//如果没有找到,返回-1

//反向索引一个字符出现位置。

sop(str.lastIndexof('a'));

}

public static void main(String[] args) 

{

method_get();

method_is();

}

public static void sop(Object obj)

{

System.out.println(obj);

}

}

3.转换:

3.1讲字符数组转成字符串。

构造函数:String(char[])

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

静态方法:

   Static String copyValueof(char[]);

   Static String copyValueof(char[] data, int offset. Int count)

3.2将字符串转成字符数组

Char[] toCharArray();

3.3将字节数组转成字符串

String (byte[])

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

3.4将字符串转成字节数组

byte[] getSytes():

3.5将基本数据类型转换成字符串:

Static String valueof(int)

Static String valueof(double)

//3+””;   String.valueof(3);

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

例子:

public static void method_trans()

{

char[] arr = {'a','b','c','d','e','f'};

String s= new String(arr,1,3);//arr数组第一个坐标打印3个字符

sop("s="+s);

String s1 = "zhisohfd";

char[] chs = s1.toCharArray();

for(int x=0;x<chs.length;x++)

{

sop("ch"+chs[x]);

}

}

4.  替换:

String replace(oldchar ,newchar),

5. 切割:

String[] split(regex);//regex是以什么为切割点

6. 子串:

获取字符串中的一部分

String substring(begin)

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

7. 转换,去除空格,比较

7.1 将字符串转换成大写或小写

String toUpperCase();

String toLowerCase();

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

String trim()

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

Int compareTo(string)

8. StringBuffer是字符串缓冲区,是一个容器。

   特点:长度是可变化的,可以字节操作多个数据类型,最总会通过toString方法变成字 

    符串。

1.存储

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

StringBuffer  insertindex,数据):可以将数据插入到指定index位置,即在原来字符串的index位置开始插入字符串 

2.删除

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

StringBuffer deleteindex):删除指定位置的字符

例子:清空缓冲区 sb.delete(0,sb.length());

3.获取

4.修改

StringBuffer replace(start ,end,string);

Void setCharAt(int index,char ch)

5.反转

StringBuffer reverse()

9. Jdk1.5版本之后出现了StringBuilder

StringBuffer是线程同步

StringBuilder是线程不同步,以后程序开发建议使用StringBuilder

10. 基本数据类型对象包装类:

类型          类

byte  Byte

short  Short

int  Integer

char  Character

。。。。。。。。。。。。。。。。。。。。。

基本数据类型对象包装类的最常见作用

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

基本数据类型转换成字符串

    基本数据类型+””

基本数据类型.toString(基本数据类型值)

如:Integer.toString(34)//34整数变成34

字符串转成基本数据类型

基本数据类型 a = ****.parse****(String)

 int a = Integer.parseInt(123)

 double b = Double.parseDouble(12.23)

十进制转换成其他进制

toBinaryString()

toHexString()

toOctalString()

其他进制转成十进制

parseIntStringradix);

11. Jdk1.5之后新特性:

如:Integer x = 4//自动装箱,4相当于new Integer4

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

Integer m =128

Integer n =128

Sopm==n+(m==n);

Integer a=127

Integer b =127

Sopa==b+(a==b);//结果为true,因为ab指向了同一个Integer对象

//因为当数值在byte范围内时,对于新特性,如果该数值已经存           //在,则不会再开辟新的空间。

12.  学习心得体会

掌握字符串 的基本操作:增,删,改,查,

同时熟悉字符串通其它类型之间的转换。

熟悉jdk1.5之后的新特性:

        Jdk1.5版本之后出现了StringBuilder

StringBuffer是线程同步

StringBuilder是线程不同步,以后程序开发建议使用StringBuilder

自动装箱和自动拆箱

Integer x = 4//自动装箱,4相当于new Integer4

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

 

 ------- <a href="http://www.itheima.com" target="blank">android培训</a><a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------

0 0