常用类——Robyn编程学习(Java)
常用类
包装类的比较
Integer i1 = new Integer(127);
Integer i2 = new Integer(127);
System.out.println(i1 == i2);//F(因为是两个对象)
Integer i5 = 127;//底层 Integer.valueOf(127)
Integer i6 = 127;//-128~127
System.out.println(i5 == i6); //T(底层自动创建了对象,就不需要再创建对象了)
Integer i7 = 128;
Integer i8 = 128;
System.out.println(i7 == i8);//F(超过128就又是两个不同的对象了)
Integer i13=128;
int i14=128;
System.out.println(i13==i14);//T(只要有基本数据类型,都会自动装箱,判断的是值是否相同)
String类
String类的两种创建形式的区别

String a = "abc";
String b = "abc";
a.equals(b);T(值是否相同)
a == b;T(地址是否相同)
(因为指向的都是常量池中的字符串)
String a = new String("abc");
String b = new String("abc");
a.equals(b):true
a == b;False(因为两个对象地址不相同)
补充一下包装类的装箱方法
包装类赋值其实就是调用包装类的Valueof()方法,换句话说就是指装箱方法。
除了Float和Double两个数据类型外,其他数据类型都会缓存
具体数据类型的缓存范围可参考:
包装类的缓存特性
字符串的特性
String a = "hello";
String b = "abc";
String c = a + b;
//可以看到底层代码是创建了一个StringBuilder对象,然后再分别用append方法添加,最后创建了一个String对象输出(也就是说总共创建了3个对象)
重要规则:常量相加,看的是常量池中的相加,变量相加,看的是堆中的相加。
StringBuffer和StringBuilder
String与StringBuffer的区别就是String直接指向的是常量,因此更改就是更改地址,而StringBuffer指向的是堆中的对象,因此更改内容可以直接更改。
由于StringBuffer中有线程锁,因此没有StringBuilder效率高,但是如果是单线程的话,完全可以优先采用StringBuilder
日期类
第三代日期类的使用
LocalDateTime ldt = LocalDateTime.now(); //LocalDate.now();//LocalTime.now()
//构建一个字符串的格式
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
//字符串的格式拼接
String format = dateTimeFormatter.format(ldt);
System.out.println("年=" + ldt.getYear());
System.out.println("月=" + ldt.getMonth());
System.out.println("月=" + ldt.getMonthValue());
反转字符串
//方法2:拆分为字符串数组用索引替换
public static String reverse2(String str,int start,int end){
String s = "";
char temp =' ';
char[] str1 = str.toCharArray();
for (int i = start,j = end; i < j ; i++,j--) {//这里用了一个找规律的,也很奥妙,属于算法的雏形了
temp = str1[i];
str1[i] = str1[j];
str1[j] = temp;
System.out.println(str1[i]);
}
return new String(str1);
}
//方法1:用stingbulider类来做
public static String reverse(String str,int start,int end){
String s = "";
for (int i = start; i < end + 1; i++) {
s =str.charAt(i) + s;
}
StringBuilder stringBuilder = new StringBuilder(str);
StringBuilder replace = stringBuilder.replace(start, end + 1, s);
return replace.toString();;
}
一种方式是使用字符串转化为数组,然后找规律用指针替换,一种是直接包装为StringBuilder类,我认为这两种方法都比较适用。

浙公网安备 33010602011771号