java.util.Arrays类

用于操作数组工具类,里面定义了常见操作数组的静态方法。

equals 方法

比较两个非同一数组是否相等,而数组本身的equals判断另一个数组是否它本身。

● 声明:public static boolean equals(type[]a,type[]a2)

● 参数的类型可以是原生数据类型引用类型的任意一种类型。

● 返回:如果两个相等,则返回true,否则返回false

public class ArraysDemo1 {public static void main(String[] args) {int []a={1,5,3,4,2,8};int []b={2,4,1,6,7,8,4};int []a1={1,3,5,4,2,8};//比较数组中的内容System.out.println(Arrays.equals(a,b));//数组中的元素进行排序Arrays.sort(a,0,3);//重写System.out.println(Arrays.toString(a));}
}

当我们创建一个对象(new Object)时,就会调用对象的构造函数来开辟空间,将对象数据存储到堆内存中,然后再在栈内存中生成相对应的引用,在后面使用创建的对象名进行函数的调用时用的都是栈内存中引用的对象。还需注意的一点,基本数据类型是存储在栈内存中。基础数据类型使用==进行比较

equals与==的区别

==是判断两个变量或实例是不是指向同一个内存空间,equals是判断两个变量或实例所指向的内存空间的值是不是相同

==是指对内存地址进行比较 , equals()是对字符串的内容进行比较(重写过后的equals,没重写前的equals方法返回的依然是地址比较(==))

==指引用是否相同(地址是否相同), equals()指的是是否相同

有两种数据类型:基本数据类型和引用数据类型,基本数据类型在栈中数据存放在栈内存中,引用数据类型数据存放在堆内存中。

public class Week1 {public static void main(String[] args) {int a=10;int b=10;//int类型为基础数据类型,因此直接在栈内存中调用,a和b指向的都是同一地址。System.out.println(a==b);Cat c1=new Cat("小黑",3);Cat c2=new Cat("小黑",3);Cat c3=c2;//Cat类中还未重写equals(),那么调用Cat类继承的Object类//在Object类中默认equals方法返回的是“c1==c2”所以返回的是false//虽然类中的内容相同,但仍然返回false/*public boolean equals(Object obj){return (this==obj);}*/System.out.println(c1.equals(c2));//指向的地址相同System.out.println(c2.equals(c3));/*字符串类中重写了Object类的equals() 实现是比较两个字符串中每一个字母是否相等所以一般默认为equals()方法比较的是对象中内容是否相等*/String s1 =new String("abc");String s2 =new String("abc");System.out.println(s1.equals(s2));}
}

compareTo()方法

1.返回参与比较的前后两个字符串的asc码的差值,若这两个字符串的首字母的asc码值不同,那么此方法返回的就是首字母的asc码的差值。

2.如果两个字符串不一样长,可参与比较的字符又完全一样,则返回两个字符串的长度差值

3.如果参与比较的两个字符串首字符相同,就会比较下一个字符,直到有不同的为止,返回此不同的字符的asc码的差值。

4.返回值为正数表示a1>a2,返回为负数表示a1<a2,返回值为0表示相等(因此可以通过compareTo()方法和sort()方法进行排序)

5.数字类型不需要使用comparaTo,int与int的比较不能用compareTo方法,直接用大于(>),小于(>)或者等于和不等于来比较即可。(在自定义的类中重写comparaTo方法,若传入参数为int类型,也可以进行排序)

public class test {public static voidmain(String[] args) {Bank bank1=new Bank("123",4,"xie");Bank bank2=new Bank("234",7,"xie");System.out.println(bank1.compareTo(bank2));//若直接进行对象的比较直接调用实现过的方法System.out.println(bank1.getName().compareTo(bank2.getName()));//直接使用compareTo方法进行比较}
}

Comparable接口的实现与使用

Comparable接口的用法在Arrays类中,就一个,Arrays.sort()方法(进行对象数组的排序)

在自定义的类中实现了Comparable接口。

重写comparaTo()方法时,如果比较的元素类型是int类型,那么就直接相减就可以了,其他的类型可以使用comparaTo()方法来应用。

//泛化,实现比较的接口
public class Bank implements Comparable<Bank> {private String count;private int id;private String name;public Bank(String count,int id,String name){this.count=count;this.id=id;this.name=name;}/*为我们的引用类型提供一个自定义排序规则,方法会在Arrays类中的sort()方法底层调用结果是用来判断大小  小于0  等于0  大于0*/@Overridepublic int compareTo(Bank o) {return this.count.compareTo(o.count);}}
public class ArraysDemo2 {public static void main(String[] args) {Bank b1=new Bank("12345",1,"xie");Bank b2=new Bank("23456",2,"wen");Bank b3=new Bank("34567",3,"xuan");Bank b4=new Bank("56789",4,"xiewen");Bank [] banks=new Bank[]{b1,b3,b2,b4};Arrays.sort(banks);//在原数组上进行比较,也可以b1.compareTo(b2)进行比较System.out.println(Arrays.toString(banks));}}

sort()方法

对数组中的元素进行排序

public class ArraysDemo1 {public static void main(String[] args) {int []a={1,5,3,4,2,8};int []b={2,4,1,6,7,8,4};int []a1={1,3,5,4,2,8};//数组中的元素进行排序Arrays.sort(a,0,3);//重写System.out.println(Arrays.toString(a));}
}

toString()方法

toString()方法返回反映这个对象的字符串

调用时使用Arrays.toString()方法,常用方法为将数组转化为字符串

public class Demo{  public static void main(String[] args){        String[] arrs=new String[]{"a","b","c","d","e"}; //若直接输出数组       System.out.println(arrs);//输出的为数组的首地址       System.out.println(Arrays.toString(arrs));//输出的是字符串  }}

当然也可以通过重写tostring()方法来输出链表等结构的内容(由字符串形式)

copyOf()方法

copyOf()方法向方法传入一个数组为原数组,将原数组的值赋给新数组,可以赋给新数组一个新的长度,返回的为一个新数组。

public class Demo{public static void mian(String[] args){int[] a={1,2,3,4,5};int[] b=Arrays.copyOf(a,10);System.out.println(Arrays.toString(b));}
}

binarySearch()方法

二分查找法(折半查找) 前提:有序的

public class Demo{
public static void mian(String[] args){        //有序数组        int[] a={1,2,3,4,5,6,7};        //无序数组       int[] b={2,1,4,5,3,5,6};        //无序数组需要先排序后,再使用binarySearch()方法,若不使用sort()方法,无序使用binarySearch()方法,可能会返回负数        Arrays.sort(b);//进行元素排序,不需要重写compareTo()方法         System.out.println(Arrays.binarySearch(b,3));//返回值为2         System.out.println(Arrays.binarySearch(a,3));//返回值为2         System.out.println(Arrays.binarySearch(a,0,4,3));//返回值为2
//若找到返回元素位置,若未找到,return -(low + 1);   }}

API常用类之Arrays类相关推荐

  1. Java基础:ArrayList类和Arrays类

    ArrayList类 ArrayList类 ArrayList类的意义 ArrayList使用步骤 ArrayList类的常用方法 ArrayList如何存储基本数据类型 Arrays类 Arrays ...

  2. JavaSE(八)——StringBuffer类、Arrays类、数组排序

    文章目录 1. StringBuffer类 1.1 定义 1.2 StringBuffer类与String类的区别 1.3 功能 1.4 String类和StringBuffer类的相互转换 2. 数 ...

  3. 常用API-3(System类、Math类、Arrays类、正则表达式)

    1.Syetem java.lang包中,被final修饰,不可被继承. 代表程序所在系统,提供了对应的一些系统属性信息和系统操作. 不可手动创建System类的对象(因为构造函数被private修饰 ...

  4. java中Arrays类和Math类常用API简介

    Arrays类: java.util.Arrays是一个与数组相关的工具类,提供了许多静态方法对数组进行操作,直接通过类点出来使用,无需创建对象. // 1.Arrays类存在与java.util下, ...

  5. java中常用API、Scanner类、匿名对象、Random类、ArrayList类、对象数组

    java中常用API: API:Application Programming Interface,应用程序编程接口.Java API是JDK中提供给我们使用的类的说明文档.这些类将底层的代码实现封装 ...

  6. Java基础---常用类之Arrays工具类+基本类型的包装类

    常用类之Arrays工具类 1.binarySearch(int[] a,int key) 使用二分搜索法来搜索指定的 int 型数组 2.fill(int[] a,int val)将指定的 int ...

  7. 常用类 (一) ----- Arrays数组工具类

    相关文章: <常用类 (一) ----- Arrays数组工具类> <常用类 (二) ----- Math类> <常用类 (三) ----- BigDecimal和Big ...

  8. 六、Java中常用的API(通过包进行分类)————File类、IO流

    一.util工具包下的补充类 介绍io包之前,先补充介绍几个常用的工具类 1.Scanner类 什么是Scanner类 一个可以解析基本类型和字符串的简单文本扫描器. 例如,以下代码使用户能够从 Sy ...

  9. Day20.常用类:Date类、LocalTime、Math类、bigDecimal、Arrays、枚举

    目录 日期类(Date) 日期格式化(SimpleDateFormat) 时间戳 (currentTimeMillis方法) 日历类 Calendar JDK8后日期类(LocalTime) Math ...

最新文章

  1. B树,B+树,B-树和B*树
  2. 语义分割--DeconvNet--Learning Deconvolution Network for Semantic Segmentation
  3. DIV水平方向居中的几种方法
  4. java asm tree_使用ASM 4处理Java类文件–第二部分:Tree API
  5. srt编辑的文件在linux显示乱码,解决看本地视频srt字幕乱码问题教程-srt文件
  6. iOS7时代我们用什么来追踪和识别用户?
  7. 淘宝客API网站在这两年里经历了不少次百度K站风波
  8. SQL Server 2008 各种DateTime的取值范围
  9. 全网最全Spring面试题之基础篇整理总结(共69题,附超详细解答)
  10. 高通宣布与华为达成新专利授权协议,华为砸下18亿美元
  11. 雅虎Yahoo 前段优化 14条军规
  12. 笔记:线性代数的本质
  13. 用Python寻找最优投资组合
  14. TFT液晶屏显示中英文
  15. 25匹马选出最快的3匹马
  16. 女性有十大超能力,你知道吗?
  17. IM群聊消息的已读未读功能在存储空间方面的实现思路探讨
  18. PC端微信扫码支付二维码生成接口的调整
  19. 【Scratch考级99图】图12-等级考试scratch绘制 正八边形
  20. 5G网络用户面时延测量

热门文章

  1. 小程序使用百度图片提取文字api
  2. 机场内部人员都是这么定的机票的!
  3. 安装Bumblebee解决Ubuntu笔记本发热量大问题
  4. 6.4 GitHub - 管理组织
  5. 使用静态分析,帮助实现GDPR的“设计安全”和“设计隐私”
  6. int8,FLOPS,FLOPs,TOPS 等具体含义
  7. 动物识别系统-tensorflow项目
  8. TransE论文第4节:实验
  9. 轻松搞定RabbitMQ开篇:Java消息队列与JMS的诞生
  10. 你的年终总结写了吗?先和百格活动一起康康这些参考总结吧!