Java学习day04

Java

引言

在Java学习的第四天,我们将探索Java中的数组和面向对象编程(OOP)的基础知识。数组是存储多个相同类型数据的集合,而面向对象编程则是Java编程的核心。通过今天的学习,你将能够理解如何在Java中操作数组,并初步掌握面向对象编程的概念。

数组概述

数组是Java中最基本的数据结构之一,用于存储固定大小的同一类型元素的集合。

静态初始化

静态初始化是在数组创建时,直接在括号中指定元素值的方法。 int[] numbers = {10, 20, 30, 40, 50};

一维数组

动态初始化

动态初始化是根据数组的长度来创建数组。

int[] numbers = new int[5]; // 创建一个长度为5的整型数组

求最值案例

下面是一个使用一维数组求最大值和最小值的案例。

public class ArrayMaxMin { public static void main(String[] args) { int[] numbers = {10, 20, 30, 40, 50}; int max = numbers[0]; int min = numbers[0]; for (int i = 1; i < numbers.length; i++) { if (numbers[i] > max) { max = numbers[i]; } if (numbers[i] < min) { min = numbers[i]; } } System.out.println("Max: " + max); System.out.println("Min: " + min); } }

综合案例实战

我们可以创建一个简单的程序,让用户输入一系列数字,并计算它们的平均值。

import java.util.Scanner; public class ArrayAverage { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("Enter the size of the array: "); int size = scanner.nextInt(); int[] numbers = new int[size]; System.out.println("Enter " + size + " numbers:"); for (int i = 0; i < size; i++) { numbers[i] = scanner.nextInt(); } double sum = 0; for (int i = 0; i < size; i++) { sum += numbers[i]; } double average = sum / size; System.out.println("Average: " + average); scanner.close(); } }

二维数组

概述、定义

二维数组可以看作是数组的数组,用于存储表格状的数据。

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

综合案例

下面是一个使用二维数组打印乘法表的案例。

public class MultiplicationTable { public static void main(String[] args) { int[][] multiplicationTable = new int[10][10]; for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { multiplicationTable[i][j] = (i + 1) * (j + 1); } } for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { System.out.print(multiplicationTable[i][j] + "\\t"); } System.out.println(); } } }

面向对象编程入门

面向对象编程是一种编程范式,它将现实世界中的实体抽象为对象,并通过类和对象来模拟现实世界中的行为和属性。

学生案例

下面是一个简单的学生类案例。

public class Student { private String name; private int age; public Student(String name, int age) { this.name = name; this.age = age; } public void introduce() { System.out.println("Name: " + name + ", Age: " + age); } public static void main(String[] args) { Student student = new Student("Kimi", 20); student.introduce(); } }

构造器

构造器是一种特殊的方法,用于在创建对象时初始化对象。

public class Student { private String name; private int age; public Student(String name, int age) { this.name = name; this.age = age; } // ... 其他方法 ... }

this关键字

public class Student { private String name; public Student(String name) { this.name = name; } public void changeName(String newName) { this.name = newName; } }

封装

封装是将数据(属性)和行为(方法)捆绑到一个单元(类)中,并隐藏内部细节。

public class Student { private String name; // 私有属性 public String getName() { // 公有 getter 方法 return name; } public void setName(String name) { // 公有 setter 方法 this.name = name; } }

实体类

实体类通常用于描述现实世界中的实体,包含属性和方法。

public class Student { private String id; private String name; private int age; // 构造器、getter和setter方法 }

static静态变量和方法

应用场景

静态变量和方法属于类,而不是类的实例。

public class MathUtils { public static int counter = 0; // 静态变量 public static void incrementCounter() { // 静态方法 counter++; } }

工具类

静态方法常用于工具类,这些类包含一组相关的静态方法。

public class MathUtils { public static int add(int a, int b) { return a + b; } public static double divide(double a, double b) { if (b != 0) { return a / b; } else { throw new IllegalArgumentException("Divider cannot be zero."); } } }

静态方法的注意事项

静态方法不能访问类的实例变量或实例方法,它们只能访问静态变量和其他静态方法。

综合实战:电影信息展示

下面是一个使用面向对象编程展示电影信息的综合案例。

public class Movie { private String title; private int year; private String director; public Movie(String title, int year, String director) { this.title = title; this.year = year; this.director = director; } public void displayInfo() { System.out.println("Title: " + title + ", Year: " + year + ", Director: " + director); } public static void main(String[] args) { Movie movie1 = new Movie("Inception", 2010, "Christopher Nolan"); Movie movie2 = new Movie("The Matrix", 1999, "Lana Wachowski, Lilly Wachowski"); movie1.displayInfo(); movie2.displayInfo(); } }