1.String
1.1概述
java.lang.String:是字符串 底层就是一个final修饰的char数组,所以String很多特性就是数组的特性
比如一旦确定,长度不能更改
1.字符串一旦创建,这个字符串对象不能再更改
2为了提升字符串的访问和存储效率,java虚拟机采用了一种缓存机制,把字符串都保存在了字符串常量池中
3在程序执行过程中,假如要用到一个字符串a String s1 = ‘‘a’’;先去字符串常量池中检索,是否有a,如果没有就创建一份
假如有了 String s2 = “a”;就不再创建,把已有的这个a返回
所以导致 String s1 = “a” String = “a” 此时使用s1 == s2 他也是因为他们指向同一个字符串对象 就是 a
1.2基本使用
1.3不要频繁拼接
1.4构造方法
1.5常用方法
// 1 char charAt (int index ) : 返回该字符串中,指定位置的字符
String s1 = "qwehihasd";
char c1 = s1.charAt(2);
// e
System.out.println(c1);
// 2 boolean endsWith(String suffix) : 判断该字符串是否以指定字符串结尾
// boolean startsWith(String prefix) : 同上,判断开始
System.out.println("Hello.java".endsWith(".java"));
// 注意空格 , 有空格就匹配不上了
System.out.println("Hello.java".endsWith(".java "));
// 3 boolean equalsIgnoreCase(String str) : 不区分大小写比较两个字符串是否相等
System.out.println("abc".equalsIgnoreCase("aBc"));
// 4 byte[] getBytes() : 把字符串转换为字节数组并返回
byte[] bytes = "abc".getBytes();
for (int i = 0; i < bytes.length; i++) {
System.out.println(bytes[i]);
}
// 5 char[] toCharArray() : 把字符串转换为字符数组并返回
char[] chars = "abc".toCharArray();
for (int i = 0; i < chars.length; i++) {
System.out.println(chars[i]);
}
// 6 int indexOf(String str) : 获取该字符串中指定字符串的起始索引,找不到返回-1
System.out.println("askdhqwbe".indexOf("kd")); // 2
System.out.println("askdhqwbe".indexOf("kda")); // -1
// 7 int indexOf(String str,int index) :
// 从指定位置开始查找(包含),获取该字符串中指定字符串的起始索引,找不到返回-1
System.out.println("askdhaqwbe".indexOf("a", 5)); // -1
// 8 index lastIndexOf(String str) : 同上,最后一次出现的索引 找不到返回-1
System.out.println("askdhaqwbe".lastIndexOf("a")); // 5
// 9 int length() : 返回该字符串的长度
System.out.println("abc".length());
// 10 String replaceAll(String regex . String replacement);
// 替换指定字符,支持正则表达式
// String replace (String str . String replacement); 不支持正则表达式
// 用1 把 a 替换了并返回新的字符串
// 支持正则表达式,但是没有写正则表达式 是没有区别的
System.out.println("hucgasdqweasd".replaceAll("a", "1"));
System.out.println("hucgasdqweasd".replace("a", "1"));
// 因为 . 在正则表达式中,代表任意字符
System.out.println("qwe.rty.yui.uio".replaceAll(".", ","));
// 可以使用 \ 转义
System.out.println("qwe.rty.yui.uio".replaceAll("\\.", ","));
System.out.println("qwe.rty.yui.uio".replace(".", ","));
// 11 String[] split(String regex) : 分割字符串,返回字符串数组,支持正则表达式,注意 .....
// 点,需要转义
String s2 = "2022.1.14";
String[] arr = s2.split("\\.");
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
// 12 String substring(int begin);获取该字符串中,以某个下标起始的子字符串(包含)
System.out.println("abcdef".substring(2));// cdef
// 13 String substring(int begin, int end) :
// 获取该字符串中,以某个下标起始(包含)到某个下标结束的子字符串(不包含)
System.out.println("abcdef".substring(2, 4));// cd
// 14 String trim() : 去除字符串两边的空格
System.out
.println(" a d sadasd ");
System.out
.println(" a d sadasd "
.trim());
// 15 String toUpperCase() : 转大写
// String toLowerCase() : 转小写
System.out.println("asd".toUpperCase());
// 16 static String valueOf(Object obj) :
// 调用该对象的toString方法,如果为null,则不再调用toString而是返回字符串null
String_05 s = null;
// 打印一个引用类型的时候,会自动调用String的valueOf 所以 会自动调用toString方法
System.out.println(s);
1.6注意
2.StringBuffer和StringBuilder
2.1概述
2.2基本使用
2.3常用方法
3包装类
3.1概述
【问】想要对基本类型数据进行更多的操作,怎么办?
【答】最方便的方式就是将其封装成对象。因为在对象描述中就可以定义更多的属性和行为
对该基本数据类型进行操作。我们不需要自己去对基本类型进行封装,JDK已经为我们封装好了。
【概念】
- 装箱就是自动将基本数据类型转换为包装器类型
- 拆箱就是自动将包装器类型转换为基本数据类型
3.2 使用
3.3 Integer
3.3.1 基本使用
3.3.2 相互转换
3.3.3 常用方法
3.3.4 自动装箱和自动拆箱
3.3.5 深入整型常量池
// 判断当前这个数值 是否在 -128~127之间
如果不再范围内 就直接new对象
3.3.6 总结
- System
4.1 概述
System类提供的public static long currentTimeMillis()用来返回当前时 间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差。
此方法适于计算时间差。
System类代表系统,系统级的很多属性和控制方法都放置在该类的内部。 该类位于java.lang包。
由于该类的构造器是private的,所以无法创建该类的对象,也就是无法实 例化该类。其内部的成员变量和成员方法都是static的,所以也可以很方便 的进行调用。
成员变量
System类内部包含in、out和err三个成员变量,分别代表标准输入流
(键盘输入),标准输出流(显示器)和标准错误输出流(显示器)。
成员方法
native long currentTimeMillis():
该方法的作用是返回当前的计算机时间,时间的表达格式为当前计算机时
间和GMT时间(格林威治时间)1970年1月1号0时0分0秒所差的毫秒数。
void exit(int status):
该方法的作用是退出程序。其中status的值为0代表正常退出,非零代表
异常退出。使用该方法可以在图形界面编程中实现程序的退出功能等。
4.2 常用方法
- Date
5.1 概述
获取时间和时间操作
5.2 构造方法
5.3 常用方法
5.4 格式化
5.5 Calendar
- Random
6.1 概述
随机数 从 0 开始
6.2 使用