Java中常用类

Java中常用类

1.String

java.long.String

  1. String表示字符串类型,属于引用数据类型不属于基本数据类型
  2. 在Java中随便使用双引号括起来的都是String对象。例如:“abc” “sdf”
  3. Java中规定,双引号括起来的字符串是不可变的
  4. String是为啥不可变的,因为源代码中String类有一个byte数组,数组一旦创建长度是不可变的并且这个byte数组是使用final修饰的,final修饰的引用一旦指向某个对象之后,不可再指向其它对象。
  5. 在JDK中括起来的字符串都是直接存储在“方法区”的“字符串常量池”当中的。由于字符串在实际开发中使用太频繁,为了执行效率,所以把字符串放到方法区的字符串常量池当中。
  6. 字符串对象之间的比较不能使用“==”,应该调用equals方法
  7. 面试题:判断数组长度和判断字符串长度不一样,判断数组长度是length属性,判断字符串长度是length()方法

2.StringBuffer

  1. 我们在实际开发中如果需要进行字符串的频繁拼接,因为Java中的字符串是不可变的,每一次拼接都会产生新字符串,这样会占用大量的方法区内存。造成内存空间的浪费

  2. 如果以后需要进行大量字符串拼接操作,建议使用JDK自带的:

    java.lang.StringBuffer

    java.lang.StringBuilder

  3. 如何优化StringBuffer的性能

    在创建StringBuffer的时候尽可能给定一个初始化容量

    最好减少底层数组的扩容次数。预估计一下,给一个大一些初始化容量

    关键点:给一个合适的初始化容量。可以提高程序的执行效率

  4. StringBuffer和StringBuilder的区别:

    StringBuffer是线程安全的

    StringBuilder是非线程安全的

  5. StringBuffer和StringBuilder为什么是可变的

    源代码中,StringBuffer和StringBuilder内部实际上是一个byte[ ]数组,这个byte[ ]数组没有被final修饰,StringBuffer和StringBuilder的初始化容量是16,当存满之后会进行扩容。底层调用了数组拷贝的方法System.arraycopy()…。所以StringBuffer和StringBuilder适合于使用字符串的频繁拼接操作。

3.基础类型对应的8个包装类

  1. Java中为8种基本数据类型又对应准备了8种包装类型。8种包装类型属于引用数据类型,父类是Object。

  2. 8种基本数据类型对应的包装类型

    基本数据类型包装类型
    bytejava.lang.Byte(父类是Number)
    shortjava.lang.Short(父类是Number)
    intjava.lang.Integer(父类是Number)
    longjava.lang.Long(父类是Number)
    floatjava.lang.Float(父类是Number)
    doublejava.lang.Double(父类是Number)
    booleanjava.lang.Boolean(父类是Object)
    charjava.lang.Character(父类是Object)
  3. Number中公共的方法:

    Number是一个抽象类,无法实例化对象

    装箱:基本类型---->(转换为)---->引用数据类型

    拆箱:引用数据类型---->(转换为)---->基本类型

  4. 关于Integer类的构造方法,有两个:

    Interger(int)

    Interger(String)

  5. 通过访问包装类的常量,来获取最大值和最小值

  6. 自动装箱:基本数据类型自动转换成包装类

    自动拆箱:包装类自动转换成基本数据类型

  7. Java中为了提高执行效率,将-128到127之间所有的包装对象提前创建好,放到了一个方法区的“整数型常量池”当中了,目的是只要用这个区间的数据不需要再new了,直接从整数型常量池中取出来。

  8. 经典异常:

    空指针异常:NullPointerException

    类型转换异常:ClassCastException

    数组下标越界异常:ArrayIndexOutOfBoundsException

    数字格式化异常:NumberFormatException

在这里插入图片描述

4.日期相关类

  1. 获取系统当前时间(精确到毫秒的系统当前时间),直接调用无参数构造方法Date()

  2. SimpleDateFormat是专门负责日期格式化的

  3. 日期字符串String转换成Date类型

    String time = “日期格式”

    SimpleDateFormat sdf2 = new SimpleDateFormat(“格式不能随便写,要和日期字符串格式相同”)

    Date dateTime = sdf2.parse(time);

    System.out.println(dateTime);

  4. 获取自1970年1月1日00:00:00 000到当前系统时间的总毫秒数:用currentTimeMillis()

  5. System类的相关属性和方法:
    System.out out是System类的静态变量

    System.out.println() println() 方法不是System类的,是PrintStream类的方法

    System.gc() 建议启动垃圾回收器

    System.currentTimeMillis() 获取自1970年1月1日到系统当前时间的总毫秒数。

    System.exit(0) 退出JVM

  6. yyyy 年 MM 月 dd 日 HH 时 mm 分 ss 秒 SSS毫秒(毫秒3位,最高999.1000毫秒代表1秒)
    注意:在日期格式中,除y M d H m s S 这些字符不能随便写外,剩下的符号格式自己随意组织。

5.数字相关类

关于数字格式化:

  1. 数字格式:# 代表任意数字 ,代表千分位 . 代表小数点

​ ###,###.## 表示:加入千分位,保留2位小数

  1. java.text.DecimalFormat专门负责数字格式化

  2. BigDecimal属于大数据,精度极高。不属于基本数据类型,属于Java对象(引用数据类型)

    这是SUM提供的一个类。专门用在财务软件当中

6.Random

  1. 随机数
package random;

import java.util.Random;

public class RandomTest01 {
    public static void main(String[] args) {
//        创建随机数
        Random random = new Random();

//        随机产生一个int类型取值范围内的数字
        int num1 = random.nextInt();

        System.out.println(num1);

//        产生【0~100】之间的随机数。不能产生101
//        nextInt翻译为:下一个int类型的数据是101,表示只能取到100
        int num2 = random.nextInt(101);//不包括101
        System.out.println(num2);
    }
}

7.Enum

  1. 枚举是一种引用数据类型

  2. 枚举定义的语法:

    Enum 枚举类型名{

    枚举值1,枚举值2

    }

  3. 结果只有两种情况,建议使用布尔类型

    结果超过两种并且还是可以一枚一枚列举出来的,建议使用枚举类型。

    例如:颜色,四季,星期等

  4. SUCCESS是枚举Result类型中的一个值

  5. FAIL是枚举Result类型中的一个值

  6. 枚举中的每一个值,可以看做是“常量”

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值