ArrayList源码分析

以前,我刚开始学习JavaSe时,还不知道有ArrayList类。刚开始存多个元素时,都是使用数组。但感觉使用数组,不是那么方便。因为Java和php不一样(但和C一样),数组从定义起,其长度就被确定了,不能再被修改了。如果给数组长度定的太大,那么多余的空间浪费感觉挺可惜,但如果给小了,程序就会出问题。 等学习到了集合时,知道了有ArrayList,使用它时,我们不用费心思考虑到底给多个的容量,每…

详解Java中的相等测试equals与继承

Object中有一个equals方法,用来测试两个对象是否相等。该方法判断两个对象相等的条件是,两个对象的引用是否相等。如果两个对象的引用相等的话,那么毋庸置疑这两个对象一定相等。 但是,我们经常需要对对象的字段进行比较,如果两个对象具有相同的字段值,就认为这两个对象相等。比如,有两个员工姓名、年龄以及薪水相等的话,就认为他们相等。 下面我们来重写父类的equals方法,不再比较引用,而是比较几个…

Java中方法参数按值传递

php中的函数、方法中参数有两种传递方法,按值传递以及按引用地址传递。对于普通变量,php采用按值传递,而对于对象,则默认使用按引用地址传递。 但在java中,方法的参数总是按照值传递的。也就是说,方法得到的是所有参数值的一个副本。若函数中没有使用return将此副本返回给调用者,该副本在方法调用结束后便会自动被销毁。 下面,通过几个案例来看看 基本类型参数 package com.studyja…

Java排序之冒泡排序、快速排序

冒泡排序在10大排序中是最简单的排序算法之一,它的思想非常容易理解。冒泡排序的基本思想: 通过对待排序序列从前向后,依次比较相邻元素的排序码,若发现逆序则交换,使排序码较大的元素逐渐从前部移向后部。 public static int[] sort1 (int[] arr) { int[] newArr = Arrays.copyOf(arr, arr.length); for (int i = …

Java数组的赋值、复制、反转、查找

赋值 数组作为引用类型,对其进行赋值后,两个数组变量引用同一个地址,修改其中一个数组变量值将会影响另外一个数组。 int[] arr = {1,3,5,7}; int[] arr2 = arr; arr2[0] = 2; System.out.println(arr[0]); // 2 复制 数组复制和赋值不一样,两个数组变量指向不同的地址,修改其中一个数组变量不会影响另外一个数组变量。 int[…

Java泛型之擦拭法

java的虚拟机是没有泛型类型对象的,所有的对象都属于普通类。 擦拭法 无论什么时候定义一个泛型,编译的时候都会自动的匹配一个相应的原始类。这个原始类名就是去掉类型参数后的泛型类型名。类型变量会被擦除,替换为限定类型,或Object(没有限定时)。 例如一个泛型类Pair如下: class Pair<T> { private T first; private T second; pub…

Java中泛型初探

泛型类 泛型类就是有一个或多个类型变量的类。 package com.studyjava.demo; import java.util.*; public class Demo19 { public static void main (String[] args) { var pair = new Pair<String>("hello ", "java&…