- String
java.lang.String 是字符串类
它的底层就是一个字符数组,所以它的很多特性就是数组的特性
1 字符串一旦创建,这个字符串对象不能更改
2 字符串需要使用 “” 双引号表示
3 为了提高字符串访问效率,提出了一个缓存机制,字符串常量池
因为String一旦创建,字符串对象不可更改,
所以尽量不要使用String进行大量的字符串拼接操作
// 无参构造
String str = new String();
// 通过字符数组构造
char chars[] = {‘a’, ‘b’, ‘c’};
String str2 = new String(chars);
// 通过字节数组构造
byte bytes[] = { 97, 98, 99 };
String str3 = new String(bytes);
1 char charAt(int index) : 获取字符串中某个位置上的字符
2 boolean startsWith(String prefix) : 是否以指定字符串开始
3 boolean equals(Object obj) : 比较两个字符串是否相等
4 byte[] getBytes() : 把字符串转换为字节数组
5 char[] toCharArray() : 把字符串转换为字符数组
6 int indexOf(String str) : 获取字符串中,指定字符串的起始索引,找不到就返回-1
7 int lastIndeOf(String str) : 获取字符串中,指定字符串最后一次出现的索引,找不到返回-1
8 int length() : 返回字符串的长度
9 String replaceAll(String regex, String replacement) : 把指定字符串,用某个字符串替换
10 String[] split(String regex) : 分割字符串,需要指定分隔符,返回字符串数组,支持正则表达式
11 String substring(int beginIndex) : 获取该字符串中,以某个下标为起始的子字符串(包含)
12 String substring(int beginIndex, int endIndex) : 获取该字符串中,以某个下标为起始(包含),到指定位置结束(不包含)
13 String trim() : 去除字符串两边的空格
14 转大写转小写
System.out.println(“asdADnca”.toUpperCase());
15 static String valueOf(Object obj) : 调用指定对象的toString方法,并且使用三目运算符屏蔽了空指针异常
-
StringBuffer和StringBuilder
1 StringBuffer 和 StringBuilder是什么?
是一个可变的字符串缓冲区,适合做拼接操作
底层也是char数组,只不过默认长度是16,而字符串内容多少长度就是多少
2 原理
先定义好长度,以容纳更多字符
如果预留的空间长度不够,会进行自动扩容
默认长度为16,扩大容量为 (当前容量+1) * 2 , 16 -> 34 -> 70
3 StringBuffer 和 StringBuilder 区别
StringBuilder : 非线程安全,在多线程环境下使用,可能出现问题,所以常用于方法中
StringBuffer : 线程安全,在多线程环境下使用,不会出现问题,所以常用于类中 -
包装类
封装了基本数据类型的一些操作,更加方便使用
java中有8中基本数据类型
-
byte java.lang.Byte
-
short java.lang.Short
-
int java.lang.Integer
-
long java.lang.Long
-
float java.lang.Float
-
double java.lang.Double
-
boolean java.lang.Boolean
-
char java.lang.Character
- Integer
- Data类
import java.util.Date;
public class Demo01Date {
public static void main(String[] args) {
// 创建日期对象,把当前的时间
System.out.println(new Date());
// 创建日期对象,把当前的毫秒值转成日期对象
System.out.println(new Date(0L));
}
}