Java05_【数组】总结

第一章数组的定义和访问

1.1容器的概念

就是相当于一个柜子有很多抽屉,每个抽屉只能放一个常量,但是呢一个柜子有很多个抽屉,可以放很多个数据

1.2数组的概念

数组就是一个柜子,定义一个数组,可以保存多个数据,数据类型必须一致,数组一旦创建,长度不可以改变,通过编号来获取/修改

1.3数组的定义格式

①格式一----由我们来指定长度

int num = 10;

int[] nums = new int[5];

格式:

数据类型[] 数组名 = new 数据类型[长度]

[]表示数组

数组名和变量名一样格式 小驼峰

等号俩便的数据类型必须一致

长度:必须大于0 否者编译正常,运行报错

package demo02数组格式一;

public class Demo {
    public static void main(String[] args) {

        int[]  nums = new int[4];

        double[] numbers = new double[6];


        //char[] chs = new char[-4];  运行报错
        //System.out.println(chs);//0 字符数组作特殊处理
        String[]  names = new String[103];
    }
}

②格式二----内容由我们制定,长度有系统计算

格式:

数据类型[] 数组名=new 数据类型[]{元素1,元素2...}

=右边的[]不能写长度

package demo03数组格式二;

public class Demo {
    public static void main(String[] args) {

        int[] nums = new int[]{10,20,30,40};//长度就是4

        double[] scores = new double[]{99.00,89.00,59.9,99.99};//长度就是4

        String[] names = new String[]{"F1","赵四","宋小宝","小沈阳"};//长度就是4

    }
}

③格式三--内容我们定,长度系统计算,简化格式

格式:

数据类型[] 数组名={元素1,元素2,...}

package demo04数组格式三;

public class Demo {
    public static void main(String[] args) {

        int[] nums = {10,20,30,40};//长度就是4

        double[] scores = {99.00,89.00,59.9,99.99};//长度就是4

        String[] names = {"F1","赵四","宋小宝","小沈阳"};//长度就是4

    }
}

1.4数组的使用

获取数据,修改数据

必须有数组名称和索引(专门属于数组内元素的编号)

格式:获取数据

数组名[索引]

索引:从0开始到数组的长度-1

package demo05数组的使用;

public class Demo {
    public static void main(String[] args) {

       int[] nums = {10,20,30,40,50};


       //数组名[索引]
       int n =  nums[0];
       System.out.println(n);

       //修改
        nums[0] = 100;
        System.out.println(nums[0]);

    }
}

1.5数组的length

编写通用的访问,数组的最后一个元素

编写通用的代码

①for循环

②数组的属性

格式:

数组名.length

开发中使用ieda会有很多方便的方法

数组名.length.fori生成遍历

数组名.fori 生成遍历 

package demo06数组的属性length;

public class Demo {
    public static void main(String[] args) {


        int[] nums = {10,20,30,40,50,60};

        int len = nums.length;

        //打印最后一元素
        System.out.println(nums[3]);
        System.out.println(nums[len-1]);

        System.out.println("====");



        //遍历数组

       /* System.out.println(nums[0]);//10
        System.out.println(nums[1]);//20
        System.out.println(nums[2]);//30
        System.out.println(nums[3]);//40*/

       /* for(int i = 0;i<4;i++){
           System.out.println(nums[i]);
       }*/
       /* for(int i = 0;i

第二章数组的内存原理

2.1JVM内存

程序要运行,必须有内存

Java05_【数组】总结_第1张图片

JVM内存分五块

1.栈Stack

2.堆Heap

3.方法区Method Area

4.寄存器

5.本地方法区

Java05_【数组】总结_第2张图片

 

2.2JVM内存练习

package demo07JVM内存;

public class Demo {
    public static void main(String[] args) {

        int[] nums= {10,20,30,40};

        System.out.println(nums);
        System.out.println(nums[0]);
        System.out.println(nums[1]);
        System.out.println(nums[2]);
        System.out.println(nums[3]);
    }
}

Java05_【数组】总结_第3张图片

2.3一个数组的内存图解

jiJava05_【数组】总结_第4张图片

数组属于数据类型的引用数据类型

引用变量保存的是堆的内存地址

数组的变量保存就是数组的首地址

首地址

[I@71e7a66b

[

I  int

@  在内存中的位置

十六进制 0-9a-f

2.5多个数组的内存图解

package demo08多个数组的内存;

public class Demo {
    public static void main(String[] args) {

        int[] nums= {10,20,30,40};

        int[] numbers = {50,60,70,80};

        System.out.println(nums);

        System.out.println(numbers);
    }
}

Java05_【数组】总结_第5张图片

 

2.6俩个数组名指向同一个数组

a.数组变量保存的是数组的地址

b.想同的地址表示同一个数组

package demo09相同的地址;

public class Demo {
    public static void main(String[] args) {

        int[] nums= {10,20,30,40};

        int[] numbers = nums;

        nums[0] = 100;

        System.out.println(numbers[0]);
    }
}

Java05_【数组】总结_第6张图片

c.一个数组的变量修改数组的内容

d.另外一个数组变量受影响

第三章数组的常见操作

3.1数组使用的注意事项:数组越界异常

访问或者修改数组的元素

数组名[索引]

a.索引超过(长度-1)

b.程序会奔溃

package demo10数组越界;

public class Demo {
    public static void main(String[] args) {

        int[] nums= {10,20,30,40};//4


       // nums[5] = 10;  //数组越界

        System.out.println(nums[4]);

        //ArrayIndexOutOfBoundsException

    }
}

3.2数组使用的注意事项:空指针异常

a.数组的变量保存的是内存中的地址

b.有地址才能修改或者访问数组的元素

数组空指针异常

 c数组变量保存的地址被清空

数组名[null];

在发开中

a.清空就不要访问或者修改

b.不清空

package demo11绌烘寚閽?

public class Demo {
    public static void main(String[] args) {


        int[] nums= {10,20,30,40};//4

        nums = null;//娓呯┖浜唍ums淇濆瓨鐨勫湴鍧€
        System.out.println(nums);//[I@71e7a66b

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

        //NullPointerException
    }
}

3.3数组遍历--打印数组中所有的元素

package demo12遍历;

public class Demo {
    public static void main(String[] args) {


        int[] nums= {10,20,30,40};


        //

        for (int i = 0; i 

3.4数组最值

Java05_【数组】总结_第7张图片

package demo13最大值;

public class Demo {
    public static void main(String[] args) {


        int[] yz= {10,2000,30,40,20,30,100};


        //擂台

        int max = yz[0];

        // max  1,2,3,4,5,6..
        for (int i = 1; i < yz.length; i++) {

            //单挑
            if(yz[i]>max){
                max =yz[i];
            }

        }//end

        System.out.println(max);



    }
}

3.5数组反转

a.找一个对称的位置

b.对称位置的元素进行交换

c.全部交换

Java05_【数组】总结_第8张图片

package demo14数组反转;

public class Demo {
    public static void main(String[] args) {


        //1,定义数组

        int[] nums = {10,20,30,40,50,60,70,80};

        //2,定义两个索引
        int min = 0;
        int max = nums.length-1;

        //3,循环
        while(min

第四章方法参数与返回值

4.1基本数据类型作为方法参数与返回值

方法参数:定义方法的()写未知变量或者变量

返回值:方法计算出的结果返回给调用处,保存定义变量接收

 必须看返回值类型定义变量接收返回值

a.基本类型可以做方法的参数与返回值类型

b.基本类型能做到的,引用类型也能做到(数组)

package demo15方法参数与返回值;

public class Demo {
    public static void main(String[] args) {

            sum(100,200);//单独调用
           System.out.println(sum(300,400));//打印调用
           int r =  sum(400,500);//赋值调用
           r *= 10;
           System.out.println(r);

    }
    //求两个整数和
    // int int
    // int
    public static int sum(int a,int b){
        int sum =  a+b;
        return sum;
    }
}

4.2数组作为方法参数

a.基本类型能做,引用类型也能做

b.多个数据

c.类型必须一致

d.打包原理

package demo16引用类型数组作为方法参数;

public class Demo {
    public static void main(String[] args) {

           // printNums(10,20,30,40,50);

        int[] array = {10,20,30,40,50};
        printNumbers(array);

    }


    //定义方法的,打印五个整数,打包成一个数组
    //int[]
    //void
    public static void printNumbers(int[] array){
        for(int i = 0;i

4.3数组作为方法返回值

a.基本类型能做的,引用类型也能

b.return 返回值; 必须和方法的返回值类型一致;

c.return 返回值;下面不能写代码了

d.类型必须一致

package demo17引用类型数组作为方法返回值;

public class Demo {
    public static void main(String[] args) {
        int[] result =  jiSuan(30,20);

        for(int i = 0;i

4.4参数为基本类型与引用类型区别

基本类型

 调用处将实参复制一份给形参

 方法内无法修改形参数

 不影响实参

 比如copy资料

          你删除你的资料

          我的资料还在

Java05_【数组】总结_第9张图片

package demo18基本类型作方法参数;

public class Demo {
    public static void main(String[] args) {
        int a = 10;
         int b = 20;

         swap(a,b);

        System.out.println("交换后" + a+" ,"+b);


    }



    //定义一个方法,交换两个整数变量中的值
    //int int
    //void

    public static void swap(int a,int b){

        int temp = a;

        a = b;

        b = temp;
    }






}

引用类型

 a.调用处将实参数组的首地址 复制一份给形参数

 b.方法内无法修改形参

 c.实参会受到影响

package demo18基本类型作方法参数;

public class Demo引用类型作参数 {
    public static void main(String[] args) {

        int[] nums = {10,20};
        System.out.println(nums);
        swapTwo(nums);
        System.out.println("交换后" + nums[0]+" ,"+nums[1]);
    }

    //定义一个方法,交换数组中的两个整数
    //int[]
    //void
    public static void swapTwo(int[] nums){
        System.out.println(nums);
        int temp = nums[0];
        nums[0] = nums[1];
        nums[1] = temp;
    }


}

 

你可能感兴趣的:(Java)