第十七章 常用类

本文介绍了Java中的String类,包括其不可变性、内存存储以及常用方法。提到了StringBuffer和StringBuilder用于字符串拼接,强调了线程安全和性能优化。还讨论了基本数据类型的包装类及其自动装箱、拆箱概念。此外,概述了日期类的使用,如Date和SimpleDateFormat,以及数字格式化和随机数生成。最后,文章提及了枚举类型在Java中的应用。
摘要由CSDN通过智能技术生成

一、String类

1、对String在内存存储方面的理解:

第一:字符串一旦创建不可变。
第二:双引号括起来的字符串存储在字符串常量池中。
第三:字符串的比较必须使用equals方法。
第四:String已经重写了toString()和equals()方法。

2、String的构造方法。

String s = "abc";
String s = new String("abc");
String s = new String(byte数组);
String s = new String(byte数组, 起始下标, 长度);
String s = new String(char数组);
String s = new String(char数组, 起始下标, 长度);

3、String类常用的21个方法

1)char charAt(int index);
获取字符串中某个下标位置的字符。

2)int compareTo(String anotherString);
比较两个字符串的大小。

3)boolean contains(CharSequence s);
判断当前字符串中是否包含某个子字符串s。

4)boolean endsWith(String suffix);
判断当前字符串是否以某个子字符串结尾。

5)boolean equals(Object anObject);
判断两个字符串是否相等。

6)boolean equalsIgnoreCase(String anotherString);
判断两个字符串是否相等,并且同时忽略大小写。

7)byte[] getBytes();
将字符串对象转换成字节数组。

8)int indexOf(String str);
判断某个子字符串在当前字符串中第一次出现处的索引(下标)

9)boolean isEmpty();
判断某个字符串是否为“空字符串”

10)int length();
面试题:判断数组长度和判断字符串长度不一样
判断数组长度是length属性,判断字符串长度是length()方法。

11)int lastIndexOf(String str);
判断某个子字符串在当前字符串中最后一次出现的索引(下标)。

12)String replace(CharSequence target, CharSequence replacement);
替换掉指定的字串。

13)String[] split(String regex);
拆分字符串。

14)boolean startsWith(String prefix);
判断某个字符串是否以某个子字符串开始。

15)String substring(int beginIndex);
截取字符串,参数是起始下标。

16)String substring(int beginIndex, int endIndex);
beginIndex起始位置(包括)
endIndex结束位置(不包括)

17)char[] toCharArray();
将字符串转换成char数组。

18)String toLowerCase();
转换为小写。

19)String toUpperCase();
转换为大写。

20)String trim();
去除字符串前后空白。

21)String中只有一个方法是静态的,不需要new对象这个方法叫做valueOf
作用:将“非字符串”转换成“字符串”

二、StringBuffer/StringBuilder

1、StringBuffer/StringBuilder可以看做可变长度字符串;

2、StringBuffer/StringBuilder初始化容量16;

3、StringBuffer/StringBuilder是完成字符串拼接操作的,方法名:append();

5、频繁进行字符串拼接不建议使用“+”,因为会创建很多字符串对象,浪费空间;

4、StringBuffer是线程安全的,StringBuilder是非线程安全的。

如何优化StringBuffer的性能?

在创建StringBuffer的时候,预估计一下尽可能给定一个初始化容量,减少底层数组的扩容次数,以提高程序的执行效率。

三、八种基本数据类型对应的包装类

1、包装类存在有什么用?

方便编程。

2、八种包装类的类名是什么?

Byte
Short
Integer
Long
Float
Double
Boolean
Character

所有数字的父类为Number

3、什么是自动装箱和自动拆箱,代码怎么写?

自动装箱:基本数据类型自动转换成引用数据类型。

自动拆箱:引用数据类型自动转换成基本数据类型。

Integer x = 100; // x里面并不是保存100,保存的是100这个对象的内存地址。
Integer y = 100;
System.out.println(x == y); // true

Integer x = 128;
Integer y = 128;
System.out.println(x == y); // false

4、Integer类常用方法

Integer.valueOf()
Integer.parseInt("123")
Integer.parseInt("中文") : NumberFormatException

5、Integer String int三种类型互相转换

四、日期类

1、获取系统当前时间

Date d = new Date();

2、日期格式化:Date → String

yyyy-MM-dd HH:mm:ss SSS

SimpleDateFormat sdf = new SimpleDate("yyyy-MM-dd HH:mm:ss SSS");

String s = sdf.format(new Date());

3、日期格式化:String → Date

SimpleDateFormat sdf = new SimpleDate("yyyy-MM-dd HH:mm:ss");

Date d = sdf.parse("2008-08-08 08:08:08");

4、获取毫秒数:System.currentTimeMillis();

表示从北京时间1970-01-01 08:00:00到当前时间的毫秒数。

Date的另一个构造方法,利用毫秒数创建对象:new Date(毫秒数)

long begin = System.currentTimeMillis();

Date d = new Date(begin - 1000 * 60 * 60 * 24); // 获取昨天这个时候的时间

五、数字类

1、DecimalFormat数字格式化

###,###.## 表示加入千分位,保留两个小数。
###,###.0000 表示加入千分位,保留4个小数,不够补0

2、BigDecimal

财务软件中通常使用BigDecimal

六、随机数

1、怎么产生int类型随机数。

Random r = new Random();
int i = r.nextInt();

2、怎么产生某个范围之内的int类型随机数。

Random r = new Random();
int i = r.nextInt(101); // 产生[0-100]的随机数。

七、枚举

1、枚举是一种引用数据类型。
2、枚举编译之后也是class文件。
3、枚举类型怎么定义?
        enum 枚举类型名{
            枚举值,枚举值2,枚举值3
        }
4、当一个方法执行结果超过两种情况,并且是一枚一枚可以列举出来的时候,建议返回值类型设计为枚举类型。例如:颜色、四季、星期等都可以使用枚举类型。


public class EnumTest01 {
    public static void main(String[] args) {
        Season res = Season.SPRING;
        System.out.println(res);
    }
}
enum Season{
    SPRING, SUMMER, AUTUMN, WINTER;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值