• 2017年3月10号课堂笔记


    2017年3月10号  晴 空气质量:良

    主要内容:数组,二维数组

    一、操作数组的工具类Arrays

    1、老师代码:

    /**
    * 操作数组的工具类!
    *
    */
    public class Arrays02 {

    // equals(arr1, arr2) :比较两个数组的内容和长度 是否一致
    @Test
    public void testEquals() {
    int[] nums1 = { 10, 20, 30, 50 };
    int[] nums2 = nums1;
    int[] nums3 = { 10, 20, 30 };
    System.out.println("nums1与nums2比较:" + Arrays.equals(nums1, nums2));
    System.out.println("nums1==nums2比较:" + (nums1 == nums2));
    }

    // sort(arr):对数组中的元素进行升序的排列
    @Test
    public void testSort() {
    int[] nums = { 10, 50, 30, 20 };
    Arrays.sort(nums);
    for (int i = 0; i < nums.length; i++) {
    System.out.println(nums[i]);
    }
    }

    /**
    * toString :把一个数组变成字符串
    * [10, 50, 30, 20] 集合toString的结果!
    */
    @Test
    public void testToString() {
    int[] nums = { 10, 50, 30, 20 };
    System.out.println(Arrays.toString(nums));
    }

    /**
    * fill(arr,val):将arr数组中的所有元素都赋值成了val
    */
    @Test
    public void testFill() {
    int[] nums = { 10, 50, 30, 20 };
    System.out.println(Arrays.toString(nums));
    Arrays.fill(nums, 100);
    System.out.println(Arrays.toString(nums));
    }

    /**
    * copyOf(arr,length):将数组arr复制成一个长度为length的新数组!
    */
    @Test
    public void testCopyOf() {
    int[] nums = { 10, 50, 30, 20 };
    int[] nums1 = Arrays.copyOf(nums, 3);
    System.out.println(Arrays.toString(nums1));
    }

    /**
    * binarySearch(arr,val):查询val在arr数组中的下标!
    * 必须先升序排列! Arrays.sort(arr)!!!!
    */
    @Test
    public void testBinarySearch() {
    int[] nums = { 10, 50, 30, 20 };
    Arrays.sort(nums); // 10 20 30 50
    System.out.println(Arrays.binarySearch(nums, 50));
    }

    }

    2、自己代码:

    package cn.bdqn.test;

    import java.util.Arrays;

    /**
    *
    *<P>Title<P>ArraysDemo04
    *<P>Description<P>
    *
    * @author alex
    * @date 2017-3-10上午9:04:40
    * You can either travel or read,but either your body or soul must be on the way
    */
    public class ArraysDemo04 {

    public static void main(String[] args) {
    System.out
    .println("****************equals(arr1,arr2)*******************");
    // equals(arr1,arr2):比较两个数组内容和长度是否一致;
    int[] nums1 = { 10, 20, 30, 50 };
    int[] nums2 = { 10, 20, 30, 50 };
    int[] nums3 = { 10, 70, 30, 20 };
    System.out.println("数组num1和num2的比较结果是:" + Arrays.equals(nums1, nums2));
    System.out.println("******************sort(arr)*******************");
    // sort(arr):对数组中的元素进行升序的排列
    Arrays.sort(nums3);
    for (int i = 0; i < nums3.length; i++) {
    System.out.print(nums3[i] + " ");
    }
    System.out
    .println(" *******************toString*********************");
    // toString :把一个数组变成字符串
    // [10, 20, 30, 70] 集合toString的结果!
    System.out.println(Arrays.toString(nums3));
    System.out.println("****************fill(arr,val)*****************");
    // fill(arr,val):将arr数组中的所有元素都赋值成了val
    Arrays.fill(nums2, 66);
    for (int i = 0; i < nums2.length; i++) {
    System.out.println(nums2[i] + " ");
    }
    System.out.println("**********copyOf(arr,length)***********");
    // copyOf(arr,length):将数组arr复制成一个长度为length的新数组!
    int[] nums4 = Arrays.copyOf(nums1, 6);
    for (int i = 0; i < nums4.length; i++) {
    System.out.print(nums4[i] + " ");
    }
    System.out.println(" *********binarySearch(arr,val)********");
    // binarySearch(arr,val):查询val在arr数组中的下标!
    // 必须先升序排列! Arrays.sort(arr)!!!!
    Arrays.sort(nums4);
    System.out.println(Arrays.binarySearch(nums4, 20));
    }
    }

    二、打擂法和插入算法

    1、老师代码:

    // 打擂法 求数组中的最大值
    @Test
    public void test01() {
    int[] nums = { 10, 50, 30, 200 };
    // 默认的擂主
    int max = nums[0];
    // 让max依次和nums中的每一个元素进行比较
    for (int i = 0; i < nums.length; i++) {
    if (max < nums[i]) {
    max = nums[i];
    }
    }
    System.out.println("最大值:" + max);
    }

    /**
    * 插入算法
    */
    @Test
    public void test02() {
    // 先定义一个有序的数组
    int[] nums = new int[5];
    nums[0] = 100;
    nums[1] = 90;
    nums[2] = 80;
    nums[3] = 10;
    Scanner scanner = new Scanner(System.in);
    System.out.println("请您输入一个插入的数据:");
    int num = scanner.nextInt();
    // 01.找到需要插入数据的位置
    int index = nums.length;
    // 02.循环找到位置
    for (int i = 0; i < nums.length; i++) {
    if (num > nums[i]) {
    index = i; // 下标
    break;
    }
    }
    // 03.元素后移
    for (int j = nums.length - 1; j > index; j--) {
    nums[j] = nums[j - 1]; // 依次后移
    }
    // 04.插入数据
    nums[index] = num;
    System.out.println("插入数据的下表是:" + index);
    System.out.println(Arrays.toString(nums));

    }

    2、自己代码:

    package cn.bdqn.test;

    /**
    *
    *<P>Title<P>ArraysDemo05
    *<P>Description<P>
    * 求最大值和插入数据
    * @author alex
    * @date 2017-3-10上午10:03:48
    * You can either travel or read,but either your body or soul must be on the way
    */
    import java.util.Arrays;
    import java.util.Scanner;

    public class ArraysDemo05 {
    public static void main(String[] args) {
    int[] nums = new int[6];
    nums[0] = 10;
    nums[1] = 30;
    nums[2] = 70;
    nums[3] = 90;
    nums[4] = 100;
    // 1、求最大值(打擂法)
    int max = nums[0];// 假定nums[0]为最大值(擂主)
    // 循环判断(打擂)
    for (int i = 0; i < nums.length; i++) {
    if (max < nums[i]) {
    max = nums[i];
    }
    }
    System.out.println("数组中最大值为:" + max);
    System.out.println("************************");
    // 2、插入数据
    // 提示用户输入要插入的数据
    Scanner input = new Scanner(System.in);
    System.out.println("请输入想要插入的数据:");
    int insert = input.nextInt();
    int index = nums.length;// 定义要插入的下标位置
    for (int i = 0; i < nums.length; i++) {
    if (insert < nums[i]) {
    index = i;
    break;
    }
    }
    // 后移数据
    for (int j = nums.length - 1; j > index; j--) {
    nums[j] = nums[j - 1];
    }
    // 插入新数据
    nums[index] = insert;
    // 输出验证
    System.out.println(Arrays.toString(nums));
    }
    }

    三、逆序输出字符及插入字符

    1、老师代码:

    public class CharSort03 {

    /**
    * 字符的逆序输出
    */
    public static void main(String[] args) {
    char[] chars = { 'a', 'f', 'c', 'g', 'z', 'y' };
    // 升序
    Arrays.sort(chars);
    System.out.println("升序之后的字符===》" + Arrays.toString(chars));
    // 逆序
    System.out.println("逆序之后的字符====");
    for (int i = chars.length - 1; i >= 0; i--) {
    System.out.print(chars[i]);
    }
    }

    @Test
    public void test01() {
    // char类型的默认值: 'u0000'
    char[] chars = { 'a', 'c', 'f', 'g', 'y', 'z', 'u0000' }; // 必须有顺序

    System.out.println(chars.length);
    char c = 'x'; // 需要插入的字符
    int index = chars.length;
    // 找下标
    for (int i = 0; i < chars.length; i++) {
    if (c < chars[i]) {
    index = i;
    break;
    }
    }
    // 元素后移
    for (int j = chars.length - 1; j > index; j--) {
    chars[j] = chars[j - 1];
    }
    // 插入数据
    chars[index] = c;
    for (int i = 0; i < chars.length; i++) {
    System.out.print(chars[i]);
    }
    }
    }

    2、自己代码:

    package cn.bdqn.test;

    import java.util.Arrays;

    /**
    *
    *<P>Title<P>ArraysDemo06
    *<P>Description<P>
    * 字符逆序输出及插入:
    * a c u b e p f z
    * 1)进行升序和逆序输出
    * 2)向字符序列中插入新的字符
    * 插入后字符序列仍保持有序
    * @author alex
    * @date 2017-3-10上午10:07:57
    * You can either travel or read,but either your body or soul must be on the way
    */
    public class ArraysDemo06 {
    public static void main(String[] args) {
    char[] arr = { 'a', 'c', 'u', 'b', 'e', 'p', 'f', 'z', 'u0000' };
    // 升序输出
    Arrays.sort(arr);
    System.out.print("*******升序输出****** ");
    for (int i = 0; i < arr.length; i++) {
    System.out.print(arr[i]);
    }
    System.out.print(" *******逆序输出****** ");
    // 逆序输出
    for (int i = arr.length - 1; i > 0; i--) {
    System.out.print(arr[i]);
    }
    // 插入新字符
    char character = 'k';
    int index = arr.length;
    // 找位置
    for (int i = 0; i < arr.length; i++) {
    if (character < arr[i]) {
    index = i;
    break;
    }
    }
    // 数据后移
    for (int j = 0; j < index - 1; j++) {
    arr[j] = arr[j + 1];
    }
    // 插入数据并输出插入后的数组
    arr[index - 1] = character;
    System.out.print(" *******插入后输出****** ");
    for (int i = 0; i < arr.length; i++) {
    System.out.print(arr[i]);
    }
    }
    }

    四、二维数组(结合双重循环知识)

    难点:1)nullpointerexception(引用数据需要实例化(开辟空间),默认值是null)

    2)对二维数组和双重循环的理解

    1、老师代码:

    public class DoubleArray04 {

    public static void main(String[] args) {

    int[] clazz = new int[3]; // 保存班级
    int[] students = new int[5]; // 保存学生

    }

    @Test
    public void test01() { // 声明的同时开辟空间
    int[][] nums = new int[3][5]; // 3个班级各5名学生
    }

    @Test
    public void test02() { // 先声明 再 开辟空间
    int[][] nums;
    nums = new int[3][5]; // 3个班级各5名学生
    }

    @Test
    public void test03() { // 声明 开辟空间的同时赋值
    int[][] nums = { { 1, 2, 3, 4, 5 }, { 1, 2, 3, 4, 5 },
    { 1, 2, 3, 4, 5 } };
    System.out.println(nums.length);// 3个班级各5名学生
    }

    @Test
    public void test04() {
    int[][] nums = new int[3][5]; // 3个班级各5名学生
    // 第二个班级的第三个学生
    nums[1][2] = 50;
    }

    @Test
    public void test05() {
    int[][] nums = { { 1, 2, 3 }, { 10, 20, 30 }, { 100, 200, 300 } };

    /**
    * nums.length 车厢数
    * nums[i].length 车厢中的座位数
    * 双重循环:
    * 外层循环执行一次,内存循环执行一遍!
    */
    for (int i = 0; i < nums.length; i++) {
    System.out.println("进入了第" + (i + 1) + "个车厢**********");
    if (i == 2) {
    break; // 跳出当前循环体
    }
    for (int j = 0; j < nums[i].length; j++) {
    if (j == 2) {
    break; // 跳出当前循环体
    }
    System.out.println(nums[i][j]);
    }
    }
    }

    /**
    * 所有的引用数据类型如果没有实例化(开辟空间)! 不能使用!
    * 因为引用数据类型的默认值 是 null!
    */
    @Test
    public void test06() {

    int[][] nums = new int[5][];
    System.out.println(nums.length);
    nums[0] = new int[5]; // 开辟空间
    nums[1] = new int[6];

    nums[0][0] = 50; // 使用
    nums[0][1] = 60;
    nums[0][2] = 70;
    nums[0][3] = 80;
    System.out.println(nums[0].length);
    System.out.println(nums[1].length);
    }

    }

    2、自己代码:(复制老师代码测试体会)

    package cn.bdqn.test;

    import org.junit.Test;

    /**
    *
    *<P>Title<P>ArraysDemo07
    *<P>Description<P>
    * 二维数组(老师代码复制过来消化)
    * @author alex
    * @date 2017-3-10下午4:11:41
    * You can either travel or read,but either your body or soul must be on the way
    */
    public class ArraysDemo07 {

    public static void main(String[] args) {

    int[] clazz = new int[3]; // 保存班级
    int[] students = new int[5]; // 保存学生
    System.out.println(clazz.length);
    System.out.println(students.length);
    }

    @Test
    public void test01() { // 声明的同时开辟空间
    int[][] nums = new int[3][5]; // 3个班级各5名学生
    System.out.println(nums.length);
    }

    @Test
    public void test02() { // 先声明 再 开辟空间
    int[][] nums;
    nums = new int[3][5]; // 3个班级各5名学生
    System.out.println(nums.length);
    }

    @Test
    public void test03() { // 声明 开辟空间的同时赋值
    int[][] nums = { { 1, 2, 3, 4, 5 }, { 1, 2, 3, 4, 5 },
    { 1, 2, 3, 4, 5 } };
    System.out.println(nums.length);// 3个班级各5名学生
    }

    @Test
    public void test04() {
    int[][] nums = new int[3][5]; // 3个班级各5名学生
    // 第二个班级的第三个学生
    nums[1][2] = 50;
    }

    @Test
    public void test05() {
    int[][] nums = { { 1, 2, 3 }, { 10, 20, 30 }, { 100, 200, 300 } };

    /**
    * nums.length 车厢数
    * nums[i].length 车厢中的座位数
    * 双重循环:
    * 外层循环执行一次,内存循环执行一遍!
    */
    for (int i = 0; i < nums.length; i++) {
    System.out.println("进入了第" + (i + 1) + "个车厢**********");
    if (i == 2) {
    break; // 跳出当前循环体
    }
    for (int j = 0; j < nums[i].length; j++) {
    if (j == 2) {
    break; // 跳出当前循环体
    }
    System.out.println(nums[i][j]);
    }
    }
    }

    /**
    * 所有的引用数据类型如果没有实例化(开辟空间)! 不能使用!
    * 因为引用数据类型的默认值 是 null!
    */
    @Test
    public void test06() {

    int[][] nums = new int[5][];
    System.out.println(nums.length);
    nums[0] = new int[6]; // 开辟空间
    nums[1] = new int[7];

    nums[0][0] = 50; // 使用
    nums[0][1] = 60;
    nums[0][2] = 70;
    nums[0][3] = 80;
    System.out.println(nums[0].length);
    System.out.println(nums[1].length);
    // System.out.println(nums[2].length);未开辟空间,报错nullpointerexception
    }

    }

     最后一个demo的输出截图:

    /**
    * 所有的引用数据类型如果没有实例化(开辟空间)! 不能使用!会报错(nullpointerexception)

    * 因为引用数据类型的默认值 是 null!
    */

    五、考试

    2017.03.10

    15:02 开始,15:24 结束;答题时间:22 分钟;检查时间:0 分钟;
    成绩:98分

    六、作业

    1、吃货联盟(下周一交)---->Come on!

    2、视频看到继承--->Fighting!

    3、做题(每天保持做题感觉)

    七、老师辛苦了!

  • 相关阅读:
    CSS BEM 命名规范简介
    React 端的编程范式
    在React应用程序中用RegEx测试密码强度
    React 中获取数据的 3 种方法及它们的优缺点
    vue props传值常见问题
    如何理解vue中的v-model?
    利用jQuery not()方法选取除某个元素外的所有元素
    初识Nest.js
    react-绑定this并传参的三种方式
    Angular怎么防御xss攻击?
  • 原文地址:https://www.cnblogs.com/wsnedved2017/p/6530514.html
Copyright © 2020-2023  润新知