java复习_常用类

一. String和其他类

String类介绍:

1.String 声明为 final,不可以被继承。
2.String 实现了 Comparable 接口,可以比较大小。
3.String 实现了 Serizable 接口,字符串是序列化的。
4.String 定义了 fina l类型的 char[ ] value 用于存储字符串数据。
5.string 具有不可变性。
例:当字符串进行重新赋值、修改字符或其他操作,都会在内存中重新开辟一块空间,不会对原 value 进行修改。
6.字符串的常量池中不会存储相同内容。

String实例化的方式:

可以使用 new 的方式,也可以使用字面量的方式。

使用字面量方式,数据会声明在方法区中,使用 new 的方式,在堆空间中保存数据的地址值。

1.常量与常量相连接,结果在常量池,并且不会出现相同内容。
2.只要其中一方为变量,结果就在堆中。
3.拼接时调用 intern() 方法,返回值就会在常量池。

数据类型之间的转换

1.String 转换为基本数据类型 包装类,调用包装类的静态方法:parseXXX(str)
2.基本数据类型包装转换为 String,调用 String 重载的valueOf(xxx) 或 xx+" "

3.String 转换为 char[ ] ,调用 toCharArray()
4.char[ ] 转换为 String, 调用 String构造器

5.String 转换为 byte[ ] , getBytes[ ]
6.byte 转换为 String,调用 String 构造器

7.String 转换为 StringBuffer 或 StringBuilder , 调用 StringBuffer 或 StringBuilder 的构造器
8.StringBuffer 或 StringBulider 转换为 String ,调用 String 构造器或 toString() 方法 。

StringBuffer StringBuilder

StringBuffer StringBuiilder 和 String的区别:

String:不可变的字符序列。
StringBuffer:可变的字符序列,线程安全但效率低。
StringBuilder:可变的字符序列,(JDk 5.0 后)线程不安全但效率高。
相同点:底层使用的都是 char[ ] 数组。

Stringbuffer 和 StringBuilder 的扩容:底层数组存不下,就需要进行扩容,默认情况下扩大到默认容量的2倍+2,同时将原有数据复制到其中。
开发过程中建议设定好容量,避免后期扩充容量,产生资源浪费。

常用方法

增:append(xxx);
删:delete(int start,int end);
改:replace(int start , int end , xx);
查:charAt(int xx);
插:insert(int xx , xxx);
长度:length();

二:时间日期类

1.System.currtentTimeMillis(); 返回当前时间和1970.1.1 0:0:0 之间的时间毫秒差。

2.util 下的 Date类:Date()空参的对应当前时间 Date 对象。
Date(Long) 指毫秒数的 Date 对象。
方法:toString() 显示当前的年、月、日等等。
getTime() 当前Date对象对应的毫秒值。

3.SimpleTimeFormat:使用默认构造器对其实例化
format() 方法 对Date类进行格式化(Date---->字符串)
parse() 方法 解析(字符串---->Date)

还可以使用SimpleDateFormat带参的构造器,按照指定的方式进行格式化或解析,方法同上。

4.Calendar日历类(抽象类)的使用
1.实例化:
一:创建子类(GregorianCanlendar)的对象。
二:调用其静态方法getInstance()。

2.常用方法:
get(xx) 获取指定 年/月/周 的某一天。
set(xx) 修改指定 年/月/周 的某一天。(可变性)
add() 在指定 年/月/周 的某一天加或减几天。
getTime() 日历类 -----> Date
setTime() Date -----> 日历类

JDK 8的日期时间API:

一.LocalDate LocalTime LocalDateTime类
1.LocalDateTime相较于其它两个使用频率更高
2.类似于Calend类
常用方法:
now() 获取当前时间 日期 或 时间+日期
of() 设置指定的年 月 日 时 分 秒 没有偏移量
getxxx() 获取年月日相关内容
with() 修改相关内容 具有不可变性。
plus() 对相关内容相加
minus() 对相关内容进行相减

二.Instant 瞬时点
1.时间上的一个瞬时点
2.类似于Date类
3.方法:
ofEpochMilli() 通过毫秒数,获取Instant实例
now() 获取子午线对应的标准时间
atOffset() 添加时间偏移量
toEpochMilli() 获取毫秒数

三.DateTimeForMatter :
1.格式化或解析日期、时间
2.类似于SimpleDateFormat
3.有三种格式:
一.标准格式:
ISO_DATE_TIME; ISO_Local_DATE; ISO_Local_TIME;

二.本地化相关格式:
ofLocalizedDate; ofLocalizedDateTime; ofLocalizedDateTime;

四.自定义格式:ofPattern
方法:格式化:format
解析:parse

JDk8 之前日期时间Api存在的问题:
可变性:日期时间这样的类应该是不可变的。
偏移性:Date中的年份是从1990年开始的,而月份都在0开始。
格式化:SimpleDateFormat只对Date使用,Calendar不行。
另外他们的线程不是安全的,不能处理闰秒。

三.Comparable 和 Comparator 比较器

Comparable接口:自然排序

1.Sring、包装类都实现了此接口,重写了compareTo(obj)方法,给出了比较两个对象大小的方式。
2.重写了compareTo() 方法以后,进行了从小到大的排列。
3.重写CompareTo(obj) 规则:
如果当前对象的this大于形参对象的obj,返回正整数。
如果当前对象的this小于形参对象的obj,返回负整数。
如果当前对象的this等于形参对象的obj,返回零。
4.自定义类如果需要排序,可以让自定义类实现Comparable接口,重写Comparable接口,在compareTo() 方法中指明如何排序。

compareTo(obj):Comparable接口必须通过实现该方法,来比较两个对象的大小。
对于自定义类,如果需要进行排序,可以实现此接口,并重写compareTo() 方法

Comparator接口:定制排序

1.当类或对象没有实现Comparable接口,又不方便修改代码时,就可以使用此Comparatro来排序。
2.重写compare(Object o1,Object o2)方法,比较o1 和 o2 的大小。
o1大于o2,返回正整数
o1等于o2,返回0
o1小于o2,返回负整数

3.Comparable 和 Comparetor 对比:
Comparable接口被实现后,此类对象在任何位置都可以掉用compareTo方法。
Comparetor接口,相当于临时性的进行比较。

四.System类

1.System类代表系统,系统的很多属性和控制方法都放在该类。
2. 此类的构造器是private 的,所以无法创建对象进行实例化。但他的方法都是静态的所以可以很方便的进行调用。
3. 方法:
currentTimeMillis() 获取当前时间和GMT时间1970年1月1号0时0分毫秒数的差。
exit() 可以在图形界面编程中退出程序。
gc() 调用垃圾回收器。
getProperty(String key) 获取属性值为Key的对应值。

五. Math类

Math类提供了一系列的用于科学计算的静态方法,其方法和返回值一般为double型。
BigInteger:表示不可变的任意精度的整数。
Bigdecimal:用于数字精度要求较高的运算。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值