小白之旅5

Posted demonycw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小白之旅5相关的知识,希望对你有一定的参考价值。

一. 数组

概念:存储数据的容器

1. 特点

  • 只能存储同一种数据类型
  • 长度固定

2.创建

  • 数据类型[] 数组名 = new 数据类型[数组长度];
  • 数据类型[] 数组名 = 数据1,数据2,数据3,...;
  • 数据类型[] 数组名 = new 数据类型[]数据1,数据2,数据3,...;

3. 获取

格式:

  • 数组名[下标]

下标(index):

  • 索引、脚标* 下标的范围是从0开始到数组长度-1

数组长度:

  • 数组名.length

异常:

  • ArrayIndexOutofBoundsException:数组下标越界异常,原因下标超过了范围
  • NullPointerException:空指针异常,原因是数据在内存中没有实际的存储空间,就对它进行了操作

4. 赋值

格式:

  • 数组名[下标] = 数据值;

5. 遍历

循环对数组进行查看元素或者对元素进行赋值

  • 数据源
  • 下标
  • ++、--
  • 对数组进行何种操作

例如:

循环打印数组中的元素
<span class="hljs-keyword">int</span><span <span class="hljs-keyword">class</span>=<span class="hljs-string">"hljs-matrix"</span>>[]</span> arr = <span <span class="hljs-keyword">class</span>=<span class="hljs-string">"hljs-cell"</span>><span <span class="hljs-keyword">class</span>=<span class="hljs-string">"hljs-number"</span>><span class="hljs-number">1</span></span>,<span <span class="hljs-keyword">class</span>=<span class="hljs-string">"hljs-number"</span>><span class="hljs-number">2</span></span>,<span <span class="hljs-keyword">class</span>=<span class="hljs-string">"hljs-number"</span>><span class="hljs-number">3</span></span>,<span <span class="hljs-keyword">class</span>=<span class="hljs-string">"hljs-number"</span>><span class="hljs-number">4</span></span></span>;
<span <span class="hljs-keyword">class</span>=<span class="hljs-string">"hljs-keyword"</span>><span class="hljs-keyword">for</span></span>(<span class="hljs-keyword">int</span> <span <span class="hljs-keyword">class</span>=<span class="hljs-string">"hljs-built_in"</span>>i</span> = <span <span class="hljs-keyword">class</span>=<span class="hljs-string">"hljs-number"</span>><span class="hljs-number">0</span></span>;<span <span class="hljs-keyword">class</span>=<span class="hljs-string">"hljs-built_in"</span>>i</span> <= arr.<span <span class="hljs-keyword">class</span>=<span class="hljs-string">"hljs-built_in"</span>>length</span> - <span <span class="hljs-keyword">class</span>=<span class="hljs-string">"hljs-number"</span>><span class="hljs-number">1</span></span>;<span <span class="hljs-keyword">class</span>=<span class="hljs-string">"hljs-built_in"</span>>i</span>++)<span <span class="hljs-keyword">class</span>=<span class="hljs-string">"hljs-cell"</span>>
    System.<span class="hljs-keyword">out</span>.println(arr[i]);
</span>

对数组中的元素进行循环赋值
<span <span class="hljs-keyword">class</span>=<span class="hljs-string">"hljs-keyword"</span>><span class="hljs-keyword">for</span></span>(<span class="hljs-keyword">int</span> <span <span class="hljs-keyword">class</span>=<span class="hljs-string">"hljs-built_in"</span>>i</span> = arr.<span <span class="hljs-keyword">class</span>=<span class="hljs-string">"hljs-built_in"</span>>length</span> - <span <span class="hljs-keyword">class</span>=<span class="hljs-string">"hljs-number"</span>><span class="hljs-number">1</span></span>;<span <span class="hljs-keyword">class</span>=<span class="hljs-string">"hljs-built_in"</span>>i</span> >= <span <span class="hljs-keyword">class</span>=<span class="hljs-string">"hljs-number"</span>><span class="hljs-number">0</span></span>;<span <span class="hljs-keyword">class</span>=<span class="hljs-string">"hljs-built_in"</span>>i</span>--)<span <span class="hljs-keyword">class</span>=<span class="hljs-string">"hljs-cell"</span>>
    arr[i] = i;
</span>
`</pre>

<span class="hljs-preprocessor">### 6. 数组的默认值</span>

根据不同的数据类型,数组具有指定数量的默认元素。  
`</pre>
  • 整数类型:0

  • 浮点数类型:0.0

  • 布尔类型:false

  • 字符类型:‘ ‘

  • 引用数据类型:null

    7. 数组元素的排序

  • 选择排序
    原理:首先在还未排序的数组中找最小(大)的元素,将此元素放到第一位,
    然后,再从剩余未排序的数组中继续找最小(大)的元素,将此元素放到已排序数组的下一位,
    以此类推。
    代码:

    `for(int i = 0;i <  arr.length - 1;i++)
        int index = i;
        for(int j = i + 1;j < arr.length;j++)
            if(arr[j] < arr[index])
                index = j;
            
        
        int temp = arr[index];
        arr[index] = arr[i];
        arr[i]=temp;
    `
  • 冒泡排序
    原理:比较相邻的元素,如果满足交换条件则进行交换,从而找到最值,
    以此类推,对整个数组进行排序
    代码:

    `for(int i = 0;i < arr.length - 1;i++)
        for(int j = 0;j < arr.length - 1 - i;j++)
            if(arr[j] > arr[j+1])
                int t = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = t;
            
        
    `

    8. 增强for循环(foreach循环)

    格式:

    `for(数据类型 变量名 : 数据源(容器))
        循环体
    `

    逻辑:遍历开始后,系统自动将数据源的第一个元素赋值给变量,
    然后执行循环体,继续自动将数据源的第二个元素赋值给变量,依次类推,
    直到系统判定已经读取到了数据源的末尾,则循环结束。
    特点:

  • 没有下标值

  • 只能遍历容器

    二. 二维数组

    概念:存储一维数组的数组就是二维数组

    1. 创建

  • 数据类型[][] 数组名 = 数组1,数组2,数组3,...;

  • 数据类型[][] 数组名 = new 数据类型[二维数组的长度][二维数组中每一个一维数组的长度];

  • 数据类型[][] 数组名 = new 数据类型[二维数组的长度][];
    注:
    第三种创建方式,只明确了二维数组中有多少个一维数组,但是这每一个一维数组都并未创建,所以这些一维数组无法使用,必须对这些一维数组进行单独创建。

    2. 遍历

    代码:

    `for(int i = 0;i<=arr.length - 1;i++)
        for(int j = 0;j<=arr[i].length-1;j++)
            System.out.print(arr[i][j]+"\t");
        
        System.out.println();
    `

    使用foreach遍历二维数组
    代码:

    <span class="hljs-tag">for</span>(int[] <span class="hljs-attribute">a </span>:arr) <pre><span class="hljs-tag">for(int <span class="hljs-attribute">b : a)
    <span class="hljs-attribute">System.out.<span class="hljs-function">print(b+<span class="hljs-string">"\t");

    <span class="hljs-attribute">System.out.<span class="hljs-function">println();

以上是关于小白之旅5的主要内容,如果未能解决你的问题,请参考以下文章

小白的CFD之旅 17 需要编程?

小白之旅19-2

单片机小白的启程之旅

《小白的CFD之旅》招募写手

小白的正则表达式的学习之旅-03

小白的CFD之旅15 四种境界