Java 学习 day04

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]);
            }
        }
    }

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;
    }

}

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]<arr[j]) {
                    int temp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = temp;
                }
            }
        }
    }

//冒泡排序
    public static void bubbleSort(int[] arr)
    {
        for (int i = 0; i < arr.length-1; i++)
        {
            for (int j = 0; j < arr.length-i-1; j++) //-x:让每一次比较的元素减少,-1:避免角标越界。
            {
                if (arr[j]<arr[j+1])
                {
                    int temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;

                }
            }
        }
    }
}

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

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

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]<arr[j]) {
                    int temp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = temp;
                }
            }
        }
    }
}

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

时间: 2024-08-09 16:20:05

Java 学习 day04的相关文章

2016最新Java学习计划

一.Java学习路线图 二.Java学习路线图--视频篇 六大阶段 学完后目标 知识点 配套免费资源(视频+笔 记+源码+模板) 密码        第一阶段 Java基础 入门 学习周期: 35天 学完后目标: 1.可进行小型应用程序开发 2.对数据库进行基本的增删改查管理 市场价值:¥5000 计算机基础知识 计算机基础.DOS常用命令.Java概述.JDK环境安装配置.环境变量配置.Java程序入门 1.2015年Java基础视频-深入浅出精华版(强烈推荐) 2.历经5年锤炼(适合初学者入

Java学习第5天

---恢复内容开始--- 今天是2016年5月4号,今天是学习JAVA学习的第5天!今天的主要学习任务是对二维数组的学习. P96 3.7.5 二维数组 动态初始化 数据类型 数组名称 [][]=new 数据类型[行数][列数]   ; 如,int a[][]=new int[7][8]; 静态初始化 数据类型 数组名称 [][]=new 数据类型 [][]{ {值,值,...},{值,值,...},...}; 如,int a[][]=new int[][]{ {1,2,3},{54,6},{8

Java学习-008-判断文件类型实例

此文源码主要为应用 Java 如何判断文件类型的源码及其测试源码.若有不足之处,敬请大神指正,不胜感激!源代码测试通过日期为:2015-2-2 23:02:00,请知悉. Java 判断文件类型源码如下所示: 1 /** 2 * @function 判断文件类型 3 * 4 * @author Aaron.ffp 5 * @version V1.0.0: autoUISelenium main.java.aaron.java.tools FileUtils.java assertFileType

疯狂JAVA学习计划

? Java_StudyPlane ?2015/2/20 ????????大年初二 ????????雨天 1.5小时为1个课时. JAVA学习进度表

java学习教程之代码块

学编程吧java学习教程之代码块发布了,欢迎通过xuebiancheng8.com来访问 java中的代码块包括下面几种: 1.普通代码块 2.构造代码块 3.静态代码块 1.普通代码块很简单看下面这个例子: public class Test{ public static void main(String args[]){ { //此处就是普通代码块,普通代码块中的代码按顺序执行 System.out.println("hello"); } } } 2.构造代码块 public cl

Java学习作业(14.4.21)

前三次作业都是基础语法.真的好水啊.从这次开始记录. 1.编写Java程序,把当前目录下扩展名为txt的文件的扩展名全部更名为back. 1 import java.io.*; 2 import java.lang.*; 3 4 5 public class Home { 6 7 public void reName(String path, String from, String to) { 8 File f = new File(path); //声明File对象,用于导入修改路径 9 Fi

【分享】不知道怎么学java?java学习路线送上!让你不再迷茫!

学习Java之前,先别急,静下心来好好想想:1)你对学习Java是否有兴趣?2)你是否能静下心来坚持不懈地学习?嗯,这是个容易但又绝对不应该忽略的问题,你确信自己对Java感兴趣.而且又有吃苦的准备,那你才可能学好Java!如果具备这两点条件,就请继续往下看(帖子后面我会分享一些java学习教程)Java体系涉及到三个方面:J2SE,J2EE,J2ME(KJAVA).(1)J2SE--Java 2 Platform Standard Edition,即JDK,它是三者的基础,属于桌面级应用开发:

Java 学习路线建议

在大家看之前,我要先声明两点.1.由于我本人是Java后端开发出身,因此所推荐的学习内容是Java Web和Java后端开发的路线,非Java Web和Java后端开发的同学请适当参考其学习思想即可,切勿照搬.2.下面对于[第一部分]的推荐内容,目的是让你尽快成为一个可以参加工作的Java开发者,更适用于处于待业状态,准备转行Java的同学. 如果你是在校学生,务必要在学好基础(比如计算机系统.算法.编译原理等等)的前提下,再考虑去进行下面的学习.第一部分:对于尚未做过Java工作的同学,包括一

Java学习轨迹【面向对象】(持续更新)

其中部分内容为其他博主所作,侵删 6月12日-7月每日更新 Java学习轨迹 一.面向对象 类和对象 1. new关键字所完成的事情 1)为对象开辟了新的内存空间 2)调用类的构造方法 3)返回生成对象的地址 Dog dog=new Dog(); dog是引用,new Dog()生成了一个Dog对象,引用dog指向所生成对象的地址 2.构造方法 1)构造方法必须与类名相同 2)构造方法没有返回值[且不能使用void作返回值] 3)如果在定义类的时候没有为类声明构造方法java编译器会自动为类添加