首页 > 编程语言 >java笔记2

java笔记2

时间:2024-08-01 11:29:35浏览次数:15  
标签:Sort java int 元素 笔记 数组 排序 方法

4.数组笔记

数组概念

数组是一种基本的数据结构,用于存储固定大小的相同类型的元素序列。在Java中,数组是一种对象,它实现了java.lang.Cloneablejava.io.Serializable接口。

  • 声明数组

    int[] intArray;
    
  • 初始化数组

    intArray = new int[10]; // 创建一个长度为10的整型数组
    
  • 访问数组元素

    intArray[0] = 1; // 访问并赋值数组的第一个元素
    
  • 数组的长度

    int length = intArray.length; // 获取数组的长度
    

一堆数组

Java允许创建数组的数组,即数组的元素本身也是数组。这种数组称为多维数组,但本质上仍然是一维数组的集合。

  • 声明和初始化二维数组

    int[][] twoDimArray = new int[3][4]; // 创建一个3行4列的二维数组
    
  • 访问二维数组元素

    twoDimArray[0][0] = 1; // 访问二维数组的第一个元素
    

数组的算法

数组是许多算法的基础,因为它们提供了一种快速访问和修改大量数据的方式。以下是一些常见的数组算法:

  • 排序

    1. 选择排序(Selection Sort)

      • 工作原理:选择最小的元素与数组的当前位置进行交换,然后从剩余的未排序元素中继续选择最小的元素。
    2. 插入排序(Insertion Sort)

      • 工作原理:构建有序序列,对未排序数据从后向前扫描,找到相应位置并插入。
    3. 归并排序(Merge Sort)

      • 工作原理:采用分治法,将数组分成两半,对每一半进行排序,然后将排序好的两半合并在一起。
    4. 快速排序(Quick Sort)

      • 工作原理:选择一个“基准”元素,将数组分为两个子数组,一个包含小于基准的元素,另一个包含大于基准的元素,然后递归地对这两个子数组进行快速排序。
    5. 堆排序(Heap Sort)

      • 工作原理:利用堆这种数据结构所设计的一种排序算法,将待排序数组构建成一个最大堆,然后将堆顶元素与末尾元素交换,缩小堆的范围,并下沉调整。
    6. 希尔排序(Shell Sort)

      • 工作原理:是插入排序的一种更高效的改进版本,它通过引入增量的概念使得数组部分有序,增量逐渐减小,最终增量为1时变为插入排序。
    7. 计数排序(Counting Sort)

      • 工作原理:非基于比较的排序算法,适用于一定范围内的整数排序,通过统计每个元素出现的次数,然后按顺序构建最终的排序数组。
    8. 桶排序(Bucket Sort)

      • 工作原理:将数组分到有限数量的桶里,每个桶再分别排序(使用其他排序算法)。
    9. 基数排序(Radix Sort)

      • 工作原理:按照低位先排序,然后收集;再按照高位排序,然后再收集;依次类推,直到最高位。
    10. 冒泡排序优化版(Optimized Bubble Sort)

      • 工作原理:在冒泡排序的基础上增加一个标志位,如果在某次遍历中没有发生任何交换,则数组已经排序完成,可以提前结束。
  • 搜索:如线性搜索、二分搜索等。

  • 反转数组:将数组的元素顺序颠倒。

  • 复制数组:创建数组的一个副本。

示例:冒泡排序

void bubbleSort(int[] array) {
    for (int i = 0; i < array.length - 1; i++) {
        for (int j = 0; j < array.length - i - 1; j++) {
            if (array[j] > array[j + 1]) {
                // 交换元素
                int temp = array[j];
                array[j] = array[j + 1];
                array[j + 1] = temp;
            }
        }
    }
}

多维数组

多维数组在Java中是通过数组的数组实现的,可以看作是数组元素本身也是数组。最常见的是二维数组,但Java支持更高维度的数组。

  • 声明多维数组

    int[][][] threeDimArray = new int[2][3][4]; // 创建一个三维数组
    
  • 初始化多维数组

    int[][] twoDimArray = {
        {1, 2, 3},
        {4, 5, 6}
    }; // 创建并初始化一个二维数组
    
  • 访问多维数组元素

    threeDimArray[0][1][2] = 7; // 访问三维数组的一个元素
    

多维数组在处理矩阵、图像处理、游戏地图等应用中非常有用。它们提供了一种结构化的方式来存储和操作复杂数据集。

5.方法笔记

方法的作用

方法(Method)是执行特定任务的代码块,它允许将代码逻辑组织和封装起来,以便于重用和维护。

  • 封装性:方法将数据和操作这些数据的代码封装在一起。
  • 重用性:通过定义方法,可以在多个地方调用,避免代码重复。
  • 抽象性:方法提供了一种抽象层次,隐藏了实现细节。

方法的定义

方法由方法名、返回类型、参数列表和方法体组成。

  • 返回类型:指明方法执行后返回的数据类型,如果是void则表示没有返回值。
  • 方法名:遵循驼峰命名法,首字母小写,后续单词首字母大写。
  • 参数列表:括号内列出方法接受的参数,参数之间用逗号分隔。
  • 方法体:花括号内包含的代码,是方法执行时的具体操作。
public returnType methodName(parameterType param1, parameterType param2) {
    // 方法体
}

方法的实参和形参

  • 实参(Actual Parameter):调用方法时传递给方法的实际值或变量。
  • 形参(Formal Parameter):方法定义中用于接收传递进来的值的变量。

当方法被调用时,实参会复制值给形参,方法内部对形参的修改不会影响到实参。

JVM内存结构划分

Java虚拟机(JVM)的内存结构主要包括以下几个部分:

  1. 方法区(Method Area):存储类信息、常量、静态变量等。
  2. (Heap):存储对象实例和数组。
  3. (Stack):存储方法调用的局部变量、操作栈和方法调用信息。
  4. 程序计数器(Program Counter Register):存储当前线程执行的字节码的行号指示器。
  5. 本地方法栈(Native Method Stack):为JVM使用Native方法服务。

当方法被调用时,它的局部变量和参数会被存储在栈中,而新创建的对象会被存储在堆中。

方法的重载

方法的重载(Overloading)是指在同一个类中可以定义多个同名方法,只要它们的参数列表不同(参数的类型、数量或顺序至少有一项不同)。

  • 参数数量不同:可以定义接受不同数量参数的方法。
  • 参数类型不同:可以定义参数类型不同的同名方法。
  • 参数顺序不同:仅改变参数顺序不算是重载,因为Java通过参数的类型来区分方法。

重载的方法可以有不同的返回类型,但返回类型不是重载的条件。

示例

public class Example {
    // 方法重载示例
    public void display(int a) {
        System.out.println("只有一个整数参数: " + a);
    }

    public void display(int a, int b) {
        System.out.println("有两个整数参数: " + a + " 和 " + b);
    }

    public void display(String a) {
        System.out.println("有一个字符串参数: " + a);
    }
}

标签:Sort,java,int,元素,笔记,数组,排序,方法
From: https://www.cnblogs.com/cjsbx/p/18336298

相关文章

  • 【计算机毕业设计】ssm398基于javaweb的酒店预订管理系统+vue
    使用旧方法对酒店预订信息进行系统化管理已经不再让人们信赖了,把现在的网络信息技术运用在酒店预订信息的管理上面可以解决许多信息管理上面的难题,比如处理数据时间很长,数据存在错误不能及时纠正等问题。这次开发的酒店预订管理系统管理员功能有个人中心,用户管理,房间类型管......
  • Java初识
    JDK、JRE和JVM​1.JDK指的是JavaDevelopmentKit,它是一个开发Java应用程序所需的软件开发工具包。JDK包括Java编译器、Java虚拟机、Java类库等必要组件,以及用于开发、调试和运行Java应用程序的其他工具。使用JDK可以帮助开发人员编写、测试和部署Java应用程序,以及运行Java应......
  • 三种语言实现双指针解决数组元素的目标和(C++/Python/Java)
    题目给定两个升序排序的有序数组A和B,以及一个目标值x。数组下标从0开始。请你求出满足A[i]+B[j]=x的数对(i,j)。数据保证有唯一解。输入格式第一行包含三个整数n,m,x,分别表示A的长度,B的长度以及目标值x。第二行包含n个整数,表示数组A。第三行包含m个整数......
  • JavaScript入门须知
    一、JavaScript概念1.javascript是一门跨平台,面向对象的脚本语言,用来控制网页行为,可使网页交互2.java和js完全不一样,无论是概念还是设计都是完全不一样的,但是它们的基础语法相似。3.在1995年由BrendanErich发明,于1997年成为ECMA的标准4.ECMA欧洲协会标准,ECMAScript(ES6)是......
  • Java I/O的进化:从I/O到NIO
    引言JavaI/O(Input/Output)是Java程序中处理输入和输出的基本方式,包括文件操作、网络通信等。随着Java平台的发展,JavaNIO(NewInput/Output)作为JavaI/O的一个重要补充,提供了更为高效和灵活的I/O操作方式。本文将深入讲解JavaI/O模型、NIO的原理,以及如何在实际应用中使用N......
  • Java反射机制及其应用
    Java反射机制及其应用引言Java反射机制是Java语言的一项强大特性,它允许程序在运行时查询、访问和修改类、接口、方法、构造函数等的属性和行为。反射机制在动态代理、框架开发、依赖注入等领域有着广泛的应用。本文将介绍反射的基本概念、如何使用反射,以及反射在动态代理......
  • 常见的排序算法(Java实现)
      一、冒泡排序      相邻的两个元素比较,大的放右边,小的放左边。二、选择排序   从0索引开始,把每一个索引依次跟后面的索引比较,大的放后面,小的放前面三、插入排序  将数组分为有序和无须两种,遍历数组将无须的数组插入有序的数组当中四、快......
  • 【远程驰骋:Python SSH 自动化运维实战笔记】
    使用GqylpySSH库简化SSH命令执行在自动化运维或脚本编写中,经常需要通过SSH连接到远程服务器执行命令。虽然Python的paramiko库提供了强大的SSH功能,但直接使用它进行命令执行和结果处理可能会显得有些繁琐。GqylpySSH库封装了paramiko,提供了一个更加简洁易用的接口......
  • Java中的运算符
    运算符目录运算符运算符的分类算术运算符关系运算符位运算符逻辑运算符短路逻辑运算符赋值运算符条件运算符(?:)instanceof运算符Java运算符优先级运算符的分类计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量。我们可以把运......
  • Java流程控制结构中的分支结构
    分支结构目录分支结构if...else分支结构switch-case分支结构在Java编程中,分支结构是控制程序流程的重要工具,它允许程序根据不同的条件执行不同的代码块。Java提供了两种主要的分支结构:if-else和switch-case。本文将详细介绍这两种结构的工作原理、语法规则以及实战应用,帮助读者......