常用类

常用类:

包装类

关于Integer包装类的缓冲:

对于显示赋值的包装类,他们的值,将会保存在方法去中的常量池中,并不会出现在GC 堆中,但常量池也不会缓冲很多数据放在那里不用,所以常量池中只会缓存一部分数据,Integer包装类的缓存数据范围为 -128 ~ 127 ,如果显示赋值的数值不在这个范围内,那么即使显示赋值,在常量池中也会新new一个位置来存放数据.结果如下
在这里插入图片描述

  • Boolean:(全部缓存)
  • Byte:(全部缓存)
  • Character(<= 127缓存)
  • Short(-128 — 127缓存)
  • Long(-128 — 127缓存)
  • Float(没有缓存)
  • Doulbe(没有缓存)

包装类小知识:

​ a.当数值范围为-128~127时:如果两个new出来Integer对象,即使值相同,通过“”比较结果为false,但两个对象直接赋值,则通过“”比较结果为“true,这一点与String非常相似。

​ b.当数值不在-128~127时,无论通过哪种方式,即使两个对象的值相等,通过“==”比较,其结果为false;

​ c.当一个Integer对象直接与一个int基本数据类型通过“==”比较,其结果与第一点相同;

​ d.Integer对象的hash值为数值本身;

把基本数据类型编程对象类型的特殊类

包装类的装箱与拆箱
Integer integer = new Integer(10);//手工装箱
Integer integer2 = 10;//自动装箱
Integer integer1 = Integer.valueOf(10);

int i = integer.intValue();//手工拆箱
int i1 = integer1;//自动拆箱

int n = Integer.ParseInt("389");把字符串变成int的工具方法

在这里插入图片描述

字符串转化为基本数据类型

在这里插入图片描述

String类

String --> 内容不可改变的Unicode字符序列, 内部使用char[ ] 储存所有字符

因为String内容不可改变,使得任何对于字符串的修改都会产生新的字符串

有变量参与字符串拼接,新变量会产生在gc区

如果所有参与拼接的字符串都是常量,那么新的常量会产生在常量池

String.intern()方法会把字符串留在常量池, 如果常量池中没有,那么将新建一个常量,如果有,那么将返回那个对象的地址 --> 此方法不建议使用,调用太多会导致方法区移除

常量区的字符串没有办法回收

所有函数的范围都是 左闭右开

  • public int indexOf(String s) : 找出参数中的子字符串s在当前字符串中首次出现的下标, 从左向右搜索
  • public String substring(int start,int end) : 获取子串, 指定开始下标(包含)和结束下标(不包含)
  • public String trim() : 修剪当前字符串首尾的空白字符, 空白字符:码值小于等于32
  • public boolean equals(Object anObject) 比较两个字符串内容区分大小写
  • public boolean equalsIgnoreCase(String other) : 比较字符串内容, 忽略大小写
  • public int length() : 返回当前字符串对象的长度(字符个数)
  • public char charAt(int index) : 返回当前字符串的指定下标index位置处的字符
  • public char[] toCharArray() : 把字符串转换为字符数组, 把内部字符数组制作了一个副本
  • public boolean startsWith(String prefix) : 判断当前串是否以参数中的子串为开始
  • public boolean endsWith(String suffix) : 判断当前串是否以参数中的子串为结束, 简单判断文件类型
  • public String[] split(String regex) : 把字符串以参数中的子串为切割器进行切割, 结果是多个子串, 切割器丢弃
 * 字符串String : 内容不可改变的Unicode字符序列. 内部使用char[]来保存所有字符.
 * 任何对于字符串的修改都会产生新对象.
 * ​            0 2      9   13       19        26       32  36 38
 * String s = "  abcXYZ 123 我喜欢你, 你喜欢我吗? 我不喜欢你 qqzZZ  ";
 * s.charAt(5) => 'X', s.charAt(28) => '喜'

 * 第一个参数是源数组对象, 第2个参数是源数组的开始下标, 第3个参数是目标数组对象, 第4个参数是目标数组的开始下村, 第5个参数是复制元素个数
    System.arraycopy(value, 0, result, 0, value.length);
 * public int compareTo(String anotherString) : 用于字符串比较
 * public int indexOf(String s ,int startpoint): 找出参数中的子字符串s在当前字符串中首次出现的下标, 但是开始位置是指定的startPoint
 * s.indexOf("喜欢", 15) => 20.    s.indexOf("喜欢", 21) => 28. s.indexOf("喜欢", 29) => -1
 * public int lastIndexOf(String s) : 找出参数中的子串在当前字符串中首次出现的下标, 从右向左进行搜索
 * s.lastIndexOf("喜欢") => 28
 * public int lastIndexOf(String s ,int startpoint)找出参数中的子串在当前字符串中首次出现的下标, 但是开始位置是指定的startPoint, 从右向左
 * s.lastIndexOf("喜欢", 27) => 20, 
 * s.lastIndexOf("喜欢", 19) => 14, s.lastIndexOf("喜欢", 13) => -1
 * s.endsWith("qqzZZ") => false
 * s.substring(13, 17) => "我喜欢你" : 子串的长度 = 结束下标 - 开始下标
 * public String substring(int startpoint) : 获取子串, 指定开始下标. 会取到最后.
 * $public String replace(char oldChar,char newChar) : 替换当前串中所有的oldChar为newChar
 * s.replace(' ', '#')
 * s.replace("喜欢", "讨厌")
 * public String replaceAll(String old,String new) : 替换当前串中所有的old为new, 支持正则表达式
 * public String concat(String str) : 字符串连接, 和+一样效果
 * String s1 = "abc";
 * String s2 = s1.concat("yyy"); // "abcyyy"
 * public String toUpperCase() : 变成大写字母
 * public String toLowerCase() : 变成小写字母
 * String s = "abc,yyy,我和你,qqq,oooo";
 *      String[] arr = s.split(",");

StringBuilder类

内容可以改变的Unicode字符序列,底层也是使用char[ ]来存储数据

是一个长度可以变化的,保存字符的容器(默认长度为16)

速度快、线程不安全

可以理解为可以改变的String

 * 字符串 StringBuilder : 内容可以改变的Unicode字符序列, 底层也是使用char[]保存所有字符
 * 简单的理解 它就是一个容器, 保存字符的容器. 长度是变化的.
 * String s = "abc"
 * s = s + 100;
 * StringBuilder sb = new StringBuilder("abc");
 * sb.append(100);
 * new StringBuilder() => 内部创建一个容量为16的char[].
 * new StringBuilder(100); => 内部创建一个容量为100的char[].
 * new StringBuilder("abcd")
 * StringBuilder append(...) 可以追加任意数据到字符串末尾, 不会产生新对象
 * StringBuilder insert(int index, ...) 可以在指定下标index位置处插入新的内容, 可以是任意数据.
 * StringBuilder reverse() 反转
 * StringBuilder delete(int beginIndex, int endIndex) 删除一个区间, 从beginIndex开始到endIndex.
 * void setCharAt(int index, char newCh) 替换指定下标处的字符为新字符

StringBuffer类

速度慢、线程安全

Date类 --(已过时)

Date中使用SimpleDateFormat来对日期进行格式化

y表示年、M表示月、d表示月中的日、H表示24小时的小时、m表示分钟、s表示秒、S表示毫秒、E表示星期

且格式化器,可以直接用来格式化毫秒

Calendar --(使用不方便)

这个类是抽象类,不可以直接new 对象,只能通过类中的静态方法(getInstance)来获取,

Calendar calendar= Calendar。getInstance ();

int year = calendar.get(Calendar。YEAR);获取年;

calendar。set(Canendar。YEAR,2008);通用设置,通过指定不同的参数,来设置不同的值

内部使用数组保存,月份有初入,存在致命问题,数据容易丢失,一经修改,无法撤销

LocalDate – (日期类 Java8)

LocalDate 日期

LocalTime 时间

LocalDateTime 日期时间

//根据指定参数创建日期对象
LocalDate of = LocalDate.of(2021,1,13);
//获取当前日期						当前日期
LocalDate date = LocalDate.now();
//用当前日期伴随指定值生成新日期			设置新日期
LocalDate date1 = date.withYear(2008).withMonth(8).withDayOfMonth(8);//2008-08-08
//用当前日期加上指定时间生成新日期			当前日期再过多久
LocalDate sumDate = date.plusYears(2).plusMonths(3).plusDays(3);//2023-04-16
//用当前日期减去指定时间生成新日期			当前日期过了多久
LocalDate minusDate = date.minusYears(3).minusMonths(3).minusDays(333);//2016-11-14

MATH类

这些工具类所提供的方法大多数都是静态方法,
使用案例:Math.random()

random()获取 【0,1)随机小数
round()四舍五入

Date = date.plusYears(2).plusMonths(3).plusDays(3);//2023-04-16
//用当前日期减去指定时间生成新日期			当前日期过了多久
LocalDate minusDate = date.minusYears(3).minusMonths(3).minusDays(333);//2016-11-14
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值