String:适用于少量的字符串操作的情况
StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况
StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况
Character类方法
1.String创建的字符串在公共池上,通过new创建的String对象在堆上
⚠️String类的值是不可改变的,如果要进行修改,应该选择使用StringBuffer&StringBuilder类
修改String类机制:修改字符串str,JVM创建一个新字符串也叫str,把新值赋给新str。旧str由java垃圾回收机制(GC)回收掉。执行慢。
2.StringBuilder和StringBuffer类的对象能够多次被修改而且不产生新的对象
StringBuilder类和StringBuffer的不同区别于它不是线程安全的(不能同步访问)。
🤔StringBuffer很多方法是带有synchronized关键字的,所以线程安全。所以如果要进行的操作是多线程的话,要使用StringBuffer,StringBuilder有可能会出现错误操作。
但由于StringBuilder类相较于StringBuffer类有速度优势,多数情况下建议使用StringBuilder类。
StringBuffer方法
type
StringBuffer方法
3.Java数组:用来存储固定大小的同类型元素。
声明方式:
(1)dataType[] arrayRefVar = new datatype[arraySize];
(2)dataType[] arrayRefVar = {value0,value1,value2...};
//dataType arrayRefVar[]也可,但不建议使用,这种风格来自C/C++
数组访问:索引从0开始,到arr.length-1结束
4.多维数组:数组的数组
type[][] typeName = new type[typeLength1][typeLength2];
typeLength1:行数
typeLength2:列数
java.util.Arrays类所有方法都是静态的
⚠️数组作为参数传递是引用传递,可以修改数组(数据类型在堆中)的值(因为指向同一地址),但不能修改原来的引用的值
⚠️swap(a,b)后a和b的值不会改变,传入的只是swap方法的局部变量(形参)
5.日期格式初始化
SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
yyyy:年份 MM:月份 dd:日期 HH(24)/hh(12) :时 mm:分 ss:秒