目录
【一】String类、StringBuilder、StringBuffer
String str=”hello” 和String str= new String(“hello”)的区别
String,StringBuilder,StringBuffer三者的区别
常见API注意点
【一】String类、StringBuilder、StringBuffer
-
String类
String(String original):把字符串数据封装成字符串对象
String(char[] value):把字符数组的数据封装成字符串对象
String(char[] value, int index, int count):把字符数组中的一部分数据封装成字符串对象
-
String str=”hello” 和String str= new String(“hello”)的区别
String str = “hello”;这个是直接在方法区中的常量池中直接开辟空间,存放数据,将空间的地址返回给str
String str = new String(“hello”);这个是先在堆内存中申请一个内存,在将“hello”数据存放在方法区中的常量池中
整个流程如下图
String str = "hello";
String str2 = new String("hello");
str==str2 (结果为false)
==是直接比较的两个对象地址
str指向的地址为方法区中常量池中的地址,而str2是指向java堆中为new String ()开辟的一段地址
-
比较方法=
如果比较的是基本数据类型,==是比较的数据值
如果比较的是应用数据类型,==是比较的地址值
-
StringBuilder
是一个可变的字符串。字符串缓冲区类。
String和StringBuilder的区别:String的内容是固定的,StringBuilder的内容是可变的
由于执行字符串的拼接过程,是需要在方法区中的常量池中再定义一个变量,在将新的变量地址赋给它,所有就会产生一些垃圾数据,所以要出现StringBuilder
-
StringBuilder的常见的方法
A:构造方法:
StringBuilder()
B:成员方法:
public int capacity():返回当前容量 (理论值)
public int length():返回长度(已经存储的字符个数)
public StringBuilder append(任意类型):添加数据,并返回自身对象
public StringBuilder reverse():反转功能
1. 首先说运行速度,或者说是执行速度,在这方面运行速度快慢为:StringBuilder > StringBuffer > String
2. 再来说线程安全在线程安全上,StringBuilder是线程不安全的,而StringBuffer是线程安全的
3. 如果一个StringBuffer对象在字符串缓冲区被多个线程使用时,StringBuffer中很多方法可
以带有synchronized关键字,所以可以保证线程是安全的,但StringBuilder的方法则没有该关键字,
所以不能保证线程安全,有可能会出现一些错误的操作。所以如果要进行的操作是多线程的,
那么就要使用StringBuffer,但是在单线程的情况下,还是建议使用速度比较快的StringBuilder
-
各自的用处
String:适用于少量的字符串操作的情况
StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况
StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况
【二】Number & Math
-
包装类
-
Math
Java 的 Math 包含了用于执行基本数学运算的属性和方法,如初等指数、对数、平方根和三角函数。
Math 的方法都被定义为 static 形式,通过 Math 类可以在主函数中直接调用。
【三】Character
Character 类用于对单个字符进行操作。
Character 类在对象中包装一个基本类型 char 的值
【四】Arrays 类
【五】日期时间
-
Date
java.util 包提供了 Date 类来封装当前的日期和时间。 Date 类提供两个构造函数来实例化 Date 对象。
第一个构造函数使用当前日期和时间来初始化对象。
public class DateDemo {
public static void main(String args[]) {
// 初始化 Date 对象
Date date = new Date();
// 使用 toString() 函数显示日期时间
System.out.println(date.toString());
}
}
-
SimpleDateFormat 格式化日期
import java.util.*;
import java.text.*;
public class DateDemo {
public static void main(String args[]) {
Date dNow = new Date( );
SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd hh:mm:ss");
System.out.println("当前时间为: " + ft.format(dNow));
}
}
-
Calender