Java常用类
包装类(Wrapper )
针对八种基本数据类型相应的引用类型
包装类转String
com.learn.Wrapper_.ChangeWIthString
一些常用的方法
Integer
- MIN_VALUE 返回最小值
- MAX_VALUE 返回最大值
Character
- isDigit('1') 判断是不是数字
- isLetter('a') 判断是不是字母
- isUpperCase('A') 判断是不是大写
- isLowerCase(’a') 判断是不是小写
- isWhitespace(' ') 判断是不是空格
- toUpperCase('a') 转成大写
- toLowerCase('A') 转成小写
经典面试题
com.learn_STL.Wrapper_.ClassicTest
常用类
String 类
本质仍然是 char 数组
方法
具体查操作手册
-
intern()
当调用 intern 方法时,如果池已经包含一个等于此 String 对象的字符串(用 equals(Object) 方法确定),则返回池中的字符串。否则,将此 String 对象添加到池中,并返回此 String 对象的引用。
-
equals()
-
equalsIgnoreCase()
-
length()
-
IndexOf() //字符串第一次出现的位置,找不到返回 -1
-
lastIndexOf //字符串最后一次出现的位置,找不到返回-1
-
substring //截取字符串
-
trim //去除前后空格
-
charAt //获取指定位置的字符
-
toUppeCase
-
toLowerCase
-
concat //拼接字符串
-
replace
-
split
转义字符 /
- compareTo //比较字符串大小
返回 正、负数、0
- toCharArray //转换成字符数组
- format //格式字符串
一些解释
-
String 对象用于保存字符串,也就是一组字符序列
-
字符串常量对象是用双引号括起的字符序列
-
字符串的字符使用Unicode编码,一个字符(不管汉字还是字母)占两个字节
-
String 实现了 Serializable 接口,所以可以串行化:可以在网络传输
-
有属性 private final char value[] 用于存放数据
-
value 是一个 final 类型,不可修改
不是内容不可修改,而是地址不可修改
常用构造器
new String(String original);
new String(char[] a);
new String(char[] a,int startIndex,int count);
new String(byte[] b);
面试题
com.learn_STL.String_.ClassicTest
StringBuffer
- 效率较高,线程安全
可变长度字符串,更新的是内容而不像 String 一样更新地址,效率高
StringBuffer 方法
- append
向字符串后端增加新的 str
- toString()
转换成 String 对象 || String s = new String(StringBuffer 对象) 也可以实现 StringBuffer 对 String 的转换
- delete(start,end)
对 [start,end) 的内容进行删除
- replace(start,end,string)
对 [start,end) 的内容进行替换,替换成 string 字符串的内容
- indexOf(String str)
返回 str 第一次在该容器中出现的位置
- insert(int index,String str)
在 index 处插入字符串 str 中的内容
- length
返回长度
StringBuilder
- 效率最高,线程不安全
- 和StringBuffer类似,方法一样
- 原则上,字符串对象不常改变用 String,常改变的时候单线程用 StringBuilder ,多线程用 StringBuffer
Math
- 包含用于执行基本数学操作的方法
方法
- abs 绝对值
- pow 求幂
- ceil 向上取整
- floor 向下取整
- round 四舍五入
- sqrt 开平方
- random() 返回一个 [0,1) 之间的一个随机整数
Arrays
- 用于操作、管理数组
方法
- toString 返回数组的字符串形式
- sort 排序
- binarySearc(arr,3) 二分在 arr 数组里搜索 3
- copyOf(arr,arr.length) 数组复制
int newArr = Arrays.copyOf(arr,arr.length)
- fill 数组元素的填充
int[] num = new int[] {1,2,3};
Arrays.fill(num,99);
- equals 比较两个数组的元素是否完全一致
- asList 将一组值转换成List
System
方法
- exit 退出当前程序
- arraycopy 复制数组元素,比较适合底层调用
- gc() 运行垃圾回收机制
BigInteger & BigDecimal
- 分别保存比较大的整形和精度较高的浮点型
BigInteger
- 过大的数据赋值可以用字符串赋值
BigInteger bigInteger = new BigInteger("999999999999");
- BigInteger 的加减乘除要用对应的方法而不能直接
+ - * /
来进行操作
BigDecimal
- 在使用 divide 的时候传参 BigDecimal.ROUND_CEILING 可以保留精度,不会陷入死循环
加减乘除
- add
- subtract
- multiply
- divide
Date
- 用到再差即可
Calendar
- 第二代日期类,用到再说
集合
collection
- 实现子类可以存放多个元素
- 是接口
常用方法
- add
- remove
- contains:查找某个元素是否存在
- size
- isEmpty
- clear
- addAll:同时添加多个元素
- contiansAll:同时查询多个元素是否存在
- removeAll:同时删除多种元素
iterator类
- 作为迭代器使用
快捷键生成迭代器循环
- ctrl + J
- 或 输入itit
增强 for 循环
- 可以用来替代 iterator 来循环遍历集合
- for(个体类型 obj : objs){}
- 如 for(Student student : students){}
- 底层仍是迭代器
List
- List中元素有序,取出顺序等于存放顺序,并且数据可重复
- List中每个元素都有对应的索引顺序,即支持索引
- 是接口
方法
- indexOf(s):返回s在集合中最后出现的位置
- set(int index,String s):将s替换到index的位置
- subList(int st,int ed):返回从st到ed的子集合
ArryList
- 线程不安全,没有synchronized
底层操作机制
-
维护了一个Object类型的数组elementData
transient Object[] elementData; //transient 表示短暂的、瞬间的,表示该属性不会被序列号
-
当船舰ArryList对象时,如果使用的是无参构造器则初始容量为0,第一次添加则扩容elementData为10,如需再次扩容则扩容为1.5
-
如果使用的是指定大小的构造器,则初始容量为指定大小,如果需要扩容则直接扩容到1.5倍
Vector
- Vector底层也是一个对象数组,protected Object[] elementData;
- Vector是线程同步的,即线程安全,操作方法带有synchronized
- 在开发中,需要线程同步安全时,考虑使用Vector
扩容机制
- 无参默认是10
- 扩容按两倍扩容
LinkedList
- 底层实现了双向链表和双端队列特点
- 可以添加任意元素(元素可以重复),包括null
- 线程不安全,没有实现同步
底层操作机制
- 底层维护了一个双向链表
- 维护了两个属性first和last分别指向首节点和尾节点
- 每个节点(Node对象),里面又维护了prev、next、item三个属性,其中通过prev指向前一个,next指向后一个,以此实现双向链表
- 所以LinkedList的元素的添加和删除,不是通过数组完成的,相对来说效率较高
Set
- 是接口
- 和List一样也是collection的子接口,因此常用方法和collection接口一样
- 不能有重复对象
遍历方式
- 可以迭代器
- 可以增强for
- 不可以索引方式
HashSet
- 实现了Set接口
- 实际上是HashMap
- 可以存放null但是只能有一个null
- 不保证元素是有序的,取决于hash后再确定缩影的结果
- 不能有重复对象
扩容机制
Map
- 是接口
- Key-Value映射
- key不可重复,value可重复
- key和value都可以为null,但key只能有一个null而value可以有多个
- 常用String类作为Map的key
- key和value存在单向一对一关系,即通过指定的key找到对应的value
- 为了方便遍历,还会创建 EntrySet 用来传递 k-v
方法
- put(key,value)
- containsKey :查找键是否存在
- keySet :获取所有的键
- values :获取所有的值
遍历方式
com.learn_STL.Map_.LoopMap
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具