Java_实例变量和局部变量及this关键字详解

        最近得看看Java,想学一学Flink实时的东西了,当然Scala语法也有这样的规定,简单看一下这两个吧,都比较容易忽视

实例变量和局部变量

实例变量和局部变量是常见的两种变量类型,区别

  1. 作用域

    • 实例变量:实例变量属于类的实例,可以在整个类中被访问和使用。每个类的实例(对象)都有一份自己的实例变量副本。
    • 局部变量:局部变量只在声明它的方法或代码块中可见,超出该范围就无法访问。
  2. 生存周期

    • 实例变量:实例变量的生命周期与对象的生命周期相同,当对象被销毁时,实例变量也会被销毁。
    • 局部变量:局部变量的生命周期仅限于声明它的方法或代码块执行期间,当方法或代码块执行完毕时,局部变量会被销毁。
  3. 默认值

    • 实例变量:实例变量会有默认值,如数值类型默认为0,布尔类型默认为false,引用类型默认为null。
    • 局部变量:局部变量没有默认值,必须在使用前进行初始化。

具体例子如下

public class VariableExample {
    // 实例变量
    private int instanceVar;

    public void exampleMethod() {
        // 局部变量
        int localVar = 10;

        System.out.println("实例变量值:" + instanceVar); // 实例变量有默认值0
        System.out.println("局部变量值:" + localVar);

        instanceVar = 20; // 修改实例变量的值
        System.out.println("修改后的实例变量值:" + instanceVar);

        // 下面一行代码会报错,因为局部变量必须初始化后才能使用
        // System.out.println("未初始化的局部变量:" + uninitializedVar);
    }

    public static void main(String[] args) {
        VariableExample obj = new VariableExample();
        obj.exampleMethod();
    }
}

this关键字

this 关键字通常用来引用当前对象的实例。它可以用来区分对象的实例变量和局部变量,也可以在对象的方法中调用其他方法或构造函数。

  1. 区分实例变量和局部变量:当实例变量和局部变量重名时,可以使用 this 关键字来引用实例变量,以区分两者。

  2. 在构造函数中调用其他构造函数:在一个构造函数中调用同一个类的其他构造函数时,可以使用 this() 来实现。

  3. 传递当前对象的引用:在方法中需要将当前对象的引用传递给其他方法时,可以使用 this 关键字。

this 关键字可以在以下情况下被省略:

  1. 当没有歧义时:如果在方法中没有局部变量和实例变量同名的情况下,可以省略 this 关键字。

  2. 在静态方法中:静态方法中没有 this 关键字,因为静态方法是与类相关联而不是与对象实例相关联的。

public class Person {
    private String name;

    public Person(String name) {
        this.name = name; // 使用 this 关键字区分实例变量和局部变量
    }

    public void setName(String name) {
        this.name = name; // 使用 this 关键字区分实例变量和局部变量
    }

    public void printName() {
        System.out.println("My name is " + this.name); // 可以省略 this,但为了清晰起见,保留比较好
    }

    public void changeName(String name) {
        setName(name); // 在方法中调用其他方法时,可以省略 this
    }
}

                                                图片来源:我截的《Scala编程》的图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/935366.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++50道经典面试题

文章结尾有最新热度的文章,感兴趣的可以去看看。 本文是经过严格查阅相关权威文献和资料,形成的专业的可靠的内容。全文数据都有据可依,可回溯。特别申明:数据和资料已获得授权。本文内容,不涉及任何偏颇观点,用中立态度客观事实描述事情本身 导读 作为一种通用且面向对…

ansible自动化运维(三)jinja2模板roles角色管理

相关文章ansible自动化运维(一)简介及清单,模块-CSDN博客ansible自动化运维(二)playbook模式详解-CSDN博客ansible自动化运维(四)运维实战-CSDN博客 三.Ansible jinja2模板 Jinja2是Python的全功能模板引…

池化在深度学习中增强特征的作用

目录 ​编辑 引言 池化的基本作用与特征降维 池化的定义与目的 池化操作的实现 提取关键特征与计算效率的提升 池化对特征提取的影响 平均池化的应用 提高特征鲁棒性与过拟合的防止 池化对模型鲁棒性的贡献 池化防止过拟合的原理 增强多级特征与特征表达能力的提升…

【OJ题解】面试题三步问题

个人主页: 起名字真南的CSDN博客 个人专栏: 【数据结构初阶】 📘 基础数据结构【C语言】 💻 C语言编程技巧【C】 🚀 进阶C【OJ题解】 📝 题解精讲 目录 **题目链接****解题思路****1. 问题分析****2. 递归思路****3. 优化方案&a…

a few paper talked about software building process, so I learned

see also https://martinfowler.com/bliki/BlueGreenDeployment.html https://martinfowler.com/books/continuousDelivery.html https://martinfowler.com/articles/continuousIntegration.html https://swizec.com/blog/why-software-only-moves-forward/

Jenkins参数化构建详解(This project is parameterized)

本文详细介绍了Jenkins中不同类型的参数化构建方法,包括字符串、选项、多行文本、布尔值和git分支参数的配置,以及如何使用ActiveChoiceParameter实现动态获取参数选项。通过示例展示了传统方法和声明式pipeline的语法 文章目录 1. Jenkins的参数化构建1…

Tablesaw封装Plot.ly实现数据可视化

上文介绍tablesaw的数据处理功能,本文向你展示其数据可视化功能,并通过几个常用图表示例进行说明。 Plot.ly包装 可视化是数据分析的重要组成部分,无论你只是“查看”新数据集还是验证机器学习算法的结果。Tablesaw是一个开源、高性能的Java…

物流行业新突破:数字孪生的核心作用解析

在现代物流行业,效率和精准度是企业竞争的关键。随着数字化技术的发展,数字孪生作为一种新兴技术,正在智慧物流领域崭露头角。通过构建真实物流系统的虚拟映射,数字孪生帮助企业实现全方位的管理优化,为智慧物流带来了…

手机租赁系统开发全流程解析与实用指南

内容概要 在如今快速发展的科技时代,手机租赁系统已经成为一种新兴的商业模式,非常符合当下市场需求。那么,在开发这样一个系统的时候,首先要从需求分析和市场调研开始。在这一阶段,你需要了解用户需要什么&#xff0…

ViewModel

ViewMode是MVVM架构模式中VM层对应的类,它的作用是存储界面数据,并和界面发生数据交互。ViewModel能感知生命周期,并且在界面由于配置问题发生重建时候,可以保持当前的数据不变。生命周期如下: ViewMode由ViewModePr…

Android -- [SelfView] 自定义弹窗式颜色选择器

Android – [SelfView] 自定义弹窗式颜色选择器 PS: 1. 弹框式显示; 2. 支持透明度设置; 3. 支持拖动控件选择颜色; 4. 支持 ARGB | HEX 数值填写预览颜色并返回; 5. 输出支持Hex 和 Int 两种格式;效果 使用方法&…

open cv学习之图片矫正

一,实验原理 图像矫正的原理是透视变换 图像畸变主要有两类:径向畸变和切向畸变。径向畸变通常会导致图像的四个角向外或向内弯曲;切向畸变则是由于相机与图像平面不完全平行引起的。而OpenCV 提供了一个相机标定的工具,能够自动…

微信开发工具卡优化

微信开发者工具优化 设置-通用设置-不勾选 使用GPU加速模式 设置-通用设置-内存限制 1024调整为2048 详情-本地设置-不勾选 启用多核心编译 详情-本地设置-勾选 自动压缩脚本和样式 app.json “lazyCodeLoading”: “requiredComponents”

低空物流配送路径优化的探索

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

vue3 通过变量的值,来动态的进行class的赋值

1、需求:不同的设备因为宽度不一样,所以要做一些调整,但是通过tailwindcss的设置并不能满足我们的条件: 现在手机的屏幕大小也很大,设置了xl,发现电脑动,手机也在动,一样的效果。 2…

【开源】基于SpringBoot框架的在线视频教育平台 (计算机毕业设计)+万字毕业论文 T027

系统合集跳转 源码获取链接 一、系统环境 运行环境: 最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 IDE环境: Eclipse,Myeclipse,IDEA或者Spring Tool Suite都可以 tomcat环境: Tomcat 7.x,8.x,9.x版本均可 操作系统…

导游现场面试需要注意的问题

今天给大家带来一些导游现场面试需要注意的问题,大部分的城市导游考试已经考完了,但是还有一些城市的十二月份才考,有需要的朋友们赶紧来看,有备无患。 01、做好充足准备 认真准备做好每个景点的讲解介绍,不要抱有侥幸…

牛客刷题(总结)

目录 <1> <2> 思路 <1> 给你 4 个整数 a,b,c,d&#xff0c;你需要回答 是奇数还是偶数。 #include<stdio.h> #define int long long int f(int a) {if(a%20){return 0;}else{return 1;}} signed main() {int a,b,c,d;scanf("%lld %lld %lld %ll…

AI智算-k8s部署大语言模型管理工具Ollama

文章目录 简介k8s部署OllamaOpen WebUI访问Open-WebUI 简介 Github&#xff1a;https://github.com/ollama/ollama 官网&#xff1a;https://ollama.com/ API&#xff1a;https://github.com/ollama/ollama/blob/main/docs/api.md Ollama 是一个基于 Go 语言开发的可以本地运…

Arduino: Arduino IDE安装

目录 1.1 Arduino软件下载与安装 1.2 esp32_arduino的开发库安装 1.3 手动安装板支持包 1.1 Arduino软件下载与安装 Arduino官网下载地址&#xff1a;https://www.arduino.cc/en/software。 1.2 esp32_arduino的开发库安装 接下来安装esp32_arduino的开发库。 1.2.1 在线安…