认识Java语言(二)

3.1 数组概述

        在编程世界中,我们往往需要处理多个相同类型的数据。例如,我们可能需要处理一整个班级的学生的分数,或者一个集团公司所有员工的工资。在这种情况下,使用单独的变量会很麻烦,因为我们需要为每个学生或员工创建一个变量。为了解决这个问题,我们可以使用数组。

        数组是一种存储多个相同类型数据的集合。在Java语言中,数组是一种特殊的对象,可以存储固定数量的同类型的元素。

3.2 一维数组

3.2.1 一维数组的声明

        一维数组的声明和其他变量的声明类似,我们需要指定数组的数据类型,后面跟上数组的名称,然后是一对方括号。例如,我们可以声明一个整数数组如下:

int[] scores;

        在上面这个例子中,int是数组元素的数据类型,scores是数组的名称。

3.2.2 一维数组的创建

        在Java中,我们使用new关键字创建数组。以下是创建并初始化一个整数数组的示例:

int[] scores = new int[30];

        在上面的代码中,我们不仅声明了一个名为scores的整数数组,而且使用new运算符创建了一个能够存储30个整数的数组。这个数组的所有元素都被初始化为0。

3.2.3 一维数组的使用

        我们可以使用数组下标来访问数组的元素,数组下标是从0开始的。以下是一些使用一维数组的例子:

// 创建一个有5个元素的整数数组
int[] numbers = new int[5];

// 给数组的第一个元素赋值为10
numbers[0] = 10;

// 读取数组的第一个元素的值
int firstNumber = numbers[0];

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

3.2.4 一维数组的内存分配

        在Java中,一维数组被分配在堆内存中。当我们使用new关键字创建数组时,Java虚拟机会在堆内存中找到足够的空间来存储数组的所有元素,并将这块空间的地址赋给数组变量。因此,数组可以被认为是引用类型。

3.3 多维数组

3.3.1 多维数组的声明

        多维数组的声明规则和一维数组类似,只是在数组名后面的方括号中写两个或多个方括号表示多维度。以下是一个二维数组的声明:

int[][] matrix;

        在上面的声明中,matrix是一个二维数组的名称,int是数组元素的数据类型。

3.3.2 多维数组的创建

        我们可以使用new关键字创建多维数组。以下是一个3行4列的二维数组的创建例子:

int[][] matrix = new int[3][4];

3.3.3 多维数组的使用

        我们可以使用数组下标来访问和修改多维数组的元素。以下是使用二维数组的一些示例:

// 创建一个3行4列的二维数组
int[][] matrix = new int[3][4];

// 给第一行第一列的元素赋值为10
matrix[0][0] = 10;

// 读取第一行第一列的元素的值
int firstElement = matrix[0][0];

// 获取数组的行数
int rowCount = matrix.length;

// 获取第一行的列数
int columnCount = matrix[0].length;

3.3.4 多维数组的内存分配

        针对二维数组,Java会在堆内存中为数组的每一行单独分配空间,并将每行的地址存储在数组的对应元素中。因此,二维数组实际上是一个"数组的数组"。

3.4不规则数组

        Java支持不规则数组,也就是每行的列数可以不同。具体来说,当我们创建二维数组时,只需要指定数组的行数,然后对于每一行自由决定其列数。以下是一个不规则数组的示例:

int[][] irregularArray = new int[3][];
irregularArray[0] = new int[3];
irregularArray[1] = new int[2];
irregularArray[2] = new int[5];

        在上面的示例中,我们创建了一个不规则的二维数组,该数组的第一行有3列,第二行有2列,第三行有5列。

4.1 面向对象程序设计概述

        面向对象程序设计(OOP)是一种编程范式,其中程序被结构化为互相交互的对象。每个对象都是类(class)的实例,具有一组属性(fields)和一组操作这些属性的方法(methods)。面向对象编程提供了一种更自然的方式来理解和组织复杂的代码。

4.2 类

4.2.1 属性概述

        属性是类的一部分,用于描述类的状态。比如,可以定义一个“汽车”类,其属性可能包括品牌、颜色、型号等。

4.2.2 方法概述

        方法是类定义中的函数,用于操作类的属性。对于汽车类,可能会有一个驾驶的方法,这个方法可能会改变汽车的位置属性。

4.2.3 创建类

        在Java中,定义一个类的基本语法如下:

public class Car {
    // 属性
    String brand;
    String color;

    // 方法
    void drive() {
        //...
    }
}

4.2.4 类图

        类图是一种图形化表示类及其之间关系的工具。类图中,每个类由一个包含类名、属性和方法的矩形表示。

4.3 对象

4.3.1 对象的创建

        对象是类的实例。在Java中,我们使用new关键字和构造函数创建一个对象:

Car myCar = new Car();

4.3.2 对象的使用

        我们可以通过“点”操作符访问对象的属性和方法:

// 访问属性
String brand = myCar.brand;
// 调用方法
myCar.drive();

4.3.3 构造方法

        构造方法是一种特殊的方法,用于初始化新创建的对象。它的名称必须与类名相同:

public class Car {
    // 属性
    String brand;

    // 构造方法
    public Car(String brand) {
        this.brand = brand;
    }
}

4.3.4 对象的内存分配

        在Java中,所有对象都在堆内存空间分配。当对象不再被引用时,它将被Java的垃圾收集器回收。

4.4 变量

4.4.1 局部变量

        局部变量是在方法内部定义的变量,只在该方法的内部可见。

4.4.2 实例变量

        实例变量是在类内部但在方法外部定义的变量,对类的所有实例都可见。

4.4.3 类变量

        类变量也称为静态变量,使用static关键字定义,无论类有多少实例,这些实例共享相同的类变量。

4.5 方法

4.5.1 实例方法和‘this’

        实例方法是在类定义中的方法,它们操作的是实例的状态。在实例方法里,我们可以使用this关键字引用当前实例。

4.5.2 类方法

        类方法也称为静态方法,使用static关键字定义,它们只能访问静态变量和调用静态方法。

4.5.3 传递参数

        方法可以接受参数,这些参数可以被看作是在方法内部定义的局部变量。

4.5.4 方法重载

        方法重载是Java中的一种特性,允许在同一类中定义多个有相同名字但参数列表不同的方法。

4.5.5 方法的返回

        方法可能会返回一个值。return语句用于从方法返回并指定返回值。

4.6 匿名代码块

        匿名代码块是在类中定义的没有名字的代码块,它在实例被创建时执行,属于初始化的一部分。匿名代码块可以访问类的所有元素,在类的构造方法被调用之前执行。

你可能感兴趣的:(python,算法,java)