String

String 类是不可变类,也就是说 String 对象声明后,将不可修改。
String 对象赋值后不能再修改,这就是不可变对象,如果对字符串修改,那么将会创建新的对象。
只要采用双引号赋值字符串,那么在编译期将会放到方法区中的字符串的常量池里,如
果是运行时对字符串相加或相减会放到堆中(放之前会先验证方法区中是否含有相同的字符
串常量,如果存在,把地址返回,如果不存在,先将字符串常量放到池中,然后再返回该对
象的地址)

使用 String 时,不建议使用 new 关键字,因为使用 new 会创建两个对象
注:堆区中是运行期分配的,常量池中是编译器分配的

String中常用的方法

  1. endsWith:判断字符串是否以指定的后缀结束
  2. startsWith,判断字符串是否以指定的前缀开始
  3. equals,字符串相等比较,不忽略大小写
  4. equalsIgnoreCase,字符串相等比较,忽略大小写
  5. indexOf,取得指定字符在字符串的位置
  6. lastIndexOf,返回最后一次字符串出现的位置
  7. length,取得字符串的长度
  8. replaceAll,替换字符串中指定的内容
  9. split,根据指定的表达式拆分字符串
  10. substring,截子串
  11. trim,去前尾空格
  12. valueOf,将其他类型转换成字符串

正则表达式

正则表达式(独立的学科),主要可以用来做字符串处理,可以描述特定的字符模式
例如:”\d”代表任意一个数字 0~9, \D 代表所有的非数字,\w 代表所有的英文字母,\W 代表所有的非英文字母。
具体的更细节内容可以查看帮助文档。

StringBuffer 和 StringBuilder

StringBuffer

StringBuffer 称为字符串缓冲区,它的工作原理是:预先申请一块内存,存放字符序列,如果字符序列满了,会重新改变缓存区的大小,以容纳更多的字符序列。StringBuffer 是可变对象。
StringBuffer的主要StringBuffer是append和insert方法,它们被重载以便接受任何类型的数据。每个都有效地将给定的数据转换为字符串,然后将该字符串的字符附加或插入到字符串缓冲区。append方法总是在缓冲区的末尾添加这些字符;insert方法将insert添加到指定点。

StringBuilder

作用和StringBuffer相似,区别在于StringBuffer 中所有的方法都是同步的,是线程安全的,但速度慢,StringBuilder 的速度快,但不是线程安全的 ,一般情况下,优先使用StringBuilder

基本类型对应的包装类

基本类型的包装类主要提供了更多的实用操作,这样更容易处理基本类型。所有的包装类都是final 的,所以不能创建其子类,包装类都是不可变对象

对应的转换

image.png

image.png

自动装箱和自动拆箱

自动装箱:就是将基础数本类型转换为对象/包装类型
自动拆箱:就是将包装类型转换为基本数据类型。
例如:

  1. //自动装箱
  2. Integer i1 = 100;
  3. //自动拆箱
  4. int i2 = i1;

日期类

常用的日期类
java.util.Date
java.text.SimpleDateFormat
java.util.Calendar

  1. //日期类
  2. Date date = new Date();
  3. System.out.println(date);
  4. SimpleDateFormat sdate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  5. //将日期进行格式化
  6. System.out.println(sdate.format(date));
  7. Calendar cdate = Calendar.getInstance();
  8. //输出当前日期是这个月的第几天,还有其他的格式
  9. System.out.println(cdate.get(Calendar.DAY_OF_MONTH));
  10. //输出当前日期是这个星期的第几天
  11. System.out.println(cdate.get(Calendar.DAY_OF_WEEK));

数字类

常用的数字类
java.text.DecimalFormat
java.math.BigDecimal 可以做精确计算,特别是财务类的数据

//数字类
double num = 13654.154;
//设置格式为:设置千分位,并保留两位小数
DecimalFormat dnum = new DecimalFormat("###,###.##");
System.out.println(dnum.format(num));

//精确计算
int a1 = 10;
int a2 = 12;
BigDecimal ba1 = new BigDecimal(a1);
BigDecimal ba2 = new BigDecimal(a2);
BigDecimal ba3 = ba1.add(ba2);
System.out.println(ba3);

Random产生随机数

Random 位于 java.util 包下,可以产生随机数

//产生随机数
Random random = new Random();
//产生10个0-100的随机数
for (int i = 0; i < 10; i++) {
    System.out.println(random.nextInt(100));
}
System.out.println("=====================");
//没有指定范围便是随机产生。
for (int i = 0; i < 10; i++) {
    System.out.println(random.nextInt());
}

Enum枚举

如果程序只是单纯的对于成功就返回1,失败就返回0,没有什么辨识性,而且使用枚举可以自定义返回的结果形式,以及可以返回多个结果,不单只有成功、失败两个。
例如

//定义枚举
enum Season {
    Spring,
    Summer,
    Autumn,
    Winter
 }