一、包装类

1. 八种基本数据类型和包装类的使用

  1. 基本类型 包装类

byte Byte
boolean Boolean
short Short
char Character
int Integer
long Long
float Float
double Double

  1. 在这八个类中,除了Character和Boolean以外,其他的都是“数字型“,“数字型”都是java.lang.Number的子类。

  2. 常用的属性和方法

Integer.MAX_VALUE
Integer.MIN_VALUE
Integer.TYPE
Integer.parseInt(st);//把一个字符串类型的数据转成int类型
toString();//把一个Integer类型转成字符串
Integer.valueOf(b);//这个方法也是可以把string 字符串转成Integer类型数据

2. 自动的装箱和拆箱

int a=10;//基本类型数据
Integer b=new Integer(a);//把基本类型的数据转成包装类—>装箱
int c= b.intValue();//把包装类转换成基本类型的数据—>拆箱

  1. ------------JDK1.5提供了自动装箱和拆箱---------------------------
  2. int aa=10;
  3. Integer bb=aa;//不需要调用任何方法直接可以完成装箱的操作--自动装箱
  4. //自动装箱 底层通过调用Integer.valueOf();方法完成 我们通过源代码得知Integer.valueOf();还是new Integer()
  5. int cc=bb;//自动的拆箱
  6. //自动拆箱的底层调用还是 intValue(); 方法

注意:
包装类在自动装箱时为了提高效率,对于-128~127之间的值会进行缓存处理。超过范围后,对象之间不能再使用==进行数值的比较,而是使用equals方法

3. String类

常用方法:
charAt(int index)
返回指定索引处的 char 值。
compareTo(String anotherString)
按字典顺序比较两个字符串。
concat(String str)
将指定字符串连接到此字符串的结尾。
contains(CharSequence s)
当且仅当此字符串包含指定的 char 值序列时,返回 true。
endsWith(String suffix)
测试此字符串是否以指定的后缀结束。
equals(Object anObject)
将此字符串与指定的对象比较。
equalsIgnoreCase(String anotherString)
将此 String 与另一个 String 比较,不考虑大小写。
hashCode()
返回此字符串的哈希码。
indexOf(int ch)
返回指定字符在此字符串中第一次出现处的索引。
indexOf(int ch, int fromIndex)
返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索。
indexOf(String str)
返回指定子字符串在此字符串中第一次出现处的索引。
indexOf(String str, int fromIndex)
返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。
isEmpty()
当且仅当 length() 为 0 时返回 true。
lastIndexOf(int ch)
返回指定字符在此字符串中最后一次出现处的索引。
lastIndexOf(int ch, int fromIndex)
返回指定字符在此字符串中最后一次出现处的索引,从指定索引处开始进行反向搜索。
lastIndexOf(String str)
返回指定子字符串在此字符串中最右边出现处的索引。
lastIndexOf(String str, int fromIndex)
返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索。
length()
返回此字符串的长度。
replace(char oldChar, char newChar)
返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。
replace(CharSequence target, CharSequence replacement)
使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串。
replaceAll(String regex, String replacement)
使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
split(String regex)
根据给定正则表达式的匹配拆分此字符串。
startsWith(String prefix)
测试此字符串是否以指定的前缀开始。
startsWith(String prefix, int toffset)
测试此字符串从指定索引开始的子字符串是否以指定前缀开始。
substring(int beginIndex)
返回一个新的字符串,它是此字符串的一个子字符串。
substring(int beginIndex, int endIndex)
返回一个新字符串,它是此字符串的一个子字符串。
toLowerCase()
使用默认语言环境的规则将此 String 中的所有字符都转换为小写。
toString()
返回此对象本身(它已经是一个字符串!)。
toUpperCase()
使用默认语言环境的规则将此 String 中的所有字符都转换为大写。
trim()
返回字符串的副本,忽略前导空白和尾部空白。

注意:
JDK9以前 String 底层是一个char类型的数组
JDK9及其以后底层采用的是 byte类型的数组
JDK9为何从char类型数组转成byte类型数组?
A、节省JVM的内存空间
B、更符合之后IO流的操作

二.StringBuffer和StringBuilder

StringBuffer JDK1.0提供的类,线程安全,做线程同步检查,效率较低。
StringBuilder JDK1.5提供的类,线程不安全,不做线程同步检查,因此效率较高。 建议采用该类。

1.StringBuilder 源码的理解

StringBuilder类底层和String类一样,也是一个字符数组value,但不是final的。
变量count表示的是底层字符数组的元素的真实个数,不是底层字符数组的长度默认数的长度是16。也可以通过构造方法直接指定初始长度。length()方法返回的是字符数组元素的真实个数,capacity()返回的是底层数组的长度。

  1. public static void main(String[] args) {
  2. StringBuffer strr=new StringBuffer("aaaabv");//创建StringBuffer对象
  3. StringBuilder str=new StringBuilder("bjsxt");//创建StringBuiler对象
  4. str.append("北京");//字符串追加
  5. System.out.println(str);
  6. str.insert(5,"我爱");//字符串插入
  7. str.setCharAt(5,'v');//指定下标进行字符的替换
  8. str.replace(5,7,"我喜欢");//指定位置的字符串替换,左闭右开
  9. str.deleteCharAt(5);//指定索引的字符删除
  10. str.delete(5,7);//删除指定位置的元素
  11. System.out.println(str);
  12. str.reverse();
  13. System.out.println(str);
  14. String str1="bjsxt";
  15. StringBuilder builder1=new StringBuilder("str");//String对象转换为Stringbuilder对象
  16. String str2=builder1.toString();//Stringbuilder对象转换为String对象
  17. }

2.扩容原理

底层扩容的原理 之前数组长度的 2n+2
int newCapacity = (oldCapacity << 1) + 2;
如果扩充结束长度还是放不下真实内容的大小,直接把真实的大小赋值给新数组长度
if (newCapacity - minCapacity < 0) {
newCapacity = minCapacity;
}

三、Date类

1.常用方法

2.Date类的关系

  1. 三个子类都是sql包下的<br /> Date: 只可以表示年月日<br /> Time: 只可以表示时分秒<br /> Timestamp: 时间戳 即可表示年月日又可以表示时分秒

3.SQL包下的Date和String之间的转换

String str=”2021-09-10”;
使用sql包下的valueOf 方法就可以把String 类型转成Date
注意:A、字符串时间日期格式是有格式限制 0000-00-00 这个形式
B、转换的字符串种不可以携带时分秒
Date da= java.sql.Date.valueOf(str);

四、DateFormat类

1.String类型转成Date

        System.out.println("------------String类型转成Date---------------------");
        String  str="1999年12月23 09:23:45";
        DateFormat  sim=new SimpleDateFormat("yyyy年MM月dd hh:mm:ss");
        //把一个字符串类型的数据转成  Date 类型的
        Date  date= sim.parse(str);
        //Thu Dec 23 09:23:45 CST 1999
        System.out.println(date);

2.Date类型转成String


        System.out.println("------------Date类型转成String---------------------");
        Date  date2=new Date();
        DateFormat  sim2=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String  str2= sim2.format(date2);
        System.out.println(str2);

五、Calendar类

Date类和Calendar类之间相互转换
        Date   date=new Date();//日期类型
        Calendar  calendar2=new GregorianCalendar();
        calendar2.setTime(date); //把一个Date类型转成Calendar

        Date  date2= calendar2.getTime();//把Calendar类型转成Date类型

六、Math数学类

Math.ceil(2.3) 向上取整
Maht.floor(4.8) 向下取整

七、Random随机数类

Random random=new Random();
System.out.println(random.nextInt(30)); 随机生成0到30之间的整数

八、enum枚举类

public enum Gender {
    男,女
}


Gender sex;//定义枚举类性别