Java this关键字的三种用法「图文分析」

本文详细介绍了Java中this关键字的三种常见用途:访问本类成员变量、调用本类成员方法以及在构造方法中调用其他构造方法。同时,文章通过错误案例解释了构造方法中不能进行无限循环调用的原因,强调了正确使用this和super关键字的重要性。

Java this关键字的三种用法:

1、在本类的成员方法中,访问本类的成员变量

2、在本类的成员方法中,用来访问另一个成员方法

3、在本类的构造方法中访问另一个构造方法(构造方法的重载调用--本类的无参构造调用本类的有参构造--本类的有参构造调用本类的无参构造)

super关键字是用来访问父类内容的,this关键字是用来访问本类内容的

注意:这里的本类不能用子类来代替,因为父类不知道子类是谁

 

详细:

1、在本类的成员方法中,访问本类的成员变量

2、在本类的成员方法中,用来访问另一个成员方法

======================

 

在实际过程中我在methodB中调用了methodB方法本身,结果出错了,也就是说,这个本类中的methodB不能调用methodB本身

这实际上是处于死循环的调用,因为没有条件使方法调用结束,一直都是true,所以死循环

3、在本类的构造方法中访问另一个构造方法

==============

错误案例一

不能循环调用,javac不能通过编译,会报错

=============

错误案例二

 

### Java 新手学习笔记 #### 开发环境的搭建 Java 开发环境主要涉及 JDK 和 JRE。JDK 是 Java 开发人员的软件开发工具包,是整个 Java 的核心,包括了 Java 运行环境、Java 工具和 Java 基础类库;JRE 包含了 Java 虚拟机和 Java 基础类库,是运行 Java 程序所需要的软件环境 [^3]。 在不同操作系统上安装 JDK 和 JRE 时,具体步骤会有所不同。以 Windows 系统为例,可从 Oracle 官网下载适合的 JDK 安装包,运行安装程序,按照提示完成安装。安装完成后,需要配置环境变量,在系统变量中添加 `JAVA_HOME` 指向 JDK 的安装目录,在 `Path` 变量中添加 `%JAVA_HOME%\bin` 和 `%JAVA_HOME%\jre\bin`。而在 Linux 系统中,可通过包管理器(如 `apt` 或 `yum`)进行安装,或者手动下载解压安装包,同样需要配置环境变量。 #### 基础语法 1. **数据类型** Java 有基本数据类型和引用数据类型。基本数据类型包括整数类型(`byte`、`short`、`int`、`long`)、浮点类型(`float`、`double`)、字符类型(`char`)和布尔类型(`boolean`)。例如: ```java int num = 10; double d = 3.14; char ch = 'A'; boolean flag = true; ``` 引用数据类型包括类、接口、数组等。例如创建一个字符串对象: ```java String str = "Hello, Java!"; ``` 2. **变量和常量** 变量是存储数据的容器,使用前需要先声明。常量是一旦赋值就不能再改变的变量,使用 `final` 关键字修饰。例如: ```java // 变量声明和赋值 int age; age = 20; // 常量声明和赋值 final double PI = 3.14159; ``` 3. **运算符** Java 支持多种运算符,如算术运算符(`+`、`-`、`*`、`/`、`%`)、关系运算符(`>`、`<`、`==`、`!=` 等)、逻辑运算符(`&&`、`||`、`!`)等。例如: ```java int a = 10; int b = 20; boolean result = (a < b) && (a != 0); ``` 4. **控制语句** 控制语句用于控制程序的执行流程,包括条件语句(`if-else`、`switch`)和循环语句(`for`、`while`、`do-while`)。例如: ```java // if-else 语句 int score = 80; if (score >= 60) { System.out.println("及格"); } else { System.out.println("不及格"); } // for 循环 for (int i = 0; i < 5; i++) { System.out.println(i); } ``` #### 面向对象编程 1. **类和对象** 类是对象的抽象描述,对象是类的具体实例。创建对象需要使用 `new` 关键字,分为声明、实例化和初始化三步。例如: ```java class Person { String name; int age; public void sayHello() { System.out.println("Hello, my name is " + name + ", I'm " + age + " years old."); } } public class Main { public static void main(String[] args) { // 声明对象 Person p; // 实例化对象 p = new Person(); // 初始化对象属性 p.name = "Tom"; p.age = 25; p.sayHello(); } } ``` 2. **构造器** 构造器用于初始化对象的属性,可使用 `alt + insert` 快捷键直接生成。例如: ```java class Student { String name; int age; public Student() { this.name = "Unknown"; this.age = 0; } public Student(String name, int age) { this.name = name; this.age = age; } } ``` 3. **封装、继承和多态** 封装是将数据和操作数据的方法绑定在一起,隐藏对象的内部实现细节。继承是子类继承父类的属性和方法,可实现代码的复用。多态是指同一个方法可以根据对象的不同类型表现出不同的行为。例如: ```java // 封装示例 class BankAccount { private double balance; public void deposit(double amount) { if (amount > 0) { balance += amount; } } public double getBalance() { return balance; } } // 继承示例 class Animal { public void eat() { System.out.println("Animal is eating."); } } class Dog extends Animal { @Override public void eat() { System.out.println("Dog is eating."); } } // 多态示例 public class Main { public static void main(String[] args) { Animal a = new Dog(); a.eat(); } } ``` #### 异常处理 Java 中的异常处理机制用于处理程序运行过程中出现的错误。使用 `try-catch-finally` 语句来捕获和处理异常。例如: ```java public class ExceptionExample { public static void main(String[] args) { try { int[] arr = {1, 2, 3}; System.out.println(arr[3]); } catch (ArrayIndexOutOfBoundsException e) { System.out.println("数组越界异常:" + e.getMessage()); } finally { System.out.println("无论是否发生异常,finally 块都会执行。"); } } } ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值