零基础入门学习java课堂笔记——day04

StarVik——一颗努力在学习得行星      2022-06-06     125

关键词:

Java数组

1.数组概述

定义:数组是相同类型的有序集合,同一组同一类型的数据可以按照先后次序排列组合在一起,其中一个数据可以称为元素,每个数组元素可以通过一个下表访问它们

2.数组声明创建

dataType[] arrayRefVar; //first
dataType arrayRefVar[]; //no first

数组也是一种对象,可以通过new操作符创建数组对象,如下:

dataType[] arrayRefVar = new dataType[arraySize];
//我们可以通过数组.length属性获取其中的arraySize
let leng = arrayRefVar.length;

实例:在Java代码中创建数组

public class Demo3 {
    public static void main(String[] args){
        int[] sums = {}; //定义一个空数组
        int[] sums2 = {1,2,3,53,565,24,6,6,343,664,355};//定义包含1,2,3的数组

        //使用指针定义数组
        int[] sums4 = new int[10];
        int[] sums5 = {3,2,3,2};

        //使用第一种for循环遍历数组 计算总和
        int total = 0;
        System.out.println("==============>第一种");
        for (int i : sums2) {
            total+=i;
        }
        System.out.println("total:"+total);
        System.out.println("==============>第二种");
        //使用第二种for循环遍历数组
        for(int i = 0;i < sums5.length; i++){
            System.out.println(sums5[i]);
        }
    }
}

在Java中如果每给数组元素初始化,那么默认值为0

数组大小是固定的,一旦定义无法改变

3. Java内存分析

image

image

数组的3种初始化方式


public class Demo3 {
    public static void main(String[] args){
        //静态初始化 定义+初始化 Java会自动计算数组大小
        int[] dataArr = {2021,5,20};

        //引用类型的数组
        Demo3[] demoData = {new Demo3(),new Demo3()};

        //动态初始化数组,利用new关键词创建 需要后期给他赋值
        //没有初始化默认是0
        int[] dataArr2 = new int[3];
        for (int i = 0; i < dataArr2.length; i++)
            dataArr2[i] = i;//遍历数组 然后主意赋值
        
    }

}

4.数组的基本特点

  • 确定的长度 一旦创建无法更改
  • 必须是相同类型的有序集合
  • 可以是如何数据包括引用类型
  • 数组本身属于引用类型,是一种对象,Java对象存放在堆中
    • 只要是new出来的对象都是在堆中

数组边界


数组的合法区间:[0,length-1]

如果越界就会报错

ArrayIndexOutOfBoundsException:数组下标越界异常

public static void main(String[] args){
    int[] ten = new int[10];
    System.out.println(a[10]); //error!!!
}

练习题:数组逆序

public class Demo3 {
    public static void main(String[] args){
        int[] arrays = {1,2,3,4,5,6,7,8,9};
        int[] res = reverse(arrays);
        for (int re : res) {
            System.out.println(re);
        }
    }

    public static int[] reverse(int[] arr){
        int[] temp = new int[arr.length];
        for(int i = arr.length-1,j = 0;i >= 0; i--,j++){
            temp[j] = arr[i];
        }

        return temp;
    }
}

5.二维数组

image

二维数组的定义方法:

int[][] array = {{123,3},{23,43},{22,544}};

image

二位数组的调用:

public class Demo3 {
    public static void main(String[] args){
        int[][] ewArr = {{1,23,4,42},
                         {22,54,23,54},
                         {23,43,23,34,54}
                        };
        System.out.println(ewArr[0][1]);//获取第一行第二列的元素
        
    }
}

遍历二维数组:

public class Demo3 {
    public static void main(String[] args){
        int[][] ewArr = {{1,23,4,42},
                         {22,54,23,54},
                         {23,43,23,34,54}
                        };
        for(int i = 0;i < ewArr.length;i++){
            for(int j = 0;j < ewArr[i].length;j++){
                System.out.print(ewArr[i][j]+"\t");
            }
            System.out.println("");
        }
        System.out.println("===============>");
        //利用for-each循环打印
        for(int i = 0;i < ewArr.length;i++){
            for(int item:ewArr[i]){
                System.out.print(item+"\t");
            }
            System.out.println("");
        }
    }

}

6. Arrays类

import java.util.Arrays
import java.util.Arrays;

public class Demo3 {
    public static void main(String[] args){
        int[] arr = {10,23,4,56,34,22,65,32,62};

        //数组排毒
        Arrays.sort(arr);
        //把数组转换为字符串
        String str = Arrays.toString(arr);
        System.out.println(str);
        //通过fill方法快速赋值
        Arrays.fill(arr,0,arr.length,5201314);
        // = Arrays.fill(arr,5201314);
        System.out.println(Arrays.toString(arr));
    }
}

拓展:Java中Arrays类的常用方法

7.冒泡排序

import java.util.Arrays;

public class Demo3 {
    public static void main(String[] args){
        int[] arr = {10,23,4,56,34,22,65,32,62};

        for (int i = 0; i < arr.length; i++) {
            for (int j = i; j < arr.length; j++) {
                if(arr[i] < arr[j] ){
                    arr[i] = arr[i] + arr[j];//4 + 5 = 9
                    arr[j] = arr[i] - arr[j];//9 - 5 = 4
                    arr[i] = arr[i] - arr[j];//9 - 4 = 5
                }
            }
        }
        System.out.println(Arrays.toString(arr));
    }
}

冒泡排序的时间复杂度为:O(n^2)

java入门零基础小白教程day04-数组(代码片段)

day04_java基础课程目标1.【掌握】IDEA的基本使用2.【理解】什么是数组3.【掌握】数组的定义及初始化4.【理解】数组的内存图6.【理解】数组常见的问题7.【掌握】数组的案例8.【理解】二维数组开发工具一维数组什么是数组数组... 查看详情

javascript零基础入门|day1:javascript表格(代码片段)

🍅Java学习路线思维导图: Java学习路线思维导图🍅Java学习路线总结:搬砖工逆袭Java架构师🍅Java经典面试题大全:10万字208道Java经典面试题总结(附答案)🍅简介:Java领域优质创作者🏆、CSDN... 查看详情

java零基础小白入门上手教程day15-泛型&file(代码片段)

day15_JAVAOOP课程目标1.【理解】什么是泛型2.【掌握】泛型的基本使用3.【理解】什么是Collections工具类4.【理解】什么是File类5.【掌握】File类的常用功能6.【掌握】打印多级目录案例7.【掌握】文件搜索案例泛型泛型概述​在前面... 查看详情

java零基础小白入门上手教程day15-泛型&file(代码片段)

day15_JAVAOOP课程目标1.【理解】什么是泛型2.【掌握】泛型的基本使用3.【理解】什么是Collections工具类4.【理解】什么是File类5.【掌握】File类的常用功能6.【掌握】打印多级目录案例7.【掌握】文件搜索案例泛型泛型概述​在前面... 查看详情

java超简明入门学习笔记(零)

Java编程思想第4版学习笔记(零)前言     这个笔记本主要记录了我在学习Java编程思想(第4版,中文版)的过程中遇到的重难点及其分析。主要参考了C++11版本的C++语言,对比了它们不同的部分。   ... 查看详情

前端零基础入门学习

不管任何行业、任何技术,零基础的人要入门都是要踩很多的坑的,但是时间宝贵,如果有人能帮你避坑,帮你解决问题,效率会更高,少花一些时间走弯路。点击前端学习笔记进行学习 查看详情

java基础学习笔记day01

      java基础学习笔记day011.软件开发:  软件:按照特定顺序组织的计算机数据和指令的集合  开发:软件的制作过程  软件开发:借助开发工具和计算机语言制作软件2.java概述:  java之父:詹姆斯·高斯林 ... 查看详情

从0开始入门python一个半月的三万字学习笔记汇总!!!(代码片段)

python学习DAY01-DAY04基础操作DAY05-DAY09基本模块常用pip源(1)阿里云http://mirrors.aliyun.com/pypi/simple/(2)豆瓣http://pypi.douban.com/simple/(3)清华大学https://pypi.tuna.tsinghua.e 查看详情

java入门零基础小白教程day06-类和对象(代码片段)

4day06-JAVAOOP课程目标1.【理解】什么是面向对象2.【理解】类和对象的关系3.【掌握】类的定义和使用4.【掌握】三大特征之封装5.【掌握】this关键字的使用一.面向对象概述1.1什么是面向对象Java语言是一种面向对象的程序设计语言... 查看详情

java入门零基础小白教程day06-类和对象(代码片段)

4day06-JAVAOOP课程目标1.【理解】什么是面向对象2.【理解】类和对象的关系3.【掌握】类的定义和使用4.【掌握】三大特征之封装5.【掌握】this关键字的使用一.面向对象概述1.1什么是面向对象Java语言是一种面向对象的程序设计语言... 查看详情

java入门零基础小白教程day07_继承&抽象(代码片段)

day07-JAVAOOP课程目标1.【理解】什么是继承2.【掌握】继承的使用3.【理解】继承中的成员的特点4.【理解】super和this的作用5.【理解】什么是抽象6.【掌握】抽象的使用一.继承1.1继承概述多个类中存在相同属性和行为时,将这... 查看详情

java入门零基础小白教程day07_继承&抽象(代码片段)

day07-JAVAOOP课程目标1.【理解】什么是继承2.【掌握】继承的使用3.【理解】继承中的成员的特点4.【理解】super和this的作用5.【理解】什么是抽象6.【掌握】抽象的使用一.继承1.1继承概述多个类中存在相同属性和行为时,将这... 查看详情

day09java基础学习笔记

抽象abstract抽象类和抽象方法必须用abstract关键字修饰抽象类格式abstractclass类名{}抽象方法定义,在返回值钱,或修饰符前加上abstract关键字方法没有方法体,即:没有{}abstractpublicvoideat();publicabstractvoideat();抽象类不一定有抽象方... 查看详情

day12java基础学习笔记

集合/集合框架(List)数组和集合的区别数组长度固定的,一旦定义,就无法改变集合长度可变数组中可以粗出基本数据类型,也可以是对象(实际上是对象的引用集合只能存储对象的引用)Java集合体系:分为Collection和Map两种... 查看详情

day02java基础学习笔记

一、数据类型1.java中默认的整数类型就是int型;但一个数值很小在byte、short的取值范围内时,可以通过赋值来改变数据类型,比如:byte=12;short=15;如果数值过大超过了int的取值范围,java不会把它默认成long类型,需要在数据后... 查看详情

day11java基础学习笔记

冒泡排序相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处,第二次比较厚,最大值放在了倒数第二的位置,一直到第二个元素确定了,整个数组的顺序也就确定了publicclassArrayDemo{publicstaticvoidmain(String[]a... 查看详情

黄佳《零基础学机器学习》chap1笔记(代码片段)

黄佳《零基础学机器学习》chap1笔记这本书实在是让我眼前一亮!!!感觉写的真的太棒了!文章目录黄佳《零基础学机器学习》chap1笔记第1课机器学习快速上手路径——唯有实战1.1机器学习族谱1.2云环境入门实... 查看详情

day08java基础学习笔记

继承extends(也叫扩展)多个类中存在相同的属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可。通过extends关键字可以实现类的继承class子类名extends父类名{}继承的案... 查看详情