java笔记02 访问修饰符与数组复制

访问修饰符

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]

方法二不需要额外创建新数组

方法二实际上是调用了方法一并为方法一提供了许多默认值

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值