Java高级阶段技术总结

String字符串

String 是一个类,属于引用类型。
Java 程序中一切使用 "" 引起来的内容,都是这个类的实例,称为字符串对象。
字符串定义后是一个常量 ,值不可更改。字符串 实际是一个字符数组
String str="hello";//这句话在执行时,创建一个hello字符串对象,将其地址保存在str变量中
str="abc";//这里看似是在改变字符串的值,实际是又创建了一个字符串对象abc,将其地址保存在str变 量中
//以上两句话,在内存中会有两个字符串对象hello和abc,str只引用最后赋值的字符串地址abc

String str2="abc";
//字符串实际是一个字符数组
char[] list = {'a','b','c'};
String str3= new String(list);
//这里str2和str3中保存的内容是一样的

可变字符串

String 字符串对象是一个常量,在定义后其值不可改变。
如果使用 String 类的对象,对其频繁更新时,就会不停地创建新的对象,重新引用。
所以如果要执行 1000 次重新赋值的过程,就要创建 1000 个字符串对象,花费很多时间和内存空间,所以
效率很低。这时就需要使用可变字符串类
import java.math.BigDecimal; 
import java.util.Random;
import java.util.zip.DeflaterOutputStream;


/** 可变字符串 * */
public class Test1 { 
public static void main(String[] args) {
//定义一个空的可变字符串对象
StringBuilder sb = new StringBuilder();
//定义一个普通字符串对象
String str = "";

//1970 1 1 0:0:0 到当前这个瞬间,经过了多少毫秒。记录开始时间
long begin = System.currentTimeMillis();
//模拟循环多次频繁操作字符串,记录花费的时间
for (int i = 1000000; i > 0; i--) {
//如果使用字符串,每次循环都会创建一个新的String字符串对象,重写引用给str,需要 花费大量时间 
// str+=i; 
//如果使用可变字符串,只有一个对象sb参与,每次都在操作这个对象,不创建新对象,很快 就能结束
sb.append(i); 
}
//记录结束时间
long end = System.currentTimeMillis();
System.out.println(end - begin);
} 
}

StringBuilder

用于表示可变字符串的一个类,是 非线程安全 的,建议在单线程环境下使用,效率略高于
StringBuffer

StringBuffer

用于表示可变字符串的一个类,是 线程安全 的,建议在多线程环境下使用,效率略低于 StringBuilder
StringBuilder StringBuffer 中的方法作用都一致,只不过 StringBuffer 中的方法使用了 synchronized
键字修饰,表示一个同步方法,在多线程环境下不会出现问题。

Date

用于表示日期时间的类,位于 java.util 包下

SimpleDateFormat

是一个用于格式化日期的类。
//参数为一个日期模板 
SimpleDateFormat(String pattern);
//如定义这样的一个模板对象 
SimpleDateFormat sdf=new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
//创建一个Date对象 
Date now = new Date(); 
//调用格式化方法,参数为一个Date对象 
String res=sdf.formart(now); 
//输出的形式为2022/07/28 
System.out.println(res);

Calendar

用于表示日历的类。包含了很多日历相关的信息。
是一个抽象类,无法直接创建对象,可以通过该类的 静态方法 getInstance() 获取该类的实例

异常

当程序没有按程序员的意愿正常执行,中途出错导致程序中断,出现这种情况,就称为异常。
学习异常就是认识异常的种类和如何避免异常出现。
为了让程序能正常执行,就需要学会解决异常。

异常的产生

异常在程序中以对象的形式存在。当代码执行时出现异常,虚拟机会自动创建一个相应的 异常对象 ,如
果没有对该异常进行处理,就会导致程序中断。

异常的分类

异常在程序中以对象的形式存在,所以异常有对应的类。

数组与集合

数组的特点

数组中保存的元素都是有序的,可以通过下标快速访问
数组中保存的数据都是同一种类型
数组的长度在定义后,无法改变
数组无法获取其中保存的实际元素数量

集合的特点

能保存一组数据,可以有序也可以无序
集合的容量可变
集合中可以保存不同类型的数据
可以获取集合中实际的元素数量

ArrayListLinkedList的区别

1.两者都是 List 接口的实现类,保存的元素有序可重复,允许保存 null ,拥有一些公共的方法,如
size() isEmpty() subList(int from,int to)
2。ArrayList 采用数组实现,对于随机读取效率更高,通常用于查询; LinkedList 采用双向链表实现,
插入删除不影响其他元素位置,通常用于中间插入删除。

Set接口(无序不重复)

无序集合,元素不可以重复,允许保存 null ,没有索引。
在接口中定义了一些操作元素的方法,如获取元素数量、添加、删除、替换、截取等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值