Java教程

Java第十一课复习总结

本文主要是介绍Java第十一课复习总结,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

目录

toString()方法

equals()方法

匿名内部类

数组(Array)

 二维数组

冒泡排序

 选择排序

二分法查找(折半查找)


toString()方法

关于Object类中的toString()方法源代码

public String toString() {
    return this.getClass().getName() + "@" + Integer.toHexString(hashCode());
}

默认实现是:类名@对象的内存地址转换为十六进制的形式

toString()方法的设计目的是:通过调用这个方法可以将一个“java对象”转换成“字符串表示形式”

建议所有的子类都去重写toString()方法

equals()方法

关于Object类中的equals方法源代码

public boolean equals(Object obj) {
    return (this == obj);
}

在Object类中的equals方法当中,默认采用的是“==”判断两个java对象是否相等,而“==”判断的是两个java对象的内存地址。所以需要子类重写equals

1、String类已经重写了equals方法,比较两个字符串不能使用==,必须使用equals

2、String类已经重写了toString方法

匿名内部类

内部类:在类的内部又定义了一个新的类,被称为内部类

内部类的分类:

            静态内部类:类似于静态变量
            实例内部类:类似于实例变量
            局部内部类:类似于局部变量

数组(Array)

语法格式:

int[] array1;
double[] array2;
boolean[] array3;
String[] array4;
Object[] array5;

静态初始化语法格式:int[] array = {100, 2100, 300, 55};

动态初始化语法格式:int[] array = new int[5];

1、Java语言中的数组是一种引用数据类型,不属于基本数据类型,数组的父类是Object

2、数组是一个数据的集合

3、数组当中可以存储“基本数据类型”的数据,也可以存储“引用数据类型”的数据

4、数组因为是引用数据类型,所以数组对象是存储在堆内存当中

5、数组当中如果存储的是“java对象”的话,实际上存储的是对象的“引用(内存地址)”

6、数组一旦创建,在java中规定,长度不可变

7、所有的数组对象都有length属性(java自带的),用来获取数组中元素的个数

8、java中的数组要求数组中元素的类型统一。比如int类型数组只能存储int类型

9、数组在内存方面存储的时候,数组中的元素内存地址是连续的。数组实际上是一种简单的数据结构

10、所有的数组都是拿“第一个索引的内存地址”作为整个数组对象的内存地址。

11、数组中每一个元素都是有下标的,下标从0开始,以1递增,以length - 1结束

数组这种数据结构的优点和缺点

优点:查询/查找/检索某个下标上的元素时效率极高

         为什么检索效率高?

               一:每一个元素的内存地址在空间存储上是连续的。
               二:每一个元素类型相同,所以占用空间大小一样。
               三:知道第一个元素内存地址,知道每一个元素占用空间的大小,又知道下标,所以通过一个数学表达式就可以计算出某个下标上元素的内存地址

缺点:

            第一:由于为了保证数组中每个元素的内存地址连续,所以在数组上随机删除或者增加元素的时候,效率较低,因为随机增删元素会涉及到后面元素统一向前或者向后位移的操作

            第二:数组不能存储大数据量,因为很难在内存空间上找到一块特别大的连续的内存空间

注意:对于数组中最后一个元素的增删,是没有效率影响的

Java中对数组的扩容是:先新建一个大容量的数组,然后将小容量数组中的数据一个一个拷贝到大数组当中

数组扩容效率较低,所以尽可能少的进行数组的拷贝。

数组是怎么进行拷贝?

 二维数组

 二维数组是一个特殊的一维数组,特殊在这个一维数组当中的每一个元素都是一个一维数组

静态初始化:例如:int[][] arr = {{1,2,34},{54,4,34,3},{2,34,4,5}};                                                                               Object[][] arr = {{new Object(),new Object()},{new Object(),new Object()},{new Object(),new Object(),new Object()}};

动态初始化:int[][] arr = new int[3][4];
                      Object[][] arr = new Object[4][4];
                      Animal[][] arr = new Animal[3][4]

冒泡排序

拿着左边的数字和右边的数字比对,当左边 > 右边的时候,交换位置

每一次循环结束之后,都要找出最大的数据,放到参与比较的这堆数据的最右边

 选择排序

每一次从这堆“参与比较的数据当中”找出最小值,拿着这个最小值和“参与比较的这堆最前面的元素”交换位置

选择排序比冒泡排序好在:每一次的交换位置都是有意义的

二分法查找(折半查找)

二分法查找的终止条件:一直折半,直到中间的那个元素恰好是被查找的元素

二分法查找算法是基于排序的基础之上的

这篇关于Java第十一课复习总结的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!