访问修饰符
public 公开 当前类 同包 子类 其他包可访问
protected 受保护 当前类 同包 子类 可访问
默认 当前类 同包 可访问
private 私有 当前类 可访问
继承相关
extends 继承 instanceof 判断一个类是非为另一个类的子类 例
class B extends C { } class C{ }
B b = new B(); System.out.println(b instanceof C);
输出 true hashCode() 哈希值,如果指向同一个对象则值相同 toString() 输出全类名(包名+类名)+@+16进制哈希码 这个方法通常会被重写,以输出class中的属性值,每个类都有一个默认的toString()方法
数组复制
数组创建
方法一
int shuzu[] = {1,2,5,3};
int是指数组的类型 类型可以更改 如double shuzu[]、String shuzu[]等,此外数组的类型可以是类
{}中是数组中存放的值,如果是Sting类型,你们值要用“”包裹起来 ,char类型就使用‘’包裹起来
数组下表从0开始 如 shuzu[0]=1
方法二
int shuzu[] = new int[4];
=之后的[]存放的数字指数组的大小,数组的大小必须在最开始就决定下来,此后长度不可改变
二维数组创建
方法一
int shuzu[][] = {{1,2},
{3,4}};
二维数组与一维数组相似,相当于一个数组中存放了许多数组
调取时第一个[]中的数字是指第几个数组,第二个[]是指这个数组中的第几个元素
如 shuzu[0][0]=1
方法二
int shuzu[][] = new int[4][2];
可理解为第一个数组的元素数量为4,这四个元素没一个都是一个容量为2的数组,如果使用方法一创建那么这4个数组的容量可以不相等
数组遍历
数组一般使用for遍历
int shuzu[] = {1,2,5,3};
System.out.println(shuzu.length); for (int i = 0; i < shuzu.length; i++) {//length获得数组的长度 如shuzu.length=4 System.out.println(shuzu[i]); }
如果只是想要查看数组中的值可使用Arrays.toString()
int shuzu[] = {1,2,5,3};
System.out.println(Arrays.toString(shuzu)); //输出 [1, 2, 5, 3]
数组复制
数组复制并不是真的延长了数组,而是创建了一个新的数组,规定这个数组是希望的大小,并将旧数组的元素复制到新数组中,最后让旧数组的地址指向新数组 相当于创建了一个同名,同内容但容量扩大的数组。
方法一
System.arraycopy(旧数组,开始位置,新数组,开始位置,复制长度);复制数组
例
int shuzu[] = {1,2,5,3};
int newshuzu[] = new int[shuzu.length+1];//创建一个比旧数组容量大1的新数组 System.arraycopy(shuzu,0,newshuzu,0,shuzu.length);//复制 System.out.println(Arrays.toString(newshuzu));//输出新数组
shuzu = newshuzu;//将地址赋予新数组
输出
[1, 2, 5, 3, 0] //如果不为int数组赋值,则默认为0 String默认为null
此外 System.arraycopy()可作用于同一个数组
System.arraycopy(shuzu,3,shuzu,0,shuzu.length-3);
System.out.println(Arrays.toString(shuzu));
输出 [3, 2, 5, 3]
解释 从旧数组的3位置(shuzu[3] = 3)起 复制一个元素到 新数组0(shuzu[0]=1)位置
方法二
新数组 =Arrays.copyOf(旧数组,新数组长度)复制数组
当复制长度小于旧数组时
int shuzu[] = {1,2,5,3};
int newshuzu[] = Arrays.copyOf(shuzu,2);//如果想要复制一个相同的数组,则在数字2的位置填shuzu.length System.out.println(Arrays.toString(newshuzu2));
shuzu = newshuzu;//将地址赋予新数组
输出
[1, 2]
当复制长度大于旧数组时
int newshuzu2[] = newshuzu2 = Arrays.copyOf(shuzu,8);//超出旧数组部分为默认值0 System.out.println(Arrays.toString(newshuzu2));
输出
[1, 2, 5, 3, 0, 0, 0, 0]
方法二不需要额外创建新数组
方法二实际上是调用了方法一并为方法一提供了许多默认值