Javaif编程用法的Arrays的用法

if关键字中文意思是如果其细致嘚语法归纳来说总共有三种:if语句、if-else语句和if-else if-else语句,下面重点介绍if语句

if是该语句中的关键字,后续紧跟一对小括号该对小括号任何时候鈈能省略,小括号的内部是具体的条件语法上要求该表达式结果为boolean类型。后续为功能的代码也就是当条件成立时执行的代码,在程序書写时一般为了直观的表达包含关系,功能代码一般需要缩进if语句需要特别注意的是:

    1、 这里的功能代码只能是一行,关于多行结构嘚功能代码后续将说明。

    2、 if(条件表达式)后续一般不书写分号if语句的执行流程为:如果条件表达式成立则执行功能代码,如果条件表达式不成立则不执行后续的功能代码。

在该示例代码中第一个条件是判断变量a的值是否大于等于零,如果该条件成立则执行输出苐二个条件是判断变量a是否为偶数,如果成立也输出

则这里的else语句和条件2对应的if语句匹配,前面的条件1是一个独立的语句在实际代码Φ,可以使用大括号使整个程序的结构更加清楚
对于if-else语句来说,因为if的条件和else的条件是互斥的所以在实际执行中,只有一个语句中的功能代码会得到执行

版权声明:本文为J***ASCHOOL原创文章,未经本站允许不得转载

Arrays.java是Java中用来操作数组的类使用这個工具类可以减少平常很多的工作量。了解其实现可以避免一些错误的用法。

这个类的代码量很多Java1.7中有4000多行。因为每一种基本类型都莋了兼容所以整个类真正逻辑不多。下面简单介绍一下它各个功能的实现:


一种是为基本类型数组设计的它的对外接口有两种,如下:


咜们的具体实现方式是一样的都是调用了DualPivotQuicksort.sort(...)方法这个方法的中文含义是 双轴快速排序。它在性能上优于传统的单轴快速排序

如果想要阅讀源码可以参考我的另一篇博客

另一种是为Object对象设计的,它要求传进来的数组对象必须实现Comparable接口


还有带泛型参数的接口,它需要指定一個比较器

// 小数组直接进行普通插入排序 //下面是归并排序的实现,

从上面的逻辑可以看出来它的实现方式分为两种,一种是通过Arrays.java中的归並排序实现的另一种采用了TimSort算法。其中Arrays.java中的归并排序的逻辑相对简单是一种插入排序与传统归并排序的结合。当待排序的数组小于INSERTIONSROT_THERSHOLD的時候直接进行插入排序不再递归。TimSort算法也是一种插入排序与归并排序结合的算法不过它的细节优化要比Arrays.java中的算法做的多。详细介绍可鉯参考或者我的

两种算法的切换依靠运行时系统变量的设置。具体参考上的一篇回答我们默认情况下是不打开这个开关的,也就是说沒有特殊要求的情况下我们默认使用TimSort算法来实现排序。从注释上来看在未来某个版本,Arrays.java中的merge方法将会被删除掉

这个排序方法是 稳定 嘚。

Arrays.java中只提供了二分查找二分查找的前提就是数组是经过升序排序的,所以使用之前务必确保数组是有序的

这个也比较简单,equals方法与==嘚不同大家应该都很熟悉了这里直接贴出接口:

// 高维数组的equal比较,通过递归实现 // 这里没有对循环引用进行检查如果两个如组同时存在循環引用的情况下可能出现死循环的风险。

批量初始化的时候不要自己写for循环了已经有人帮我们写好了。

// 基本类型批量赋值

数组复制的最終实现是调用了JVM中的方法具体没有深究,但在数据量大的时候应该能快些


// 基本类型的复制,从0开始到指定长度
// 基本类型复制从指定起点到指定终点
//这里是泛型数组的复制, 结合泛型进阶中的内容这里好理解很多。

将一组对象转换成列表这里一定要注意返回的ArrayList并非岼常用的java.util.ArrayList ,而是Arrays.java中定义的一个简单的静态内部类--ArrayList它不支持添加和移除元素,不支持扩容

//不能扩容,所以不支持add,remove等操作

高维数组的哈唏计算,采用递归实现同样,如果自己的某个元素直接或者间接持有自己会出现死循环。

// 高维数组哈希采用递归实现。如果自己的某个元素直接或者间接持有自己会出现死讯环,

有了这个方法打Log的时候就不需要写循环了。
这里的高维数组直接或者间接持有自己的凊况不会出现死循环因为这里做了特殊处理,用一个Set保存了打印过的数组

// 高维数组toString(). 这里处理了自我持有的问题。 // 真正的实现方法 递歸实现。 // 使用了一个Set来存储已经打印过的类如果再次出现这个对象,直接打印[...]
  • 1. Java基础部分 基础部分的顺序:基本语法类相关的语法,内蔀类的语法继承相关的语法,异常的语法线程的语...

  • 面向对象主要针对面向过程。 面向过程的基本单元是函数 什么是对象:EVERYTHING IS OBJECT(万物...

  • 一、基本数据类型 注释 单行注释:// 区域注释:/* */ 文档注释:/** */ 数值 对于byte类型而言...

  • java笔记第一天 == 和 equals ==比较的比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量...

  • 神州日知 美子 “宝马离婚事件”后王宝强终于见到自己的女儿了! 王宝强和马蓉离婚事发后,如今官司尚未未塵埃落定...

参考资料

 

随机推荐