复习06-数组

public class Array01 {
    public static void main(String[] args) {
        //动态初始化
        int[] arr01 = new int[3];
        double[] arr02 = new double[10];
        String[] arr03 = new String[10];
        //静态初始化
        int[] arr04=new int[]{1,2,2};
        String[] arr05=new String[]{"hello","world","java"};
        //静态初始化的省略格式
        double[] arr06={1.1,1.0};
        //静态初始化 动态初始化可以分步骤写
        int arr07[];
        arr07=new int[3];
        //数组元素的获取
        System.out.println(arr04);//[I@5fd0d5ae 直接打印数组名称得到的数组对应的内存地址哈希值
        System.out.println(arr04[0]);// 1
        int num =arr04[1];//2
        //
        int[] arr08=new int[3];
        System.out.println(arr08); //内存地址值
        System.out.println(arr08[0]);//没有赋值arr08[0]=0
        System.out.println("============");
        String[] arr09=new String[3];
        System.out.println(arr09[0]); //null

        arr08[0]=100;
        System.out.println(arr08[0]);//100

1.数组是一个容器 可以同时存储多个数据值

2.数组是引用数据类型 除了四类八种都是引用

3.数组当中的数据类型要统一 比如都是int 都是double 类型统一

4.数组的长度在程序运行期间不能改变

5.基本数据类型引用数据类型都可以作为数组的数据类型

6.注意动态初始化静态初始化的区别

7.静态初始化没有直接指定长度,但是可以自动推算长度

8.如果不确定数组当中的具体内容用动态初始化 已经确定数组的具体内容用静态初始化

9. 16进制就是16进1

10.动态初始化数组 当没有赋值时 元素默认值规则

整数类型 byte short int long 默认为0

浮点类型 默认0.0

字符类型默认 '\u0000' 但是打印看不到

布尔类型默认 false

引用默认 null

11.静态初始化 new int[]{1,2};过程其实也有默认值的过程,只不过系统自动把默认值替换为了大括号中的具体值

12.java中的内存划分 5个部分 栈 堆 方法区 本地方法栈 寄存器

12.1 栈 stack :存放的是方法的局部变量 (方法的参数列表方法内部的变量是局部变量

方法的运行一定要在栈当中     一旦超出作用域,立刻从栈内存中消失  

12.2堆内存 : 凡是new 出来的都在堆当中(比如int[ ] arr=new int[3] 的new int[3] 在堆中 而int[]arr 相当于引用类型的变量在栈中)   堆内存里面的东西都有一个16进制的地址值   堆内存里面的数据都有默认值,如果是整数(byte short int long)默认0  浮点数0.0 字符‘\u0000’  boolean默认false 引用类型默认null

12.3方法区 :存储.class(.java编译之后用来运行的字节码文件 有main方法自定义方法)相关信息,包含方法的信息

12.4本地方法栈: 与操作系统相关

12.5寄存器 :与cpu相关

13.一个数组的内存图

注意图片中 直接打印数组地址值不变是因为new 在堆内存中 同一个数组地址值不变

14.两个数组的内存图

15. 两个引用指向同一个数组的内存图(只new了一次 所以堆中只有一个所以如果直接打印arrayA arrayB的话地址值是一样的)

 16.数组索引越界异常  arrayindexoutofboundsexception

17.空指针异常:只定义了数组 但是没有new 就是没有创建数组

int[] array=null; 或者数组没有new  会发生空指针异常nullpointerexception

18.所有的引用数据类型可以赋值null

19.获取数组的长度:属性 int lenghth=array.length

数组一旦创建 数组的长度不能发生改变

注意理解其实图片里是重新new了数组 创建了新数组 不是原来数组了 因为new了

int[] array=new int[3]   int[] array是名字    new int[3] 才是数组

 20.数组的遍历输出

int[] arr10=new int[]{10,20,30};
for (int i = 0; i < arr10.length; i++) {
    System.out.println(arr10[i]);
}

21.求出数组的最值

int[] arr11={10,20,30};
int max=arr11[0];
for (int i = 0; i < arr11.length; i++) {
    if (arr11[i]>max){
        max=arr11[i];
    }
}
System.out.println(max);

22.数组元素反转

 奇数个元素min=max停止交换  偶数个元素min>max停止交换 所以min<max时交换元素

  int [] arr12={1,2,3,4};
        /*初始化语句 int min=0,int max=array.length-1
          条件判断  min<max
          步进表达式 min++,max--
          循环体:用第三个变量倒手
         */
        for (int min=0, max01=arr12.length-1; min<max01; min++,max01--) {
        int temp=arr12[min];
        arr12[min]=arr12[max01];
        arr12[max01]=temp;
    }
        for (int i = 0; i < arr12.length; i++) {
        System.out.println(arr12[i]);
    }

23.数组作为方法参数_传递地址

任何数据类型都可以作为方法的参数  数组也可以

   
        int [] arr13={1,2,3,4};
         printArray(arr13);
     }
    public static void printArray(int[] arr){
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }

24.数组作为方法的返回值

  int[] calculate = calculate(1, 2, 3);
        System.out.println(calculate[0]);
        System.out.println(calculate[1]);
    }
    public static int[] calculate(int a,int b,int c){
        int sum=a+b+c;
        int avg=sum/3;
        int[] arr13={sum,avg};
        return arr13;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值