1、String类
-----String类描述的是文本字符串序列,用于操作和创建字符串。
-----创建String类的对象的两种方式: ①""直接赋值法 ②new关键字法
-----字符串对象的比较:
A. String str1= "found"这个语句会先检查字符串常量池中是否存放有"found"这个字符串对象,如果没有存在,那么就会在字符串常量池中创建这个字符串对象,如果存在则直接返回该字符串的内存地址值。
B. String str3 = new String("found")该语句会创建两个对象。首先会检查字符串常量池中是否存在found这个字符串对象,如果不存在就会创建,如果存在就返回内存地址值,创建出来后,new String这个语句就会在堆内存中开辟一个字符串对象。总共两个对象。
C.为什么str1 == str2 →true,str3 == str4 → false?
①比较两个String不应该用==,第二种情况str3 == str4使用str3.equals(str4)就是true了。
②在java里物体的名字相等于一个标签。当你做第一种时,"found"被创造出来,并打上了一个str1的标签,然后同一个物体又被打上了str2这个标签,但本质上是同一个物体,所以str1 == str2 →true。
③第二种,str4是一个新的Object,存储位置和str3不一样,str3和str4指向了不同的对象。所以str3 == str4 → false。
-----获取字符方法:
int length() 获取字符串的长度
char charAt(int index) 获取特定位置的字符 (角标越界)
int indexOf(String str) 获取特定字符的位置(overload)
int lastIndexOf(int ch) l获取最后一个字符的位置
-----判断方法:
-----转换方法:
-----其他方法:
String replace(char oldChar, char newChar) 替换
String[] split(String regex) 切割
String substring(int beginIndex)
String substring(int beginIndex, int endIndex)截取字串
String toUpperCase() 转大写
String toLowerCase() 转小写
String trim() 去除空格
-----练习:
① 去除字符串两边空格的函数。
补:String自带的去除两边空格函数trim()源代码
②获取上传文件名 "D:\20120512\day12\Demo1.java"。
③将字符串对象中存储的字符反序。
④求一个子串在整串中出现的次数
2、StringBuffer
-----由于String是不可变的,所以导致String对象泛滥,在频繁改变字符串对象的应用中,需要使用可变的字符串缓冲区类。
-----特点:①默认缓冲区的容量是16;②线程安全的所有的缓冲区操作方法都是同步的,效率低。
①添加方法
StringBuffer("jack") 在创建对象的时候赋值
append() 在缓冲区的尾部添加新的文本对象
insert() 在指定的下标位置添加新的文本对象
②查看
toString() 返回这个容器的字符串
indexOf(String str) 返回第一次出现的指定子字符串在该字符串中的索引。
substring(int start) 从开始的位置开始截取字符串
③修改
④删除
⑤反序
3、StringBuilder
StringBuilder 是JDK1.5之后提出的,线程不安全,但是效率要高。用法与StringBuffer类似。
===StringBuffr与StringBuilder的区别?
StringBuffer和StringBuilder类都表示内容可以被修改的字符串,StringBuilder是线程不安全的,运行效率高,如果一个字符串变量是在方法里定义,这种情况下只可能有一个线程访问它,不存在不安全的因素,则用StringBuilder。如果在一个类里面定义成员变量,并且这个类的实例对象会在多线程环境下使用,用StringBuffer。
4、System
5、Runtime
6、Date
7、Math
练习:生成一个校验码
(参考自今日头条小小爆酱)