Java 包(package)
在 Java 中,包(Package)是用于组织和管理类和接口的一种机制,它提供了一种将相关的类和接口组织在一起的方式。包的作用包括:1. 组织和管理类: 将相关的类放在同一个包中,有助于代码的组织和管理。2. 命名空间管理: 避免不同包中的类命名冲突,通过包名形成不同的命名空间。3. 访问控制: 包内的类可以使用包私有的成员,而对于其他包中的类,只能访问公有的成员。定义包:在 Java 中,包的定义使用 package 关键字。通常,package 语句应该放在 Java 源文件的顶部。// 定义一个包package com.example.myapp;// 导入其他包中的类import java.util.ArrayList;import java.util.List;// 类定义public class MyClass { // 类的成员和方法}在上面的例子中,com.example.myapp 是一个包名,MyClass 类位于这个包中。此外,import 语句用于导入其他包中的类。包的命名规范:包名通常使用小写字母,多个单词之间可以用点(.)分隔。包名的选择应该具有描述...
Java 接口
在 Java 中,接口(Interface)是一种抽象类型,它定义了一组方法的集合,但没有提供这些方法的具体实现。类通过实现接口来达到多继承的效果,一个类可以实现多个接口。接口在 Java 编程中广泛用于实现多态和规范类的行为。以下是关于 Java 接口的一些基本概念和示例:1. 定义接口:接口使用 interface 关键字定义,可以包含抽象方法、常量和默认方法。interface Shape { // 抽象方法 void draw(); // 常量 String COLOR = "red"; // 默认方法(Java 8+) default void printColor() { System.out.println("Color: " + COLOR); }}2. 实现接口:类通过 implements 关键字实现接口,必须提供接口中定义的所有方法的具体实现。class Circle implements Shape { @Override public void draw() { System.o...
Java 封装
封装是面向对象编程的一项基本原则,它指的是将类的内部实现细节隐藏起来,只对外部提供有限的访问接口。在 Java 中,封装通过访问修饰符和 getter/setter 方法来实现。1. 访问修饰符:在 Java 中,有四种访问修饰符用于控制类的成员的访问权限: public: 对所有类可见。 protected: 对同一包内的类和所有子类可见。 default(默认): 对同一包内的类可见,不使用任何修饰符。 private: 对同一类内可见。2. 封装的实现:public class Person { // 封装的属性 private String name; private int age; // 构造方法 public Person(String name, int age) { this.name = name; this.age = age; } // 封装的方法 public String getName() { return name; } public void setN...
Java 抽象类
在 Java 中,抽象类是一种特殊的类,它不能被实例化,主要用于定义一个类的抽象特征和行为。抽象类可以包含抽象方法,这些方法在抽象类中没有具体的实现,而是由具体的子类来实现。使用关键字 abstract 可以定义抽象类和抽象方法。以下是关于 Java 抽象类的一些基本概念和示例:1. 定义抽象类:abstract class Shape { String color; Shape(String color) { this.color = color; } abstract void draw(); // 抽象方法}在上面的例子中,Shape 是一个抽象类,它包含一个抽象方法 draw 和一个属性 color。2. 继承抽象类:子类继承抽象类,并提供具体的实现。class Circle extends Shape { double radius; Circle(String color, double radius) { super(color); this.radius = radius; } @...
Java 多态
多态是面向对象编程的一个重要概念,它允许使用同一个接口来表示不同的类型,使得代码更加灵活和可扩展。在 Java 中,多态主要通过方法的重写(Override)和接口实现(Implement)来实现。1. 方法重写(Override):方法重写是指子类重新定义了父类中已有的方法,具有相同的方法名、参数列表和返回类型。在运行时,根据对象的实际类型来调用相应的方法。class Animal { void makeSound() { System.out.println("Animal makes a sound"); }}class Dog extends Animal { @Override void makeSound() { System.out.println("Dog barks"); }}class Cat extends Animal { @Override void makeSound() { System.out.println("Cat meows"); }}使用多态的方式调用:pu...
Java 重写(Override)与重载(Overload)
在 Java 中,重写(Override)和重载(Overload)是两个不同的概念,它们都与方法有关,但它们的含义和用途是不同的。1. 重写(Override):重写是指在子类中定义一个与父类中已有的方法具有相同签名(方法名、参数列表和返回类型)的方法。子类中的这个方法会覆盖(替代)父类中的方法,以提供特定于子类的实现。class Animal { void makeSound() { System.out.println("Animal makes a sound"); }}class Dog extends Animal { @Override void makeSound() { System.out.println("Dog barks"); }}在上面的例子中,Dog 类重写了 Animal 类中的 makeSound 方法。当通过 Dog 类的对象调用 makeSound 方法时,将执行子类中的实现。2. 重载(Overload):重载是指在同一个类中,可以定义多个具有相同名称但参数列表不同(个数、类型或顺序)的方...
Java 继承
在 Java 中,继承是一种重要的面向对象编程概念,它允许一个类(子类)继承另一个类(父类)的属性和方法。通过继承,子类可以重用父类的代码,并且可以在不修改父类的情况下扩展或修改其行为。以下是关于 Java 继承的一些基本概念和示例:1. 定义父类和子类:// 父类class Animal { String name; Animal(String name) { this.name = name; } void eat() { System.out.println(name + " is eating."); }}// 子类class Dog extends Animal { Dog(String name) { super(name); // 调用父类的构造方法 } void bark() { System.out.println(name + " is barking."); }}2. 调用父类的方法:子类可以通过 super 关键字调用父类的方法。例如,在子类的方法中调用...
Java 面向对象
Java 是一种面向对象的编程语言,面向对象编程(Object-Oriented Programming,简称 OOP)是一种程序设计范式,其中程序结构由对象组成,对象之间通过消息传递进行通信。以下是关于 Java 面向对象编程的一些基本概念:1. 类和对象: 类(Class): 类是一种模板,描述了对象的属性和行为。在 Java 中,类是定义对象的蓝图,它可以包含字段(属性)和方法(行为)。 public class Car { // 属性 String brand; int year; // 方法 void start() { System.out.println("The car is starting."); } void drive() { System.out.println("The car is moving."); } } 对象(Object): 对象是类的实例,是具体存在的数据结构。通过类创建对象的过程称为实例化。 public class Ma...
Java 异常处理
在 Java 中,异常是程序运行过程中出现的问题或错误的事件。Java 提供了异常处理机制,允许程序员捕获、处理并恢复或报告异常。异常处理的核心是使用 try-catch 语句块。以下是一些关于 Java 异常处理的基本知识:1. 抛出异常:使用 throw 关键字可以在代码中手动抛出异常。通常,我们使用已有的异常类,如 IllegalArgumentException、NullPointerException 等,或者创建自定义异常类。public class CustomExceptionExample { // 自定义异常类 static class CustomException extends Exception { public CustomException(String message) { super(message); } } // 方法抛出自定义异常 public static void validateAge(int age) throws CustomException { ...
Java Scanner 类
在 Java 中,Scanner 类是一个用于从各种输入源(例如键盘、文件等)读取基本数据类型和字符串的方便类。它位于 java.util 包中,提供了一系列方法来解析基本类型和字符串。以下是一些关于 Scanner 类的基本用法:1. 从键盘读取输入:import java.util.Scanner;public class ScannerExample { public static void main(String[] args) { // 创建 Scanner 对象,用于读取键盘输入 Scanner scanner = new Scanner(System.in); System.out.println("Enter your name: "); String name = scanner.nextLine(); // 读取一行输入 System.out.println("Hello, " + name + "!"); System.out.println("Enter your age:...
Java 流(Stream)、文件(File)和IO
在 Java 中,流(Stream)、文件(File)和 I/O(输入/输出)是处理输入和输出的重要概念。以下是关于这些概念的一些基本知识:1. 流(Stream):流是一种用于处理输入和输出的抽象概念。在 Java 中,流可以分为输入流(InputStream)和输出流(OutputStream)。流的操作是逐个字节或字符进行的。字节流(Byte Streams):字节流用于处理二进制数据,通常用于处理图像、音频、视频等文件。import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;public class ByteStreamExample { public static void main(String[] args) { try { // 输入流读取文件 FileInputStream input = new FileInputStream("input.txt"); in...
Java 方法
在 Java 中,方法是用于执行特定任务的一组语句的集合。方法是类的成员,可以被其他类或者同一类中的其他方法调用。以下是关于 Java 方法的一些基本知识:1. 方法的声明和调用:public class MyClass { // 方法的声明 public void myMethod() { System.out.println("Hello from myMethod!"); } public static void main(String[] args) { // 方法的调用 MyClass obj = new MyClass(); obj.myMethod(); }}2. 方法参数和返回值:public class Calculator { // 方法带有参数和返回值 public int add(int a, int b) { return a + b; } public static void main(String[] args) { C...
Java 正则表达式
在 Java 中,正则表达式是用于匹配字符串模式的强大工具。Java 中的正则表达式功能主要由 java.util.regex 包提供。以下是一些 Java 中使用正则表达式的基本操作:1. 匹配字符串:import java.util.regex.Pattern;import java.util.regex.Matcher;String input = "The quick brown fox jumps over the lazy dog";String pattern = "fox";Pattern compiledPattern = Pattern.compile(pattern);Matcher matcher = compiledPattern.matcher(input);if (matcher.find()) { System.out.println("Pattern found");} else { System.out.println("Pattern not found");}2. 查找所有匹配:String input = "The quick br...
Java 日期时间
在 Java 中,java.time 包提供了丰富的日期和时间处理类,其中包括 LocalDate、LocalTime、LocalDateTime、Instant 等。这些类提供了更好的 API 和更强大的功能,相较于旧版的 Date 和 Calendar 类。以下是一些关于 Java 日期和时间的基本操作:1. LocalDate 类:LocalDate 表示一个日期,提供了处理年、月、日的方法。import java.time.LocalDate;// 获取当前日期LocalDate currentDate = LocalDate.now();System.out.println("Current Date: " + currentDate);// 构造指定日期LocalDate specifiedDate = LocalDate.of(2023, 1, 1);System.out.println("Specified Date: " + specifiedDate);// 获取年、月、日int year = currentDate.getYear();int month = cu...
Java 数组
在 Java 中,数组是一种用于存储相同类型数据元素的数据结构。数组具有固定的大小,一旦创建后,大小不能被修改。数组可以是基本数据类型的数组,也可以是对象数组。以下是一些关于 Java 数组的基本知识:1. 声明和创建数组:基本数据类型数组:// 声明和创建一个整数数组int[] intArray = new int[5];// 声明和创建一个字符串数组String[] stringArray = new String[3];对象数组:// 声明和创建一个对象数组Person[] personArray = new Person[4];2. 初始化数组:直接赋值:int[] intArray = {1, 2, 3, 4, 5};String[] stringArray = {"apple", "banana", "orange"};循环赋值:int[] intArray = new int[5];for (int i = 0; i < 5; i++) { intArray[i] = i + 1;}3. 访问数组元素:int[] intArray = {1, 2, 3, 4,...
Java StringBuffer 和 StringBuilder 类
在 Java 中,StringBuffer 和 StringBuilder 类都是用于处理可变的字符序列的类。它们属于 java.lang 包,提供了对字符串的可变操作,相较于 String 类的不可变性,它们更适用于需要频繁修改字符串的情况。StringBuffer 类:StringBuffer 类是线程安全的,适用于多线程环境。由于它是线程安全的,相对于 StringBuilder,它的性能稍差一些。创建 StringBuffer 对象:StringBuffer buffer = new StringBuffer();添加/追加字符串:buffer.append("Hello");buffer.append(" ");buffer.append("Java");或者使用链式操作:buffer.append("Hello").append(" ").append("Java");插入字符串:buffer.insert(6, "Beautiful ");删除字符:buffer.delete(6, 16);反转字符串:buffer.reverse();获取字符串:String resul...
Java String类
在 Java 中,String 类是一个非常重要的类,用于表示字符串。它属于 java.lang 包,是一个不可变的类,一旦创建就不能被修改。字符串是 Java 中最常用的数据类型之一,用于存储文本。以下是一些 String 类的基本用法:创建 String 对象:// 使用字符串字面量String str1 = "Hello, Java!";// 使用 new 关键字String str2 = new String("Hello, Java!");获取字符串长度:int length = str1.length();System.out.println("Length of str1: " + length);连接字符串:String str3 = "Welcome";String result = str1.concat(", " + str3);System.out.println("Concatenated String: " + result);或者使用 + 运算符:String result = str1 + ", " + str3;字符串比较:String str4 = ...
Java Character类
在 Java 中,Character 类用于包装一个基本数据类型 char 的值。它是 java.lang 包中的一个类,是 Number 类的子类。以下是一些 Character 类的基本用法:创建 Character 对象:// 使用构造方法Character myChar1 = new Character('A');// 使用静态方法char myCharValue = 'B';Character myChar2 = Character.valueOf(myCharValue);获取 char 值:char charValue = myChar1.charValue();System.out.println("Character Value: " + charValue);判断字符的类型:char myChar = '5';if (Character.isDigit(myChar)) { System.out.println(myChar + " is a digit.");} else if (Character.isLetter(myChar)) { System...
Java Number类
在 Java 中,Number 类是一个抽象类,是所有数值型类的超类。它位于 java.lang 包中,提供了超类,用于包装数字值。Number 类有以下主要子类:1. Byte2. Short3. Integer4. Long5. Float6. Double这些子类都是抽象类 Number 的直接子类,它们提供了将基本数据类型转换为 Number 对象的方法,并允许在不同的数值类型之间进行转换。以下是一个简单的例子:public class NumberExample { public static void main(String[] args) { // 使用 Byte 类 Byte byteValue = 100; System.out.println("Byte Value: " + byteValue); // 使用 Integer 类 Integer intValue = 500; System.out.println("Integer Value: " + intValue); ...
Java 分支结构 - if…else/switch
在Java中,分支结构用于根据条件执行不同的代码块。主要有 if...else 和 switch 两种形式。1. if...else 结构:if...else 结构根据给定的条件执行不同的代码块。如果条件为真,执行 if 后面的代码块;如果条件为假,执行 else 后面的代码块。int x = 10;if (x > 0) { System.out.println("x is positive");} else if (x < 0) { System.out.println("x is negative");} else { System.out.println("x is zero");}2. switch 结构:switch 结构根据表达式的值选择不同的代码块执行。每个 case 语句都包含一个常量值,如果该值与表达式的值匹配,就执行相应的代码块。int dayOfWeek = 2;switch (dayOfWeek) { case 1: System.out.println("Monday"); break; c...