这里写目录标题
关键字
abstract
:用于定义抽象类或抽象方法。boolean
:用于声明布尔类型变量或方法返回值。break
:用于跳出循环或switch语句。byte
:用于声明字节型变量。case
:用于switch语句中的选择分支。catch
:用于处理try块中抛出的异常。char
:用于声明字符型变量。class
:用于定义类。const
:用于声明常量。continue
:用于结束当前循环迭代并开始下一次迭代。default
:用于switch语句中的默认分支。do
:用于构成do-while循环。double
:用于声明双精度浮点型变量。else
:用于if语句中的条件分支。extends
:用于表示类的继承关系。final
:用于声明常量或方法为最终不可修改的。finally
:用于定义在try-catch-finally结构中的异常处理代码块。float
:用于声明单精度浮点型变量。for
:用于构成for循环。if
:用于条件判断语句。implements
:用于表示类实现接口。import
:用于导入包或类。instanceof
:用于判断一个对象是否是某个类的实例。int
:用于声明整数型变量。interface
:用于定义接口。long
:用于声明长整数型变量。new
:用于创建对象或数组。package
:用于定义包。private
:用于表示私有访问权限。protected
:用于表示受保护访问权限。public
:用于表示公共访问权限。return
:用于从方法中返回值。short
:用于声明短整数型变量。static
:用于表示静态成员变量或静态方法。super
:用于表示对父类对象的引用。switch
:用于构成switch语句。synchronized
:用于表示线程同步。this
:用于表示当前对象引用。throw
:用于抛出异常。throws
:用于声明方法可能抛出的异常类型。transient
:用于标记某个类的成员变量,表示这个成员变量不能被对象序列化。
用于表示非持久性对象属性,即对象序列化时不需要保存的属性。try
:用于定义异常处理代码块。void
:用于表示无返回值的方法类型。volatile
:用于表示变量的可见性,即保证多线程对变量的操作一致性。while
:用于构成while循环。native
:表示该方法不是用Java实现的,而是用其他语言(如C或C++)实现的。使用native关键字修饰的方法没有方法体,它只是告诉JVM该方法在外部定义,需要使用JNI(Java Native Interface)来实现。
方法:
基本语法
访问修饰符 返回类型 方法名(参数列表) {
// 方法体
}
- 访问修饰符:用于指定方法的访问权限,常用的访问修饰符有public、private、protected和默认(不写任何访问修饰符)。
- 返回类型:方法返回的数据类型。如果方法不返回任何数据,则返回类型为void。
- 方法名:方法的名称。
- 参数列表:传递给方法的参数列表,包括参数的类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。
- 方法体:定义了方法的行为和功能。
静态方法
使用static关键字定义的方法付就是静态方法。静态方法可通过类名.方法名( )来直接调用,不需要通过实例化对象,通常用于指向一般性操作和共享资源操作。
实例方法
默认情况下,Java中的方法多是实例方法。需要通过对象实例化来调用方法。
构造方法
用于创建并初始化对象的特殊方法。构造方法的方法名必须与类名相同。一个可以类可以有多个构造方法, 每个构造方法具有不同的参数列表
方法的定义/调用
Java中方法定义的例子:
public class MethodExample {
//静态方法-----在类被加载时就被调用
// 定义一个带有两个整型参数和一个返回值的方法
public static int addNums(int num1, int num2) {
int sum = num1 + num2;
return sum;
}
//静态方法
// 定义一个带有两个字符串参数和返回值的方法
public static String concatenateStrings(String str1, String str2) {
String result = str1 + str2;
return result;
}
//实例方法-----必须通过对象实例来调用
// 定义一个带有两个浮点型参数和返回值的方法
public double calculateAverage(double num1, double num2) {
double average = (num1 + num2) / 2;
return average;
}
//实例方法
// 定义一个没有参数和返回值的方法
public void printInfo() {
System.out.println("Hello, World!");
}
//构造反复噶
// 定义一个带有参数的构造函数
public MethodExample(String message) {
System.out.println(message);
}
//方法的调用:
public static void main(String[] args) {
//调用静态方法: 类名.方法名
int i = MethodExample.addNums(1,1);
//调用实例方法: 实例化对象,后调用方法
MethodExample me =new MethodExample();
me.printInfo();
}
}
方法重写 /方法覆盖
- 方法重写(Override):又被称为“ 方法的覆盖”,是指在子类中重新定义父类中已经存在的方法。子类可以根据需要改变父类方法的行为。
- 方法重写的定义需要满足以下条件:
- 方法名、参数列表和返回类型必须与父类中被重写的方法完全相同。
- 重写的方法不能拥有比被重写方法更严格的访问权限。
- 重写的方法可以抛出比被重写方法更少或更宽泛的异常,但不可以抛出新的或更严格的检查型异常。
- 使用 @Override 注解可以帮助我们确保正确地重写了父类方法。
- Java中方法重写的例子:
//父类
public class Animal {
public void sing() {
//这个父类的方法可以被子类重写: 更改方法体内容
System.out.println("动物会唱歌");
}
public void eat() {
System.out.println("动物会觅食");
}
}
//子类继承父类
public class Dog extends Animal {
@Override
public void sing() {
//重写了父类的sing()方法
System.out.println("狗会唱歌");
}
public void eat() {
System.out.println("狗会吃饭");
}
}
//main()方法
public class Main {
public static void main(String[] args) {
Animal animal = new Animal();
animal.sing(); // 输出 "动物会唱歌"
animal.eat(); // 输出 "动物会觅食"
Dog dog = new Dog();
dog.sing(); // 输出 "狗会唱歌"
dog.eat(); // 输出 "狗会吃饭"
}
}
方法重载
方法重载(Overloading)是指在同一个类中,可以定义多个具有相同方法名但参数列表不同的方法。
参数列表不同可以是参数的数量不同,或者是参数的类型不同。
方法重载的定义需要满足以下条件:
- 方法名必须相同。
- 参数列表必须不同,包括参数的数量不同或参数的类型不同。
- 方法的返回类型可以相同也可以不同。
注意:
- 方法名和参数列表不同的方法不构成重载。
- 使用方法重载可以让程序更加灵活和适应不同的需求。例如,在数学计算中,可以定义多个名字相同但参数不同的方法来进行加法、减法、乘法和除法等运算。
Java中方法重载的例子:
public class Calculator {
//一个add()方法
public int add(int a, int b) {
return a + b;
}
//又是一个add()方法
//这两个方法有相同的方法名,但是参数列表不同,因此它们在类中是重载的.
public double add(double a, double b) {
return a + b;
}
}
public class Main {
public static void main(String[] args) {
Calculator calculator = new Calculator();
//分别调用两个不同的add()方法
int result1 = calculator.add(10, 20);
double result2 = calculator.add(10.5, 20.5);
System.out.println(result1); // 输出 30
System.out.println(result2); // 输出 31.0
}
}
Java程序的加载和执行原理:
Java程序非常重要的两个阶段(编译阶段、运行阶段)
编译阶段
第一步:Java程序员编写符合Java语法的源代码 (.java)。
第二步:使用编译器将源代码编译为字节码文件 (.class)。
注意:
①如果编写的源代码,符合语法规则,编译会通过,才会生成.class文件,否则会报错。
②一个源码可以生成多个字节码文件。③编译实际上是检查语法。
运行阶段
- 第三步:将字节码文件装载进JVM中。(JVM将用类加载器将字节码文件装载进 JVM 中)。
- 第四步:JJVM对字节码文件进行解释(解释器负责将字节码解释成本地机器码)。
- 第五步:JVM将本地机器码交给操作系统,操作系统会执行二进制码和硬件进行交互。
- 注意:
运行阶段是JRE在起作用。