包装类Wrapper
针对八种基本数据类型相应的引用类型就是包装类,包装类有类的特点,就可以调用类中的方法。
除了Boolean和Character是直接继承Object,其他的父类都是Number
- 包装类和基本数据的转换
把基本数据类型转换为包装类的过程就叫做装箱,反之为拆箱
在jdk5以前需要手动装箱和拆箱,在jdk5以后,就可以实现自动装箱和拆箱。下图分别是手动和自动装箱
自动装箱底层调用的是valueOf方法,拆箱调用的是intValue
- 包装类型和String类型的相互转换
- 包装类的常用方法以Integer和Character为例:
一些有关Intege类的比较题,只要有基本数据类型int等,判断的就是数值是否相等
String类
String对象用于保存字符串,也就是一组字符序列。字符串的字符使用Unicode字符编码,一个字符(不区分字母还是汉字)占两个字节。
String类较常用构造方法:
String s5 = new String(byte[] b)
String类实现了接口Serializable,因此String可以串行化,即可以在网络传输;还实现了接口Comparable,因此String对象可以比较大小;String还是final类,不能被其他的类继承;String有属性 private final char value[],用于存放字符串内容,其中vvalue是final类型,不可以修改(地址不可修改,不是说存放的字符不可修改)
这个题需谨记:
String类是保存字符串常量的,每次更新都需要重新开辟空间,效率较低,因此Java设计者还提供了StringBuilder和StringBuffer来增强String的功能并提高效率。【涉及到的内容后面讲】
其中indexOf和lastindexOf中可以传入字符串;substring(6)指从索引6开始截取后面所有的内容;substring(0,5)表示从索引0开始截取,一直截取到索引5-1=4的位置
- replace替换字符串中的字符:replace(”a“,”b“)即将字符串中的a都替换为b,但是此方法执行后,对原存放字符串的对象没有影响,返回的结果才是替换过的。
- StringBuffer类
java.lang.StringBuffer代表可变的字符序列,可以对字符串内容进行增删;很多方法与String相同,但StringBuffer是可变长度的;StringBuffer是一个容器。
它是一个final类,不可以被继承。
StringBuffer和String类的对比:
StringBuffer在更新内容时,只有当存放空间不够了才会更新地址,因为它的字符内容是存放在父类的char[] value中的,不是final 。
StringBuffer的构造器:
String和StringBuffer在开发的过程中需要进行相互转换:
StringBuffer的常用方法:
- 增 append:append后还是StringBuffer类型,只不过最终输出的时候默认调用tostring方法
- 删 delete:delete(a,b)指删除[a,b)的字符
- 改 replace:replace(a,b,"c")指使用c替换[a,b)的字符
- 查找 indexOf:查找指定的字符串第一次出现的索引,如果找不到则返回-1
- 插 insert:insert(a,"b")指在索引为a的位置插入“b”,且原来索引为a的内容自动后移
- 长度 length:计算字符的长度
- StringBuilder类
也是一个可变的字符序列,被设计用作StringBuffer的一个简易替换,用在字符串缓冲区被单个线程使用的时候,此类提供一个与StringBuffer兼容的API,但不保证同步(StringBuilder不是线程安全的)。如果可能建议优先采用该类,因为在大多数实现中,它比StringBuffer要快。
在StringBuilder上的主要操作是append和insert方法,可重载这些方法以接受任意类型的数据
Math类
都是静态方法,可以直接调用
abs求绝对值;pow求幂;ceil向上取整,返回>=该参数的最小整数(转成double型);floor向下取整,返回<=该参数的最大整数(转成double型);round四舍五入(转成long型);sqrt求开方;random求随机数
如果需要返回一个a-b之间的随机整数,其中a,b均为整数,具体的公式为:
(int)(a+Math.random()*(b-a+1))
Arrays类
包含的也都是静态方法,用于管理或操作数组(比如排序和搜索)
toString返回数组的字符串形式;sort排序(自然排序和定制排序);binarySearch通过二分搜索法进行查找,要求必须排好序
copyOf 数组元素的复制 : Integer[] newArr = Arrays.copyOf(arr,arr.length);
System类
其中,复制数组元素arraycopy()中有五个参数,每个参数注释为:
BigInteger和BigDecimal类
BigInteger适合保存比较大的整型,先把数据存成字符串,进行相应的加减乘除操作之后再转回数字类型;BigDecimal适合保存精度更高的浮点型;他们的加减乘除都不是用普通的+ -等符号运算,而是add 加,subtract 减,multiply 乘,divide 除来运算的。
日期类[知道怎么查怎么用即可,不用每个方法都背]
- 第一代日期类
- Date:精确到毫秒,代表特定的瞬间
- SimpleDateFormat:格式和解析日期的具体类。它允许进行格式化(日期->文本)、解析(文本->日期)和规范化
- 第二代日期类
Calender类,Calender类是一个抽象类,构造器是private,它为特定瞬间与一组诸如MONTH,DAY_OF_MONTH,HOUR等日历字段之间的转化提供了一些方法,并为操作日历字段提供了一些方法
- 第三代日期类
前两代日期的不足分析:
第三代日期类更多方法:
- LocalDateTime类
- MonthDay类:检查重复事件
- 是否是闰年
- 增加日期的某个部分
- 使用plus方法测试增加时间的某个部分
- 使用minus方法测试查看一年前和一年后的日期等