day06 笔记

day06 笔记

一.数组定义

定义数组:
  数组类型 [] 数组名 = new 数组类型 [数组元素个数];
  
  简便形式:数据类型 [] 数组名 = {数组元素};
  

二.数组里面的元素的交换(最大值和最小值)

里面的数组元素交换的使用中间变量
public static void main(String[] args) {
        //定一个数组
        int [] nums = {5,52,24,78,35};
        System.out.println("最大值:"+getMax(nums));
        System.out.println("最小值:"+getMin(nums));
    }

    public static int getMax(int [] number) {
        //定义一个擂主
        int max = 0;
        //进行非空验证
        if (number != null && number.length>0) {
            max = number[0];
            //使用for循环进行比较
            for (int i=0;i<number.length;i++)
            if (number[i]>max) {
                max = number[i];
            }
        }
        return max;
    }
    public static int getMin(int [] number01) {
        int min = 10;
        if (number01 != null && number01.length>0) {
            min = number01[0];
            for (int i=0;i<number01.length;i++) {
                if (number01[i] < min) {
                    min = number01[i];
                }
            }
        }
        return min;
    }

注意:数组在进行在使用for循环的时候,需要进行非空验证

三.数组排序

public static void main(String[] args) {
        int [] arrays = {2,5,3,8,4};
        //把排好序的数组转换为字符串
        String str = Arrays.toString(sortArrys(arrays));
        System.out.println(str);
    }

    //冒泡排序

    /**
     *
     * @param nums 没有排序的数组
     * @return 排好序的数组
     */
    public static int [] sortArrys(int [] nums) {
        //第一个for循环控制比较的轮数
        for (int i=0;i<nums.length;i++){
            //第二个for循环控制每一轮的比较次数
            for (int j=0;j<nums.length-1-i;j++){
                if (nums[j] >nums[j+1]) {
                    //设置中间变量 进行两个值的交换
                    int temp = nums[j];
                    nums[j] = nums[j+1];
                    nums[j+1] = temp;
                }
            }
        }
        return nums;
    }

注意:使用两个循环

​ 第一个循环 控制轮数

​ 第二个循环 控制每一轮的比较次数

四.数组插入数据

//数组中插值
    public static void main(String[] args) {
        char [] ch = new char[6];
        ch[0] = 'a';
        ch[1] = 'b';
        ch[2] = 'c';
        ch[3] = 'e';
        ch[4] = 'f';

        //插入的值 char元素可以直接进行比较对应ascll码比较
        char number = 'd';
        //使用index来记录找到的索引
        int index = -1;
        //寻找插入值的索引的位置
        for (int i =0;i< ch.length;i++){
            if(ch[i] > number) {
                index = i;
                break;
            }
        }
        //进行值往后移动
        for (int j= ch.length-1;j>index;j--) {
            ch[j] = ch[j-1];
        }

        //进行值的插入
        ch[index] = number;

        //打印
        System.out.println(ch);
    }

注意:在比的时候,原来是数组长度是比后面加入的数组的长度小1的,

​ 如果是先定义两个数组,其中一个数组比原来的数组少一个,在生成新数组的时候,在加入值的地方注 意索引,还有在新数组的最后一个数组元素的变化需要菜系判断;例如:

 public static void main(String[] args) {
        //原字符顺序:a, b, c, e, f, p, u, z
        //待插入字符:m
        //插入字符的下标是:5
        //原数组
        char [] ch = {'a', 'b', 'c', 'e', 'f', 'p', 'u', 'z'};
        //插入的数组
        char [] chars = new char[9];

        //插入的数的信息
        char temp = 'm';
        int index = 5;
        for (int i=0;i<ch.length;i++){
            if (i == index) {

                chars[i]=temp;
            }else if (i<index){
                chars[i] = ch[i];
                //当第6个下标开始
            } else if (i<ch.length) {
                chars[i] = ch[i-1];
                //注意
            }if (i== ch.length-1) {
                chars[i+1] = ch[i];
            }
        }
        System.out.println(Arrays.toString(chars));
    }

day06 笔记
五.JVM内存划分五块

栈:所有的局部变量  还有运行方法时候,都会在栈里面开辟空间
	特点:先进后出
堆:所有 new的资源 数组 对象 都是堆内存中存在(重点)
方法区:所有的字节码文件(class文件)静态资源  存在方法区
本地方法区:调用c或者是c++代码的native
程序计数器:主要是控制代码的执行
上一篇:Day06 方法


下一篇:go学习笔记-day06