一、字符串类
1.String类
String特性
- java中所有字符串面值(“abc”)都作为此类的实例对象。
- String是一个final类,代表不可变的字符序列。
- 字符串是常量,用双引号引起来表示。它的值在创建之后不能更改。
- String对象的字符内容是存储在一个字符数组value[]中。
public final class String
implements java.io.Serializable,Comparable<String>,CharSequence{
private final char value[];
private int hash;
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);
结论
- 常量与常量的拼接结果在常量池。且常量池中不会存在相同内容的常量
- 只要其中有一个是常量,结果就在堆中
- 如果拼接的结果调用intern()方法,返回值就在常量池中
方法
- trim() :返回字符串的副本,忽略前导空白和尾部空白
- equalsIgnoreCase(String anotherString):与equals方法类似,忽略大小写
- concat(String str):将指定字符串连接到此字符串的结尾,“+”
- substring(int beginIndex,int endIndex):返回新字符串,从beginIndex开始截取到endIndex(不包含)的一个子字符串
- endswith、startsWith:是否以指定str开始或结束
- startsWith(String prefix,int toffset):测试此字符串从指定索引开始的子字符串是否已指定前缀开始
- indexOf(String str,int fromIndex):返回str从指定索引开始第一次出现的索引位置
- replace(oldChar,newChar):返回新的字符串,是用newChar替换所有oldChar
- String[] split(regex,limit):根据正则表达式来拆分字符串,最多不超过limit
String->基本数据类型转换
- 字符串->基本、包装类:Xxx.parseXxx(String s)
- 基本、包装类->String:String.valueOf(xxx n)
字符数组、字符串
- 字符数组->字符串:String(char[])和String(char[],int offset,int length)
- 字符串->字符数组:char[] toCharArray(),getChars(int srcBegin,int srcEnd,char[] dst,int dstBegin):指定索引范围内字符串存放到数组
字符串与字节数组 类似以上!
2.StringBuffer类
java.lang.StringBuffer
- 可变的字符序列。对字符串内容进行增删,不会产生新对象。
- 方法与String类似
- 作为参数传递时,方法内部可以改变值
AbstractStringBuilder
StringBuffer
StringBuilder
三个构造器
- StringBuffer():初始容量为16的字符串缓冲区
- StringBuffer(int size):构造指定容量的字符串缓冲区
- StringBuffer(String str):将内容初始化为指定字符串内容
常用方法
- append:拼接
- delete(start,end):删除指定位置的内容
- replace(start,end,str):把指定位置替换为str
- insert(offset,xxx):在指定位置插入xxx
- reverse():当前字符序列逆转
- indexOf、substring、length、charAt、setCharAt
3.StringBuilder类
StringBuilder和StringBuffer类似
String、StringBuild、StringBuffer区别
- String(jdk1.0):不可变字符序列
- StringBuffer(jdk1.0):可变字符系列、效率低、线程安全
- StringBuilder(jdk5.0):可变字符序列、效率高、线程不安全
作为参数传递,方法内部String不会改变值,其他两个会改变值
二、时间类
1.java.lang.System类System类提供的long currentTimeMillis()用来返回当前时间与1970.1.1.0:0:0之间的毫秒差值
UTC、GMT、CST
2.时间类
3.java.util.Date类
表示特定的瞬间,精确到毫秒
构造器
- Date():获取本地时间
- Date(long date)
常用方法
- getTime():返回自1970.1.1 0:0:0GMT以来此Date对象表示的毫秒数
- toString():把此Date对象转换为一下String
4.java.text.SimpleDateFormat类
java.text.SimpleDateFormat类是一个不与语言环境有关的方式来格式化和解析日期的具体类。
允许进行格式化:日期->文本、解析:文本->日期
格式化
- SimpleDateFormat():默认的模式和语言环境创建对象
- SimpleDateFormat(String pattern):用pattern指定格式创建对象。
- String format(Date date):方法格式化时间对象date
解析
public Date parse(String source):从给定字符串开始解析文本,来生成一个日期
5.java.util.Calendar(日历)类
Calendar是一个抽象基类,主要用于完成日期字段之间相互操作的功能
获取实例
- Calendar.getInstance()方法
- 调用子类GregorianCalendar的构造器
Calendar的实例是系统时间的抽象表示,通过get(int field)方法来取得想要的时间信息。如:YEAR、MONTH、DAY_OF_WEEK、HOUR_OF_DAY、MINUTE、SECOND
- set、add、Date getTime、setTime
注意
- 获取月份:一月是0…12月是11,以此类推
- 获取星期:周日是1…周六是7
6.JDK8中新日期时间API
java8吸收了Joda-Time的精华,新的time中包含:LocalDate、LocalTime、LocalDateTime、ZonedDateTime、Duration的类
新时间日期API
- java.time:包含值对象的基础包
- java.time.chrono:提供不同日历系统的访问
- java.time.format:格式化和解析时间日期
- java.time.temporal:包含底层框架和扩展特性
- java.time.zone:包含时区支持的类
Instant:瞬时
三、Java比较器
对象的排序就需要自定义
1.Compareable自然排序
Comparable接口强行对实现它的每个类的对象进行整体排序。这种排序称为类的自然排序
- 实现Comparable的类必须实现compareTo(Object obj)方法,两个对象即通过compareTo(Object obj)的返回值来比较大小。
- 如果对象this大于形参obj。则返回正整数,反之。相等则为0。
- 对于列列表、数组,通过Collections.sort或Arrays.sort进行自然排序。
典型实现
String、Character、BigInteger、BigDecimal、Boolean、Date、Time
2.Compareator定制排序
定制排序java.util.Comparator
- 没有实现Comparable接口而又不方便修改代码,使用Comparator对象。
- 使用Comparator对象,重写compare(Object obj1,Object obj2),比较obj1和obj2大小:obj1大于obj2返回正整数,反之。相等返回0
- 可以将Comparator传递给sort方法(Collections.sort和Arrays.sort)
- 来控制某些数据结构的顺序或为那些没有自然顺序的对象collection提供排序。
四、System类
system是系统类
java.lang.Sysytem
- 该类构造器是private,所以其方法属性都为static。
- 成员变量:in、out、err:输入、输出、标准错误输出流
- 成员方法:native long currentTimeMillis():返回当前计算机时间。自1970年1月1日所差毫秒数
- void exit(int status):退出程序,status为0为正常退出
- void gc():请求系统进行垃圾回收。是否回收不确定
- String getProperty(String key):获取系统属性名为key的值,key:
java.version:java运行环境版本
java.home:java安装目录
os.name:操作系统名
os.version:操作系统版本
user.name:用户账户名称
user.home:用户主目录
user.dir:用户当前工作目录
五、Math类
Java.lang.Math提供静态方法用于科学计算;返回一般是double
- abs绝对值
- acos,asin,atan,cos,sin,tan三角函数
- sqrt平方根
- pow(double a,double b)a的b次幂
- log自然对数
- exp e为底数
- max(double a,double b)
- min(double a,double b)
- random()返回0.0到1.0随机数
- long round(double a)double数据a转换为long型(四舍五入)
- toDegrees(double angrad)弧度->角度
- toRadians(double angdeg)角度->弧度
六、BigInteger与BigDecimal
BigInteger与BigDecimal
1.BIgInteger
java.math包下的BigInteger可以表示不可变的任意精度的整数
Long是2 的63次方-1
- 保留所有基本整数操作的对应物,提供math的所有相关方法,提供:模运算,GCD计算、质数测试、素数生成、位操作。
构造器
BigInteger(String val):根据字符串构建BigInteger对象
2.BigDecimal
商业计算中,要求数字精度高,故用java.math.BigDecimal类
- BigDecimal类支持不可变的、任意精度的有符号十进制定点数
构造器
- public BigDecimal(double val)
- public BigDecimal(String val)
常用方法
- add
- subtract
- multiply
- divide
知识图谱
在线查看:java常用API
私信获取知识图谱!