java基础之API与String复习总结,期末面试必会。

发布时间:2024年01月14日

常用API

Math类:1)abs 2)ceil 3)floor 4)round

5)max 6)min 7)random

java.util.Date

Date类: Date对象记录的时间是用毫秒值来表示的。Java语言规定,1970年1月1日0时0分0秒认为是时间的起点,此时记作0,那么1000(1秒=1000毫秒)就表示1970年1月1日0时0分1秒,依次类推。

注:由于我们处于东八区,所以我们的基准时间为1970年1月1日8时0分0秒。(java会自动计算出东八区的时间)

Date默认获取当前时间,格式 Fri Jan 12 11:45:47 CST 2024

getTime 获取时间戳 setTime 通过时间戳重置时间

java.time.LocalDate怎么用?

DateFormat类:

使用其实现类

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

sdf.format(Date|时间戳)

sdf.parse(指定格式时间字符串)

**Calendar日历类:**可以单独修改某一字段的信息

Canlendar now = Calendar.getInstance();
public static void main(String[] args) {
        //1.获取当前时间对应的日历类
        Calendar now = Calendar.getInstance();
        //这个now的输出看不懂,不能直接用。要处理。
        System.out.println(now);
        //获取日历中的某个信息
        int year = now.get(Calendar.YEAR);
        System.out.println(year);
        //这里0代表一月
        int month = now.get(Calendar.MONTH);
        System.out.println(month);
        int dayOfMonth = now.get(Calendar.DAY_OF_MONTH);
        System.out.println(dayOfMonth);
        //这里周日为1,周一为2
        int dayOfWork = now.get(Calendar.DAY_OF_WEEK);
        System.out.println(dayOfWork);
        //将其转为Date类型。
        Date time = now.getTime();
        System.out.println(time);

        //2.修改日历类中的某个信息
        now.set(Calendar.YEAR,2023);
        //将其转为Date类型输出
        System.out.println(now.getTime());

    }
    

运行结果:

image-20240112161629178

System类:

停止jvm运行:System.exit(0);

数组拷贝: System.arraycopy(五个参数)

包装类:

//手动装箱
int num = Integer.*valueOf*(3);
//自动装箱
Integer num1 = 3;
//手动拆箱
int num2  = num1.intValue();
//自动拆箱
int nmu3 = num2 +3;

字符串与基本数据类型的转换:

1)3+‘’ 2)integer.toString() 3)String.valueOf

字符串解析为基本类型:

Integer.parseInt(str);

String类:

endwith startwith

String常用方法(之前同学面试问到过):

1)length 2)concat 3)charAt 4)indexOf 5)subString 6)startWith 7)endWith 8)split

9)repalce 10)replaceAll(正则表达式) 11)toCharArray 12)getBytes 13) trim

String类的常量池:

字符串常量池是Java中用于存储字符串常量的一个特殊区域,它位于Java Heap内存中。在Java中,字符串是不可变的,即一旦创建就不能被修改。为了提高字符串的效率和节省内存,Java引入了字符串常量池的概念。

在字符串常量池中,相同内容的字符串常量(直接双引号写出来的字符串)被存储为同一个对象。这意味着如果你创建了两个相同内容的字符串常量,它们将引用同一个实际的String对象,而不是在内存中创建两个相同内容的副本。

img

由于String类的对象内容不可改变,所以每当进行字符串拼接时,总是会在内存中创建一个新的对象。

String str = ”a“ + “b” + “c”;语句的执行过程如下:

先在常量池保存abc三个字符串,然后拼接a和b字符串为ab,再将ab字符串存储。接着拼接ab和c,保存abc字符串。

img

由此可知,如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费空间。为了解决这一问题,可以使用java.lang.StringBuilder类。

面试题:

public class Test3 { 
public static void main(String[] args) { 
    String s1 = "abc"; 
	String s2 = "ab"; 
	String s3 = "ab" + "c"; 
	String s4 = s2 + "c"; 
	System.out.println(s1 == s3); 
	System.out.println(s1 == s4); 
	} 
} 

这段代码的输出结果为:

true
false

解析:s3由“ab”和“c”拼接后的“abc”是常量,放在常量池。s4由s2和“c”拼成,但是s2是字符串变量,不是常量,所以拼接后的结果不放在常量池,而是去new新的内存空间。

StringBuilder*类:

StringBuilder又称为可变字符序列,它是一个类似于 String 的字符串缓冲区,通过某些方法调用可以改变该序列的长度和内容。

原来StringBuilder是个字符串的缓冲区,即它是一个容器,容器中可以装很多字符串。并且能够对其中的字符串进行各种操作。

它的内部拥有一个数组用来存放字符串内容,进行字符串拼接时,直接在数组中加入新内容。StringBuilder会自动维护数组的扩容。原理如下图所示:(默认16字符空间,超过自动扩充)。

img

常用方法:

append:添加任意类型数据的字符串形式,并返回当前对象自身。

toString:通过toString方法,StringBuilder对象将会转换为不可变的String对象。

image-20240112150052992

正则表达式用处:

用于身份证,手机号,邮箱,账号,密码等内容的校验。

可以从一段文本中查找满足正则要求的内容。

目前较少使用,用到可借助GPT生成所需的正则表达式。

g方法,StringBuilder对象将会转换为不可变的String对象。

[外链图片转存中…(img-qVhOylsu-1705049913217)]

正则表达式用处:

用于身份证,手机号,邮箱,账号,密码等内容的校验。

可以从一段文本中查找满足正则要求的内容。

目前较少使用,用到可借助GPT生成所需的正则表达式。

文章来源:https://blog.csdn.net/m0_73450879/article/details/135557535
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。