博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java 学习 day04
阅读量:5171 次
发布时间:2019-06-13

本文共 8435 字,大约阅读时间需要 28 分钟。

17-数组(概述-内存结构)

概念:同一种类型数据的集合,其实数组就是一个容器。

可以自动给数组中的元素从0开始编号,方便操作这些元素。

int[] x = new int[3];

01-数组(静态初始化-常见问题)

int[] arr = new int[]{3,1,6,5,4}; //静态初始化方式

简化形式: int[] arr = {3,1,6,5,4};

常见问题:

①ArrayIndexOutOfBoundsException  操作数组时,访问到了数组中不存在的角标。

②NullPointerException 空指针异常:当引用没有任何指向值为null的情况,该引用还在用于操作实体。

02-数组(常见操作-遍历)

数组的操作:获取数据中的元素。通常会用到遍历。

length -- 数组中有一个属性可以直接获取到数组元素个数:

使用方式:数组名称.length 

Eg:定义功能,用于打印数组中的元素。元素之间用逗号隔开。

public static void printArray(int[] arr) {        for (int i = 0; i < arr.length; i++) {            if (i != arr.length - 1) {                System.out.print(arr[i] + ",");            } else {                System.out.println(arr[i]);            }        }    }
View Code

03-数组(常见操作-获取最值)

Eg:给定一个数组{5,1,6,4,2,8,9} 1. 获取数组中的最大值以及最小值

package myFirstCode;/* * 给定一个数组{5,1,6,4,2,8,9} 1. 获取数组中的最大值以及最小值 */public class ArrayTest {        /*     * 获取数组中最大值。     * 思路:     * 1. 获取最大值需要进行比较。每一次比较都会有一个较大的值。因为该值不确定。     * 通过一个变量进行临时存储。     * 2. 让数组中的每一个元素都和这个变量中的值进行比较。     * 如果大于了变量中的值,就用该变量记录最大值。     * 3. 当所有的元素都比较完成,那么该变量中存储的就是数组中的最大值。     *      * 步骤:     * 1.定义变量。初始化为数组中任意一个元素即可。     * 2.通过循环语句对数组进行遍历。     * 3.在变量过程中定义判断条件,如果遍历到的元素比变量中的元素大,就赋值给该变量;     *      * 需要定义个功能来完成。一遍提高复用性。     * 1.明确结果,数组中的最大元素 int      * 2.未知内容:一个数组 int[]     */    public static void main(String[] args) {        // TODO Auto-generated method stub        int[] arr = { 5, 2, 6, 4, 9, 8, 1 };        System.out.println("最大值="+getMax(arr));    }    public static int getMax(int[] arr) {        int tmp = arr[0], tmp1 = arr[0];        for (int i = 1; i < arr.length; i++) {            if (arr[i] > tmp) {                tmp = arr[i];            }            if (arr[i] < tmp1) {                tmp1 = arr[i];            }        }        return tmp;//        return tmp1;    }}
View Code

04-数组(排序-选择排序)

Eg:对给定数组进行排序。

选择排序:内循环结束一次,最值出现头角标位置上。

package myFirstCode;/* * 对给定数组进行排序。 * {5,1,6,4,2,8,9} */public class ArrayTest2 {    public static void main(String[] args) {        // TODO Auto-generated method stub        int[] arr = {5,1,6,4,2,8,9};        //排序前:        printArray(arr);        //排序        selectSort(arr);        //排序前:        printArray(arr);    }        public static void printArray(int[] arr) {        System.out.print("[");        for (int i = 0; i < arr.length; i++) {            if (i != arr.length - 1) {                System.out.print(arr[i] + ",");            } else {                System.out.println(arr[i]+"]");            }        }    }    //选择排序    public static void selectSort(int[] arr){                for (int i = 0; i < arr.length-1; i++) {            for (int j = i+1; j < arr.length; j++) {                if (arr[i]
View Code

05-数组(排序-冒泡排序)

冒泡排序:相邻的两个元素进行比较,如符合条件换位。第一圈:最值出现了最后位。

Eg:对给定数组进行排序。

public static void swap(int[] arr,int a,int b){        int temp = arr[a];        arr[a] = arr[b];        arr[b] = temp;    }
View Code

***//Arrays.sort(arr); // java中已经定义好的一种排序方式,开发中,对数组排序,要使用此方法。***

package myFirstCode;/* * 对给定数组进行排序。 * {5,1,6,4,2,8,9} */public class ArrayTest2 {    public static void main(String[] args) {        // TODO Auto-generated method stub        int[] arr = {5,1,6,4,2,8,9};        //排序前:        printArray(arr);        //排序        selectSort(arr);        //排序前:        printArray(arr);    }        public static void printArray(int[] arr) {        System.out.print("[");        for (int i = 0; i < arr.length; i++) {            if (i != arr.length - 1) {                System.out.print(arr[i] + ",");            } else {                System.out.println(arr[i]+"]");            }        }    }        public static void selectSort(int[] arr){                for (int i = 0; i < arr.length-1; i++) {            for (int j = i+1; j < arr.length; j++) {                if (arr[i]
View Code

06-数组(排序-位置置换功能抽取)

 任何排序,都需要对满足条件的元素进行位置置换,所以可以把这部分相同的代码提取出来,单独封装成一个函数。

Eg:

public static void swap(int[] arr,int a,int b){        int temp = arr[a];        arr[a] = arr[b];        arr[b] = temp;    }
View Code

07-数组(折半查找)

数组的查找

package myFirstCode;/* * 数组的查找 */public class ArrayTest4 {    public static void main(String[] args) {        // TODO Auto-generated method stub        int[] arr = {3,1,5,4,2,9};        int index = getIndex(arr,2);        System.out.println("index="+index);    }    //定义功能,获取key第一次出现在数组中的位置,如果返回是-1,那么代表该key在数组中不存在。    public static int getIndex(int[] arr,int key)    {        for (int i = 0; i < arr.length; i++) {            if(arr[i]==key)                return i;                    }        return -1;    }}
View Code

折半查找

package myFirstCode;/* * 数组的查找 */public class ArrayTest4 {    public static void main(String[] args) {        // TODO Auto-generated method stub        // int[] arr = {3,1,5,4,2,9};        // int index = getIndex(arr,2);        int[] arr = { 1, 3, 5, 7, 9, 25, 33 };        int index = halfSearch(arr, 9);        System.out.println("index=" + index);    }        /*     * 折半的第二种方式。     */    public static int halfSearch2(int[] arr,int key)    {        int min = 0,max = arr.length-1,mid;        while (min<=max) {            mid = (max+min)>>1;// >>1 等于 /2            if(key>arr[mid])                min = mid + 1;            else if(key
arr[mid]) min = mid + 1; else if (key < arr[mid]) max = mid - 1; if (min > max) return -1; mid = (max + min) / 2; } return mid; } // 定义功能,获取key第一次出现在数组中的位置,如果返回是-1,那么代表该key在数组中不存在。 public static int getIndex(int[] arr, int key) { for (int i = 0; i < arr.length; i++) { if (arr[i] == key) return i; } return -1; }}
View Code

练习,有一个有序的数组,想要将一个元素插入到该数组中,还要保证该数组是有序的。

/*     * 练习,有一个有序的数组,想要将一个元素插入到该数组中,还要保证该数组是有序的。     */    public static int getIndex_2(int[] arr,int key)    {        int min = 0,max = arr.length-1,mid;        while (min<=max) {            mid = (max+min)>>1;// >>1 等于 /2            if(key>arr[mid])                min = mid + 1;            else if(key
View Code

08-数组(十进制-二进制)

Eg:

public class ArrayTest5 {    public static void main(String[] args) {        // TODO Auto-generated method stub        toBin(6);    }    public static void toBin(int num)    {        StringBuffer sb = new StringBuffer();        while (num > 0)         {            sb.append(num%2);            num = num / 2;            }        System.out.println(sb.reverse());            }}
View Code

09-数组(十进制-十六进制)

Eg:

package myFirstCode;public class ArrayTest5 {    public static void main(String[] args) {        // TODO Auto-generated method stub        toBin(6);        toHex(60);    }    public static void toHex(int num)    {        StringBuffer  sb = new StringBuffer();        for (int x = 0; x < 8; x++)         {            int temp = num & 15;            if(temp>9)                sb.append((char)(temp-10+'A'));            else                sb.append(temp);                        num = num >>>4;        }        System.out.println(sb.reverse());    }            public static void toBin(int num)    {        StringBuffer sb = new StringBuffer();        while (num > 0)         {            sb.append(num%2);            num = num / 2;            }        System.out.println(sb.reverse());            }}
View Code

 

10-数组(查表法十进制-十六进制)

11-数组(查表法十进制-二进制)

12-数组(进制转换优化)

13-数组(二维数组)

int[][] arr = new int[3][4]; //定义了名称为arr的二维数组。二维数组中有3个一维数组。

              //每一个一维数组中有四个元素。

package myFirstCode;public class Array2Demo {    public static void main(String[] args) {//        // TODO Auto-generated method stub//        //int[] arr = new int[3];//一维数组//        int[][] arr = new int[3][4];//定义了名称为arr的二维数组。二维数组中有3个一维数组。//                                    //每一个一维数组中有四个元素。//        System.out.println(arr[0]);        /*        int[][] arr = new int[3][];                arr[0] = new int[3];        arr[1] = new int[1];        arr[2] = new int[2];                System.out.println(arr.length);        System.out.println(arr[2].length);        */        int[][] arr = {
{3,5,7,9},{2,3,4,6},{1,5,8,9}}; int sum = 0; for (int x = 0; x < arr.length; x++) { for (int y = 0; y < arr[x].length; y++) { sum = sum + arr[x][y]; } } System.out.println("sum="+sum); }}
View Code

14-数组(二维数组练习)

一维数组--int[] x;int x[];

二维数组--int[][] y;int y[][];int[] y[];

int[] x,y[];  --等同于--  int[] x; int[] y[];

转载于:https://www.cnblogs.com/SH-xuliang/p/6863065.html

你可能感兴趣的文章
Spring Mvc模式下Jquery Ajax 与后台交互操作
查看>>
(转)matlab练习程序(HOG方向梯度直方图)
查看>>
tableView
查看>>
Happy Great BG-卡精度
查看>>
TCP/IP 邮件的原理
查看>>
原型设计工具
查看>>
windows下的C++ socket服务器(4)
查看>>
css3 2d转换3d转换以及动画的知识点汇总
查看>>
计算机改名导致数据库链接的诡异问题
查看>>
Java8内存模型—永久代(PermGen)和元空间(Metaspace)(转)
查看>>
ObjectiveC基础教程(第2版)
查看>>
centos 引导盘
查看>>
Notes of Daily Scrum Meeting(12.8)
查看>>
Apriori算法
查看>>
onlevelwasloaded的调用时机
查看>>
lr_start_transaction/lr_end_transaction事物组合
查看>>
CodeIgniter学习笔记(四)——CI超级对象中的load装载器
查看>>
.NET CLR基本术语
查看>>
ubuntu的home目录下,Desktop等目录消失不见
查看>>
建立,查询二叉树 hdu 5444
查看>>