【JavaSE专栏7】Java 常量、变量及其作用域

news2025/1/12 22:51:33

作者主页:Designer 小郑
作者简介:Java全栈软件工程师一枚,来自浙江宁波,负责开发管理公司OA项目,专注软件前后端开发(Vue、SpringBoot和微信小程序)、系统定制、远程技术指导。CSDN学院、蓝桥云课认证讲师,全栈领域优质创作者。热爱技术、专注业务、开放合作、乐于分享,期待你我共同成长!
主打方向:Vue、SpringBoot、微信小程序

目录

    • 一、Java 常量
      • 1.1 字面量
      • 1.2 Final 修饰
    • 二、Java 变量
      • 2.1 变量定义
      • 2.2 变量属性
    • 三、变量的作用域
    • 四、课时小结


一、Java 常量

在 Java 中,常量就是在程序执行过程中不会变化的量,有两种实现方式,分别为:

  1. 字面量:如 abc123 等。
  2. 通过 final 关键字修饰的,有名称的常量。

1.1 字面量

请看以下代码块:

public class Main {

    public static void main(String[] args) {

        System.out.println(123);
    }
}

代码中的 123 就是常量,它不能被更改。


1.2 Final 修饰

Final 修饰的常量定义的语法为 private static final 类型 名称,请看以下代码块:

public class Main {

    private static final int MAX_SIZE = 10;
    public static void main(String[] args) {

        for(int i = 0; i < MAX_SIZE; i ++) {
            System.out.println(i);
        }
    }
}

提示:其中 static 为静态修饰关键字,将在后续章节中讲解。

代码中的 MAX_SIZE,就是一个常量,它也一样不能被改变。

如果开发者尝试去改变常量,则无法通过编译,如下图所示。

在这里插入图片描述

提示:在实际开发中,建议为常量赋初始值,如果不赋予初始值也有默认值,具体可见《【JavaSE专栏5】Java 基本数据类型和取值范围》的 2.2 小节。


二、Java 变量

在 Java 中,变量就是在程序执行过程中,其值可以发生变化的量,在实际开发中很常见。

2.1 变量定义

在 Java 中,一般通过基本数据类型来定义基本变量,比如:

  • int a;
  • double b;
  • float c;

此时在变量中存放的就是一个具体的基本数据类型的值。

在实际开发中,更多的是定义类、数组、引用类型的变量,比如:

  • String d = “str”;
  • User e = new User();
  • int [] arr = null;

此时在变量中存放的是一个内存地址。

变量的定义方式为:

  • 类型名 变量名;
  • 类型名 变量名1,变量名2,变量名3, … ;
public class Main {

    public static void main(String[] args) {

        int a;
        double b;
        float c,d;
        boolean e;
        String f;
        int[] g = new int[10];
    }
}

2.2 变量属性

Java 变量有四个属性,分别是变量名称、变量类型、变量当前值和变量地址。

  1. 变量名称:程序中用来标识此变量的名称。
  2. 变量类型:定义此变量时指定的类型。
  3. 变量当前值:在任何时刻次变量存储的具体的值。
  4. 变量地址:变量在内存中的开始地址。

变量类型的存在有两个作用,已是指明此变量在内存中所占的字节数;再是可以限制此变量可以参与的运算。

变量当前值可以存放实际的值,也可以存放引用变量的内存地址,可以是对象的开始地址或数组的开始地址。


三、变量的作用域

变量的作用域指的是它的存在范围,只有在这个范围内使用它才是有效的。

其次,作用域决定了变量的生命周期。

变量的生命周期是指从一个变量被创建并分配内存空间开始,到这个变量被销毁、清除内存空间的过程。

当一个变量被定义时,它的作用域就被确定了,分为以下几种类型。

  1. 成员变量:可细分为类层次成员变量、对象层次成员变量。类层次成员变量由 static 关键词修饰,被所有对象共享,直到类被卸载才消失;对象层次成员变量在对象毁灭时即消失。
  2. 局部变量:在方法内部或一个代码块内部定义,也是最常用的变量,只有在此方法内部或此代码块内部才有效。
  3. 方法参数:局部变量的一个分支,方法执行时存在,方法执行完毕后消失。
  4. 异常处理参数:也是局部变量的一个分支,只在对应的异常语句块中有效。

参考代码如下所示:

public class Main {

    private static final int MAX_SIZE = 10;
    public static void main(String[] args) {

        int a;
    }

    public static int add(int x,int y) {
        try {
            return x + y;
        } catch (Exception e) {
            System.out.println("异常了!");
            return 0;
        }
    }
}

图解说明如下图所示:

在这里插入图片描述


四、课时小结

在本节课时中,讲解了 Java 中常量的定义,涉及到字面量和 Final 关键字修饰,接着学习变量的使用和作用域范围。在下节课时中将讲解 Java 的运算符、表达式和语句。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python论文绘图利器seaborn.lineplot

Python论文绘图利器seaborn.lineplot 提示&#xff1a;前言 Python论文绘图利器seaborn.lineplot 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录Python论文绘图利器seaborn.lineplot前言一、导入包二、加载数据三…

嵌入式桌面管理系统Matchbox

简介 Matchbox&#xff08;中文译名&#xff1b;火柴盒&#xff09;是X Window System的免费和开源Window Manager&#xff0c;它主要用于嵌入式系统。取名Matchbox&#xff0c;很形象的表明它只适用于屏幕只有火柴盒大小的设备。 buildroot 移植MatchBox session managermat…

高斯秩变换 RankGauss 可能是比标准化/归一化更有效的连续值特征变换方法

文章目录 一、前言二、关键原理三、总结CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 一、前言 高斯秩变换是 Kaggle 竞赛大佬 Michael Jahrer(Grandmaster) 提出的一种新颖的特征变换方法,他称之为 RankGauss。类似归一化(MinMax)和标准化(Standardization)的作用,…

帆软报表 V8 get_geo_json 任意文件读取漏洞

帆软报表 V8 get_geo_json 任意文件读取漏洞 CNVD-2018-04757 1.漏洞介绍 FineReport报表软件是一款纯Java编写的&#xff0c;集数据展示(报表)和数据录入(表单)功能于一身的企业级web报表工具。 FineReport v8.0版本存在任意文件读取漏洞&#xff0c;攻击者可利用漏洞读取网…

车载以太网 - 测试用例设计 - 头部信息检测 - 10

前面的篇幅已经把ISO 13400中DoIP软件协议规范部分进行详细的介绍说明,如果在文章中有哪些介绍的不充分或者不够详细,欢迎评论区留言讨论;接下来的文章主要介绍DoIP协议相关的测试用例设计,这也是一个测试工程师必备的重要技能之一,能否保证测试执行完成后,软件质量是达到…

超级详解洛谷P4011 孤岛营救问题(bfs超难题)(保证看懂)

题目 说明 1944 年&#xff0c;特种兵麦克接到国防部的命令&#xff0c;要求立即赶赴太平洋上的一个孤岛&#xff0c;营救被敌军俘虏的大兵瑞恩。瑞恩被关押在一个迷宫里&#xff0c;迷宫地形复杂&#xff0c;但幸好麦克得到了迷宫的地形图。迷宫的外形是一个长方形&#xff…

阿里“云开发“小程序(uniCould)

博主ps&#xff1a; 网上资料少的可怜&#xff0c;哎&#xff0c;腾讯云涨价了&#xff0c;论服务器&#xff0c;我肯定选的阿里&#xff0c;再着你们对比下unicould的报价就知道了&#xff0c;如果有钱就另当别论了。 所以这片博文&#xff0c;博主试过之后&#xff0c;先抛出…

(day8) 自学Java——拼图小游戏

GUI(图形用户接口)&#xff0c;是指采用图形化的方式显示操作界面。 Java中包含两套完整体系&#xff1a;AWT包&#xff0c;Swing包 一.代码 package com.abc.ui;import javax.swing.*; import javax.swing.border.BevelBorder; import java.awt.event.ActionEvent; import ja…

JavaEE day5 初识CSS 2

选择器 基本选择器&#xff1a;id选择器、类选择器、元素选择器 复合选择器&#xff1a;并列选择器、子孙选择器、孩子选择器 通配符选择器 *{.....} 任意元素&#xff1a;书写一些全局的规则时使用&#xff0c;就等于是一个全局都要遵守的规则 伪类选择器&#xff1a;针…

Lab 3: Midterm Review

Lab3 部分questionQ5&#xff1a;Its Always a Good PrimeQ6&#xff1a;Church numeralsQ5&#xff1a;It’s Always a Good Prime Implement div_by_primes_under, which takes in an integer nand returns an n-divisibility checker. An n-divisibility-checker is a funct…

【蓝桥杯选拔赛真题35】python回文数升级 青少年组蓝桥杯python 选拔赛STEMA比赛真题解析

目录 python输出N除以3的商 一、题目要求 1、编程实现 2、输入输出

二叉树22:二叉搜索树中的搜索

主要是我自己刷题的一些记录过程。如果有错可以指出哦&#xff0c;大家一起进步。 转载代码随想录 原文链接&#xff1a; 代码随想录 leetcode链接&#xff1a;700. 二叉搜索树中的搜索 题目&#xff1a; 给定二叉搜索树&#xff08;BST&#xff09;的根节点 root 和一个整数…

变量的了解

1、普通局部变量 -------------定义形式&#xff1a;在{}里面定义的 普通变量 叫做 普通局部变量 -------------作用范围&#xff1a;所在的 {} 复合语句之间有效 -------------生命周期&#xff1a;所在的 {} 复合语句之间有效 -------------存储区域&#xff1a;栈区 ---…

2.6 JAVA运算符

文章目录1.运算符概述2.运算符具体功能3.基本四则运算符4.取余运算符5.自增自减运算符6.比较运算符7.逻辑运算符8.三目运算符9.赋值运算符10.综合练习&#xff1a;求平年闰年1.运算符概述 运算符用于连接表达式的操作数&#xff0c;并对操作数执行运算。 例如&#xff0c;表达…

使用java来创建es索引(基于es7.8)

1、先引入pom依赖&#xff1a; <dependencies> <dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> <version>7.8.0</version> …

零基础学JavaWeb开发(二十四)之 springmvc入门到精通(4)

三、整合前端layui 前后端分离架构模式 前端---页面编写好 数据源来自于 后端接口 layui或者vue等 将接口编写好即可&#xff08;springmvc&#xff09; 1、使用layui画出首页界面 html/js/css 表格 - 页面元素 - Layui 引入css <!-- 引入layui css --> <link …

MySQL优化(1)执行计划explain中type属性详解

系列文章目录1.初始化测试数据1.初始化表格&#xff08;user表&#xff09;2.初始化表格&#xff08;product表&#xff09;3.初始化表格&#xff08;user表数据初始化&#xff09;4.初始化表格&#xff08;product表函数&#xff09;5.初始化表格&#xff08;product表数据初始…

雷达编程实战之信号处理流程

信号处理_MatlabAD数据幅相校准1DFFT2DFFT由射频前端发射、接收信号&#xff0c;至获得目标径向距离、径向速度、径向角度、RCS等目标属性信息&#xff0c;这个过程&#xff0c;我们谓之&#xff0c;FMCW毫米波雷达信号处理流程。 VCO为压控振荡器(Voltage Controlled Oscilla…

从技术角度看Android大系统的构成

最近因为工作需要&#xff0c;再次捡起了放下多年的Android开发。说起Android&#xff0c;还是要感谢这个时代&#xff0c;感谢开源。这个时代&#xff0c;让我们开发者&#xff0c;可以通过开源&#xff0c;通过开源的Android&#xff0c;学到很多东西。有如此感慨&#xff0c…

基本二叉树

文章目录接口实现三种基本遍历方式获取节点个数获取叶子节点个数获取树的高度返回第K层节点个数返回x所在节点二叉树的销毁OJ二叉树知识点及选择题N0 N2 1由中序和前序&#xff08;或后序&#xff09;确定结构的方法有N个元素的完全二叉树的深度是 logN 1选择题&#xff1a;…