p155-168
数组(第六章)
数组可以存放多个同一类型的数据,数组也是一种数据类型(引用类型)。
即,数组就是一组数据~
例:double [] hens = {1,2,3,4,5,6};
新建了一组鸡,里面有6个。数组可以通过循环来遍历。
import java.util.Scanner;
public class day8{
public static void main(String[] args){
double[] hens = {3,5,1,3.4,2,50};
for(int i =0;i<6;i++){
System.out.println("the "+(i+1)+"th hen is "+hens[i]);
}
}
}
数组的长度=hens.length;
使用方式
1、动态初始化
数据类型 数组名[] = new 数据类型[大小]
例:int a[] = new int[5];\\创建了一个数组 ,名字为a,存放5个int
或先声明再创建:
2、静态初始化
数组细节
1.数组是多个相同元素的组合。意思是里面的元素可以是任何数据类型,但是不能混用。
2.数组创建后,若没有赋值,有默认值0;
3.下标从0开始,注意不要越界。
4.数组属于引用类型,数组型数据是对象(object)
练习
1.
import java.util.Scanner;
public class day8{
public static void main(String[] args){
char a[] = new char[26];
for(int i =0;i<a.length;i++){
a[i] = (char)(97+i);
System.out.println("the "+(i+1)+"th hen is "+a[i]);
}
System.out.println("the all");
}
}
2.勉强做到了,但是只能判断两个相同的最大值,万一有很多最大值我怎么搞呢?
3.虐
数组赋值机制
基本数据类型赋值,这个值就是具体的数据,相互不影响。如int n1 = 1; int n2 = n1;
n2的值不会影响n1。
但是数组在赋值的时候默认引用传递,赋的是地址。指针要来了吗额啊啊啊。。。如
int[] arr1 = {1,2,3};
int[] arr2 = arr1;
这里对arr2进行操作,会影响arr1。
解释这个jvm内存:0164_韩顺平Java_数组赋值机制2_哔哩哔哩_bilibili
数组拷贝
例:将int [] arr1={1,2,3};拷贝给arr2,要求内容空间独立。
那么
int[] arr1 = {1,2,3};
//创建新的数组arr2,开辟新的数据空间,大小为arr1.length
int[] arr2 = new int[arr1.length];
//遍历arr1,复制给arr2
for(int i = 0;i<arr1.length;i++){
arr2[i]=arr1[i];}
是不是类似于c的malloc呢?
数组反转
两头交换罢了
数组添加
实现动态的给数组添加元素的效果,实现对数组的扩容。
1.原始数组使用静态分配int[] arr ={1,2,3};
2.增加的元素直接放在数组的最后arr = {1,2,3,4};
3.用户可以通过如下方法来决定是否继续添加:添加成功,是否继续?y/n
今天图书馆不开门,差评,回去收拾破烂了。