1.String
1、1 概述
java.lang.String:是字符串类,底层就是一个final修饰的char数组,所以String很多特性就是数组的特性
比如一旦确定长度 不能更改
字符串一旦创建 ,这个字符串对象不能再更改
为了提升字符串的访问和存储效率Java虚拟机采用了一种缓存机制,把字符串都保存到了字符串常量池中
在执行过程中,假如要用到一个字符串a,String s1="a" 先去字符常量池中检索 是否有a,如果没有就创建一份 假如有Sting s2="a";就不再创建,把已有的这个a返回
所以导致String s1="a" String s2="a" 此时s1==s2 他也是true 因为他们指向同一个字符串对象 就是a
1、2 基本使用
1、3 不要频繁拼接
1、4 构造方法
1、5 常用方法
学习API
1 功能是什么
2 入参和出参是什么
3 怎么用
// 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已经为我们封装好了。
【概念】
1. 装箱就是自动将基本数据类型转换为包装器类型
2. 拆箱就是自动将包装器类型转换为基本数据类型
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 总结
4.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 常用方法
5.Date
5.1 概述
获取时间和时间操作
5.2 构造方法
5.3 常用方法
5.4 格式化
5.5 Calendar
6. Random
6.1 概述 随机数从0开始
6.2 使用