android学习札记第5章之字符串处理javaapi2

android项目开发中需要对字符串进行处理的时候是非常多的,JAVA API中字符串处理的类主要有三个,String、StringBuilder、StringBuffer,下面针对这三种做详细的介绍。

工具/原料

JDK、eclipse、android SDK、ADT

一、JAVA API之java.lang.String

字符串的重要特性:不可变(字符属性是私有的,没有修改字符的方法)。

字符串用加号“+”连接,效率低。

如:

String d=a+b+c;:效率低

String e="abc"+"def"+"ghi";:效率高//编译器,将代码直接编译成String e="abcdefghi";

android学习札记第5章之字符串处理javaapi2

创建对象:字符串是内部封装的一个char[]数组,所以有两种方式:

String b="hello";

String a=new String(new char[]{'h','e','l','l','o'});

第一次用到一个字面值时会在“字符串常量池”中创建对象分配内存,之后再一次用到相同的字面值,从“常量池”获取已经存在的对象,而不会新建对象,等号“==”比较的是内存地址。

如:"abc"=="abc"返回true,"abc"==new char[]{'a','b','c'}返回false,如需比较每个字符,就用String类中equals方法比较。

注:

String s1="a";

String s2="b";

System.out.println(s1+s2=="a"+"b");//返回false,因为字符串变量相加不进行优化,内存地址不同。

System.out.println("ab"=="a"+"b");//返回true,因为内存地址相同,直接取常量池里的字符串。

android学习札记第5章之字符串处理javaapi2

String字符串的方法:

charAt(int index):字符串查找1

toUpperCase():新字符串变为大写

toLowerCase():新字符串变为小写

length():字符串长度

compareTo(String anoterString):比较字符串大小,当前字符串大返回正数,否则负数,相同返回0。

startWith(String s):是否以字符串开头

endsWith(String s):是否以字符串结尾

equals(Object o):比较相等

equalsIgnoreCase(Object o):忽略大小写比较相等

indexOf(String s):获得字符串的起始位置

intdexOf(String s,int index):从index开始找,返回s的位置

lastIndexOf(String s):从后往前找字符串,返回位置

replace(char a,char b):把a替换成b

substring(int a):截取从a开始的字符串

substring(int a,int b):截取a到b之间的字符串

trim():去除头尾空格

String.valueOf:将任何类型的数据转为字符串

getByte():把字符串转化为byte数组

android学习札记第5章之字符串处理javaapi2

String练习:

①:从email提取名字部分,判断字符串中是否含有@和点“.”。

②:判断字符串是否是回文。

③:反转字符串。

android学习札记第5章之字符串处理javaapi2

android学习札记第5章之字符串处理javaapi2

android学习札记第5章之字符串处理javaapi2

二、JAVA API之java.lang.StringBuilder和StringBuffer

StringBuilder是可变的字符序列,封装了一个char[]字符数组,提供一组对内部字符修改的方法。

可以代替字符串,做高效率的字符串连接。

StringBuilder sb=new StringBuilder();

sb.append();

android学习札记第5章之字符串处理javaapi2

创建对象:

StringBuilder sb=new StringBuilder();//空串

StringBuilder sb=new StringBuilder("abc");//"abc"

StringBuilder字符串的方法:

append()追加字符串

delect(int start,int end):删除[start,end)范围的字符串

delectCharAt(int index):删除index位置的字符串

insert(int index,子串):从index位置插入子串

replace(int start,int end,String str):将[start,end)范围的字符串替换为str

reverse():反转字符串

setCharAt(int index,char ch):将index位置的字符替换为ch

toString():转化为String格式

android学习札记第5章之字符串处理javaapi2

java.lang.StringBuffer用法和java.lang.StringBuilder类似。

StringBuilder线程不安全,单线程使用StringBuilder;

StrringBuffer线程安全,多线程使用StringBuffer,但在单线程下效率没StringBuilder高,所以单线程用StringBuilder。

android学习札记第5章之字符串处理javaapi2

StringBuilder和StringBuffer练习:

爱好选择:从多个多选框把爱好中选择出来,并显示,若取消了选择,也要从显示的字符串中删除。

android学习札记第5章之字符串处理javaapi2

android学习札记第5章之字符串处理javaapi2

三、作业

让用户输入字符串,去除重复的字符。如:aabbbbccaabbcc->abc。

android学习札记第5章之字符串处理javaapi2

从字符串中找到一个子串出现的所有位置。

如:输入:abc abc abc。再输入查找的子串:bc->输出位置。

android学习札记第5章之字符串处理javaapi2

注意事项

熟记String和其包装类的方法,另外,String不可变,StringBuilder、StringBuffer可变,速度快,StringBuilder适合单线程、StringBuffer适合多线程。

相关文章

  1. android学习札记第7章之异常及IO初步

    工具/原料 JDK.eclipse.android SDK.ADT throws(从管道向外抛出异常) void f() throws Exception{} ①RuntimeException(默认管道,不需要抛出): 在方法上默认存在它的抛出管道. 它和它的子类对象,都可以从它的管道抛出. ②其 ...

  2. android学习札记第3章之面向对象二

    工具/原料 JDK.eclipse.android SDK.ADT this(每个对象中的一个特殊的引用): 保存当前对象的内存地址,用this可以调用当前对象的成员. 如:this.属性.this.方法(). 当前对象:指的是正在调用的对象. 构造方法间的调用: 在一个构造方法中,调用另一个重载的 ...

  3. android学习札记第8章之XML及处理XML解析和创建

    XML是可扩展的标记语言,结构化的数据,由程序解析数据.对于XML的定义,在文档类型定义在一个领域内,由组织.企业.技术领域,指定的XML规范,而这种规范就是DTD. java/android中处理XML解析和创建可以使用三大工具: SAX:Simple API for XML DOM4J:Docu ...

  4. android学习札记第7章之IO流三及XML初步

    上一节介绍了字节流的使用,这一节会继续深入介绍字符流的使用,会涉及到读写过程中的字符编码转换,和对象序列化.当我们正在玩android编写的游戏时,突然来了电话,这时就可能需要对象序列化来保存状态,当继续玩游戏时再恢复数据. 在网络上传输数据用的最多的语言就是XML了,它是结构化语言,语法严格,语义 ...

  5. android学习札记第5章之日期javaapi4及集合初步

    工具/原料 JDK.eclipse.android SDK.ADT ①封装了一个毫秒值(时间戳):从1970-1-1开始.用这个毫秒值来表示一个时间点. ②创建对象: 方法一: Date date=new Date();//表示当前时间 方法二: Date date=new Date(6000000 ...

  6. android学习札记第9章之模拟安卓用户登录模块

    此模拟安卓用户登录模块练习中运用到了面向对象.集合(List.Map).IO(StringReader).XML(Pull解析)知识点. 其中需用到的eclipse快捷键有: Ctrl+O:查找方法 Ctrl+T:类的树状结构 Ctrl+Shift+T:查找类 Alt+Shift+M:提取数据成一个 ...

  7. android学习札记第2章之数组二(Arrays工具类)

    工具/原料 JDK.eclipse.android SDK.ADT 数组的复制: ①Arrays.copyOf(数组,新的长度):将指定的数组,复制成指定长度的新数组. ②System.arraycopy(原数组,原数组起始位置,目标数组,目标数组起始位置,复制的数据个数):可以自身复制. 其他数组 ...

  8. android学习札记第7章之IO流二

    上一节介绍了File类的用法,它可以获取文件对象的信息,这一节将会介绍如何对File对象进行操作,并且深入介绍IO流中几种类的用法,IO流总体包括两大类,字节流和字符流,可以直接接文件的流是FileInputStream/FileOutputStream和ByteArrayInputStream/B ...

  9. android学习札记第2章之数组一(概念)

    这一章数组分为3节用法.工具类.二维数组进行讲解,数组是用来存放一组数据的一个数据结构,它可以创建.访问.遍历,还可以解决一些游戏问题. 工具/原料 JDK.eclipse.android SDK.ADT 一.数组定义 数组的创建: 数组一旦创建,长度是固定不可变的,且类型一致,任何类型都可以创建成 ...