Java常用类的API

   日期:2024-12-24    作者:czdytfhm4 浏览:72    移动:http://w.yusign.com/mobile/quote/4193.html
 
 

Java常用类的API

 

        这个方法用于数组之间的元素拷贝。既支持两个不同数组之间的元素拷贝,也支持同一个数组内部的元素拷贝。

        当是同一个数组内部的拷贝时

srcPos(原数组下标) > destPos(目标数组下标:代表元素左移,通常用于删除元素

srcPos(原数组下标) < destPos(目标数组下标:代表元素右移,通常用于插入元素

因为arraycopy这个方法是JDK1.0就有的,当时还没有Arrays工具类。Arrays工具类是后来

 
 
 

(1)定义学生类Student,包含属性:学号id,姓名name,成绩score

(2)定义矩形类Rectangle,包含属性:长length,宽width

(3)定义商品类Goods,包含属性:编号id,名称name,价格price

(4)分别定义

* 学生对象数组,按照id升序排列
* 矩形对象数组,按照面积降序排列
* 商品对象数组,按照价格升序排列

        Java官方提供了一个自然比较器接口:java.lang.Comparable接口,这个接口包含一个必须重写的抽象:int compareTo(Object obj),当某个类的对象需要比较大小或排序时,这个类就实现这个接口,重写这个抽象方法,在抽象方法中说明按照这个类的什么值进行比较大小或排序。

结论:如果要给对象数组排序,让对象的类实现Comparable接口,重写int compareTo(Object obj)方法即可,然后调用Arrays.sort方法排序。

 
 

        当要比较大小或要排序的对象的类已经实现了Comparable接口,也重写了int compareTo(Object obj)方法,仍然不能满足新的比较大小或排序的需求,就要重新找另一个接口,java.util.Comparator,称为定制比较器接口,或者备胎,它也有一个抽象方法:int compare(Object o1, Object o2).这个接口,需要我们单独编写类来实现它。

        如果某个类的对象要比较大小,或排序

首先,考虑这个对象的类本身实现Comparable接口,重写int compareTo(Object obj)方法

其次,如果有更多的比较大小的规则要求,那么就要单独编写类,实现Comparator接口,重写int compare(Object o1, Object o2)

无论哪个,都可以使用Arrays.sort方法进行排序

Arrays.sort(数组) 说明依赖于 Comparable接口的 compareTo方法

Arrays.sort(数组, Comparator接口的实现类对象)说明依赖于 Comparator接口的compare方法

 
 
 

1、String是final修饰的类,没有子类

2、String类的对象本身是不可变,我们称为常量对象

包装类、第3代的日期时间类、String类等的对象也是不可变的。

String类的对象的值如果发生修改,会返回新对象。

 

String类的对象底层是如何存储这一组字符的

* JDK9之前:String类的对象底层是用char[]来存储一组字符的
* JDK9(含)之后:String类的对象底层是用byte[]来存储一组字符的

*因为程序中大多数字符串是不包含中文等字符,只有英文、数字0-9等第字符组成,二这些字符的编码在0-127之间,用byte[]数组存储可以节约一半的空间。

String类的哪些设计,保证了字符串对象不可变

* 无论底层是char[]还是byte[],它们前面都有final修饰,意味着value的值不能修改。这里限制了value不能指向新数组,那么意味着value不能扩容,缩容等操作。
* value前面有private修饰,意味着在String的外面无法直接访问value数组,如果没有get/set的话,只能在String类的内部访问或操作value数组。所以在String的外面,我们无法直接修改value的元素值。
* 在String的所有方法中,凡是涉及到修改字符串的内容的方法,都会返回新对象。

字符串对象被设计为不可变,有什么好处

可以共享字符串常量对象。

所有字符串对象都会被共享吗

* 直接双引号引起来的字符串常量对象
* 调用intern()的结果得到字符串是可以共享的
* 两个""直接引起来的字符串对象的+拼接结果也是可以被共享

 
 

3.2.1 系列1

 

3.2.2 系列2

 

GBK 只支持中文字符和ASCii码范围内的字符

UTF-8 支持全世界所有国家的常见字符和ASCii码范围内的字符,文件,网络,数据库都支持

UTF-16 JVM内部使用

3.2.3 系列3

 

3.2.4 系列4

支持正则的方法

* matches:判断字符串是否满足xx规则
* split:对字符串进行拆分
* replaceAll:替换满足正则的所有字符
* replaceFirst:替换满足正则的第一个字符

正则表达式:是文本的规则的定义。

本文地址:http://w.yusign.com/quote/4193.html    述古往 http://w.yusign.com/static/ , 查看更多

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关行情
推荐行情
点击排行
{
网站首页  |  关于我们  |  联系方式  |  用户协议  |  隐私政策  |  版权声明  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号