大数据预科班4

来源:互联网 发布:豆瓣fm for mac打不开 编辑:程序博客网 时间:2024/04/30 06:06

大数据预科班第四天

复习

  • 判断语句(if、if-else、if-else-if)
  • 选择结构(switch-case)
  • 循环结构(while、do-while、for 如果循环体只有一句,可以省略{},do-while必须有{})

数组

  • 本质:一组数的容器,数组对每一个存入的数字都会自动编号,编号从0开始–即下标
  • 数组定义格式:数据类型[] 变量名=new 数据类型[数组大小或者元素的个数];

    int[] arr=new int[3];
    表示一个可以存储3个整数的数组

  • 数组的大小一旦定义,长度不可以改变
  • 存储和取用

    存储:arr[0]=1;
    取出:int x=arr[0];

  • 格式:1、先声明,后创建 2、声明时直接创建 3、声明时直接初始化(在定义好之后,数组的初始元素已经确定大小)

    1. 大小确定,内容不确定时用 int[] arr=new int[数组大小];
    2. 内容确定时用 int[] arr=new int[]{1,2,3,4};
    3. int[] arr={1,2,3,4}; 正确;在创建的时候,动态获取空间大小,然后创建并放置数据。
    4. int[] arr; arr={1,2}; 错误;因为不知道数组大小,不给予创建;用new先创建然后放置数据。


声明:只有引用,没有空间占用


初始化:在程序中第一次给变量赋值


[]可在前在后,放在前更容易与基本类型区分

  • 数组的应用

    1. 获取数组中的元素:数组名[下标]
    2. 获取数组的长度:数组名.length
    3. 遍历数组:获取数组中的每一个数据;[0~length-1]用循环:比如for
    4. 获取数组中的最大值(循环+比较)
    5. 对数组进行排序

    冒泡排序:相邻两个数进行比较,一次找一个最大的或是最小的(第n轮+第n轮的比较次数=数组长度)
    public static int[] getOrderArray(int[] arr) {
    for (int i = 1; i < arr.length; i++) {
    for (int j = 1; j <= arr.length - i; j++) {
    if (arr[j - 1] > arr[j]) {
    int temp = arr[j - 1];
    arr[j - 1] = arr[j];
    arr[j] = temp;
    }
    }
    }

    return arr;

    }

    选择排序:第n位和之后的数字相比较(选中某一位一次和其他位置比较,习惯上从0位开始依次比较)
    public static int[] getOrderArray(int[] arr) {
    for(int i=1;i<=arr.length;i++){
    for(int j=i-1;j

内存

  • 将内存分为5块:栈内存、堆内存、方法区、本地方法栈,寄存器
  • 栈内存
    #
    存储变量,执行代码块,变量存储在栈内存中不会自动赋予初始值,变量使用完立即移除栈内存,释放空间
  • 堆内存
    #
    存储对象,对象在堆内会自动赋予初始值,使用完后不会立即移除,会在一段时间后自动回收

  • 常见错误

    编译没错,运行出错:语法没问题,逻辑或其他可能有错

    1. ArrayindexOutOfBoundsException数组下标越界
    2. NullPointException空指针异常,编译没有问题
  • 扩展

    1. int i=1/0;//编译没错,运行出错
    2. 但是java中允许小数除以0,整数为无穷大,负数为负无穷大(Infinity/NaN)
    3. NaN:和任何数都不相等 ,和自身都不想等;只有isNaN才可以判断
    4. 尽量少用小数来作为控制条件,因为小数不精确
    5. strictfp(加在函数中):在程序执行过程中,小数是以80位二进制进行存储的,但是函数执行完用double来来存储,即用64位来进行存储
  • 二维数组(数组的数组)
    #

    1. 定义格式:数据类型[][] 数组名=new 数组类型[二维数组的大小/二维数组中包含的一位数组的个数][所包含一维数组的大小];
      eg:int[][] arr=new int[3][4];
      表示一个包含3个一维数组,每一个一维数组由4个整数组成
      eg:int[][] arr=new int[3][];
      表示一个包含3个一维数组,每一个一维数组由长度任意;但是不能直接arr[2].length;因为这时候没有对象,应该初始化(开始为null,最后赋值为一维数组的地址)。
      eg: int[][] arr={{1,1,2,3},{3,3}};

      注:[]在变量前后不同;


      之前会给之后的数据添加


      之后的就是之后的


      eg:int[] x,y[];


      即x[],y[][]
  • 遍历一个二维数组,需要两个循环
    for(int i=0;i<arr.length;i++){        for(int j=0;i<arr[i].length;i++){        }    }
原创粉丝点击