Java_常用类
Posted 过往将来
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java_常用类相关的知识,希望对你有一定的参考价值。
文章目录
Java_字符串相关类
Java_String类
String的特性:
1.String类
:代表字符串。Java 程序中的所有字符串字面值(如"abc" )
都作为此类的实例实现
2. String
是一个final
类,代表不可变的字符序列
3. 字符串是常量,用双引号
表示,字符串的值在创建之后不能更改
4. String
对象的字符内容是存储在一个字符数组value[]
中的。
String对象的创建:
String str = "hello";
//本质上this.value = new char[0];
String s1 = new String();
//this.value = original.value;
String s2 = new String(String original);
//this.value = Arrays.copyOf(value, value.length);
String s3 = new String(char[] a);
String s4 = new String(char[] a,int startIndex,int count);
字符串常量存储在字符串常量池,目的是共享
字符串非常量对象存储在堆中
String str1 = “abc”;
与
String str2 = new String(“abc”);的区别
两个字符串拼接的情况:
- 常量与常量的拼接结果在常量池。且常量池中不会存在相同内容的常量。
- 两个字符串只要其中有一个是变量,结果就在堆中
- 如果拼接的结果调用
intern()方法
,返回值就在常量池中
Java_字符串使用陷阱
String s1 = "a";
在字符串常量池中创建了一个字面量为"a"
的字符串。String s1 = "a";s1 = s1 + "b";
实际上原来的“a”
字符串对象已经丢弃了,现在在堆空间中产生了一个字符串s1+"b"
(也就是"ab"
)。如果多次执行这些改变串内容的操作,会导致大量副本字符串对象存留在内存中,降低效率。如果这样的操作放到循环中,会极大影响程序的性能String s2 = "ab"
:直接在字符串常量池中创建一个字面量为"ab"的字符串。String s3 = "a" + "b";
s3指向字符串常量池中已经创建的"ab"的字符串。String s4 = s1.intern();
堆空间的s1
对象在调用intern()
之后,会将常量池中已经存在的"ab"
字符串赋值给s4
Java_string类常用方法
1.返回值int 类型 length()
:返回字符串的长度:return value.length
2. 返回值 char 类型
charAt(int index)
:返回某索引处的字符return value[index]
3. 返回值 boolean 类型`` isEmpty()
:判断是否是空字符串:return value.length == 0
4.返回值 String 类型
toLowerCase()
:使用默认语言环境,将String
中的所有字符转换为小写
4. 返回值String类型
toUpperCase()
:使用默认语言环境,将String
中的所有字符转换为大写
5. 返回值String类型
trim()
:返回字符串的副本,忽略前导空白和尾部空白
6. 返回值boolean类型
equals(Object obj)
:比较字符串的内容是否相同
7. 返回值boolean 类型`` equalsIgnoreCase(String anotherString)
:与equals
方法类似,忽略大小写
8. 返回值 String 类型
concat(String str)
:将指定字符串连接到此字符串的结尾。等价于用“+
”
9. 返回值int 类型``compareTo(String anotherString)
:比较两个字符串的大小
10. 返回值String 类型
substring(int beginIndex)
:返回一个新的字符串,它是此字符串的从beginIndex
开始截取到最后的一个子字符串。
11. 返回值 String substring(int beginIndex, int endIndex)
:返回一个新字符串,它是此字符串从beginIndex
开始截取到endIndex(不包含)
的一个子字符串。
12. 返回值类型 boolean
contains(CharSequence s)
:当且仅当此字符串包含指定的char
值序列时,返回true
13. 返回值类型 int
indexOf(String str)
:返回指定子字符串在此字符串中第一次出现处的索引
14. 返回值类型int
indexOf(String str, int fromIndex)
:返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始搜索
15. 返回值类型 int
lastIndexOf(String str)
:返回指定子字符串在此字符串中最右边出现处的索引
16. 返回值类型 int
lastIndexOf(String str, int fromIndex)
:返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索
注意:indexOf和lastIndexOf
方法如果未找到都是返回-1
17. 返回值类型 String replace(char oldChar, char newChar)
:返回一个新的字符串,它是通过用newChar
替换此字符串中出现的所有oldChar
得到的。
18. 返回值类型String
replace(CharSequence target, CharSequence replacement)
:使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串。
Java_StringBuffer类
java.lang.StringBuffer
代表可变的字符序列,JDK1.0中声明,可以对字符串内容进行增删,此时不会产生新的对象。StringBuffer
类不同于String
,其对象必须使用构造器生成,
StringBuffer类的三个构造器
StringBuffer()
:初始容量为16的字符串缓冲区StringBuffer(int size)
:构造指定容量的字符串缓冲区StringBuffer(String str)
:将内容初始化为指定字符串内容
String s = new String("我喜欢学习"); // 定义 s 的值以后,就不能被修改了
StringBuffer buffer = new StringBuffer("我喜欢学习"); // 还能被修改
buffer.append("数学"); // 此时 buffer 的变为 "我喜欢学习数学"
Java_StrigBuffer类常用方法
StringBuffer append(xxx)
:提供了的append()
方法,用于进行字符串拼接StringBuffer delete(int start,int end)
:删除指定位置的内容StringBuffer replace(int start, int end, String str)
:把[start,end)
位置替换为str
StringBuffer insert(int offset, xxx)
:在指定位置插入xxx
StringBuffer reverse()
:把当前字符序列逆转
注意:当append和insert时,如果原来value数组长度不够,可扩容。
Java_StringBuilder类
StringBuilder 和StringBuffer
非常类似,均代表可变的字符序列,而且提供相关功能的方法也一样
String,StringBuffer,StringBuilder之间的区别:
- String:是不可变的字符序列
- StringBuffer:可变字符序列,效率低,线程安全
- StringBuilder:可变字符序列,效率高,线程不安全
- 作为参数传递的话,方法内部String不会改变其值,StringBuffer和StringBuilder会改变其值
Java_日期时间API
Java_JDK8之前的日期时间API
java.lang.System类:
System
类提供的public static long currentTimeMillis()
用来返回当前时
间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差。
java.util.Date类: 表示特定的瞬间,精确到毫秒
java.util.Date类的构造器:
- Date():使用无参构造器创建的对象可以获取本地当前时间。
- Date(long date)
java.util.Date类的常用方法:
getTime()
:返回自1970 年1 月1 日00:00:00 GMT 以来此Date 对象
表示的毫秒数。- toString():把此Date 对象转换为以下形式的String:
dow mon dd hh:mm:ss zzz yyyy 其中:dow 是一周中的某一天(Sun, Mon, Tue, Wed, Thu, Fri, Sat),zzz是时间标准
package Java_9;
import java.util.Date;
public class Java_DateAPI {
public static void main(String[] args) {
Date date = new Date();
System.out.println(date);
System.out.println(System.currentTimeMillis());
System.out.println(date.getTime());
Date date1 = new Date(date.getTime());
System.out.println(date1.getTime());
System.out.println(date1.toString());
}
}
java.text.SimpleDateFormat类:
- Date类的API不易于国际化,大部分被废弃了,java.text.SimpleDateFormat类是一个不与语言环境有关的方式来格式化和解析日期的具体类
- java.text.SimpleDateFormat:允许进行格式化:日期到文本、解析:文本到日期
java.text.SimpleDateFormat的格式化:
SimpleDateFormat()
:默认的模式和语言环境创建对象public SimpleDateFormat(String pattern)
:该构造方法可以用参数pattern指定的格式创建一个对象,该对象调用public String format(Date date)
:方法格式化时间对象date
java.text.SimpleDateFormat的解析:
public Date parse(String source)
:从给定字符串的开始解析文本,以生成一个日期。
Date date = new Date(); // 产生一个Date实例
// 产生一个formater格式化的实例
SimpleDateFormat formater = new SimpleDateFormat();
System.out.println(formater.format(date));// 打印输出默认的格式
SimpleDateFormat formater2 = new SimpleDateFormat("yyyy年MM月dd日 EEE HH:mm:ss");
System.out.println(formater2.format(date));
try {
// 实例化一个指定的格式对象
Date date2 = formater2.parse("2008年08月08日 星期一 08:08:08");
// 将指定的日期解析后格式化按指定的格式输出
System.out.println(date2.toString());
} catch (ParseException e) {
e.printStackTrace();
}
Java_JDK8中新日期时间API
新时间日期API
java.time
– 包含值对象的基础包java.time.chrono
– 提供对不同的日历系统的访问java.time.format
– 格式化和解析时间和日期java.time.temporal
– 包括底层框架和扩展特性java.time.zone
– 包含时区支持的类
三个重要的类:LocalDate、LocalTime、LocalDateTime
LocalDate、LocalTime、LocalDateTime
类是其中较重要的几个类,它们的实例是不可变的对象,分别表示使用ISO-8601日历系统的日期、时间、日期和时间。它们提供了简单的本地日期或时间,并不包含当前的时间信息,也不包含与时区相关的信息。
LocalDate
代表ios格式(yyyy-MM-dd)
的日期,可以存储生日、纪念日等日期LocalTime
表示一个时间,而不是日期。LocalDateTime
是用来表示日期和时间的,这是一个最常用的类之一
补充:ISO-8601日历系统是国际标准化组织制定的现代公民的日期和时间的表示法,也就是公历。
比较重要的方法:
now() / * now(ZoneId zone)
:静态方法,根据当前时间创建对象/指定时区的对象of()
:静态方法,根据指定日期/时间创建对象getDayOfMonth()/getDayOfYear()
:获得月份天数(1-31) /获得年份天数(1-366)getDayOfWeek():
获得星期几getMonth():
获得月份, 返回一个Month值getMonthValue() / getYear()
:获得月份(1-12) /获得年份getHour()/getMinute()/getSecond()
:获得当前对象对应的小时、分钟、秒
格式化与解析日期或时间:
java.time.format.DateTimeFormatter
类:提供了三种格式化方法:预定义的标准格式,本地化相关的格式,自定义的格式
预定以的标准格式:ISO_LOCAL_DATE_TIME;ISO_LOCAL_DATE;ISO_LOCAL_TIME
本地化相关的格式:如:ofLocalizedDateTime(FormatStyle.LONG)
自定义的格式:如:ofPattern(“yyyy-MM-dd hh:mm:ss”)
java.time.format.DateTimeFormatter
类的方法:
ofPattern(String pattern)
: 静 态 方 法 , 返 回 一 个 指 定 字 符 串 格 式 的DateTimeFormatterformat(TemporalAccessor t)
:格式化一个日期、时间,返回字符串parse(CharSequence text)
:将指定格式的字符序列解析为一个日期、时间
以上是关于Java_常用类的主要内容,如果未能解决你的问题,请参考以下文章
编写高质量代码:改善Java程序的151个建议(第3章:类对象及方法___建议36~40)
elasticsearch代码片段,及工具类SearchEsUtil.java
Java语言Lang包下常用的工具类介绍_java - JAVA