Java中局部变量、静态变量、静态方法的有效范围与调用

2023-11-06

1.局部变量

定义:在成员方法中定义的变量称为局部变量;(方法中的形参也可以作为局部变量)

例:

public void method1() {               //n,i均为局部变量     
        int n;
        for(int i=0;i<5;i++)
        {

            System.out.println("*");

        }
        for(int i=0;i<4;i++)
        {
            System.out.println("$");         //两个完全相同的局部变量在互不嵌套下可以多次声名定义
        }
    }

作用有效范围:局部变量在方法创建时生效,在方法结束时被销毁

技巧:在互不嵌套的作用域中可以同时声名多个名称,类型相同的局部变量;但在相互嵌连的区域中不能重复定义。

2.静态变量与方法

定义:由关键字static修饰的变量、常量和方法被称为静态变量、常量、方法。

有时在处理问题时,会需要两个类在同一个内存区域共享一个数据。例如,在球类中使用PI这个常量,可能除了本类需要这个常量外,在另一个类中也需要这个常量。这时没有必要在两个类中同时创建PI这个常量,因为这样系统会将这两个不再同一个类中定义的常量分配到不同的内存空间中。为了解决这个问题,可以将该常量设置为静态的。所以静态数据与静态方法的作用通常是为了提供共享数据或方法。但静态成员同样遵循着public、private、protected修饰符的约束。

静态成员是属于所有的,区别于个别对象。可以在本类或其他类使用类名和“.”运算符调用静态成员。              既:类名.静态成员

下看看一个代码:

public class Static1 {
    int n;
    String name;
    static int pages;                       //静态变量
    static int add;
    public  void method1() {
        //static int author;   错误语句                        //方法中不能定义静态变量
        System.out.println(name);
        method2();                          //正确语句,非静态方法中可以调用静态方法
        
    }
    public static void method2() {
        System.out.println(Static1.pages);  //用类名.啥时必须该变量为静态变量
        //method1();                        // 错误语句,静态方法中不能调用非静态方法
    }
    public static void main(String[] args) {
        Static1 book1=new Static1();
        book1.name="钢铁是怎样炼成的";           //对象.调用,区别于类名.调用
        Static1.add=15;                     //类名.调用
        //Static1.n=5;                      //错误语句,非静态变量不能这样调用
        

    }

以上代码表明了几个注意点:
1:静态方法中不能直接调用非静态方法,而非静态方法可以直接调用静态方法;
2:在静态方法中不能实用this关键字;

3:不能将方法体内的局部变量声名为static;


实用技巧
如果在执行类时,希望先执行类的一个初始化部分,可以用static关键字封装起来,并且只会执行一次这部分

    public class example{
        static {
            //some
        }
    }
这段代码中,会先执行some部分,而且只会被执行一次






















本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java中局部变量、静态变量、静态方法的有效范围与调用 的相关文章

随机推荐

  • Qt基础:七、QPushButton、QCheckBox.QRadioButton 和 QGroupBox、QLineEdit

    按钮部件的基类是QAbstractButton类 提供了按钮的通用功能 QAbstractButton类的子类包括复选框QCheckBox 标准按钮QPushButton 单选框按钮QRadioButton和工具按钮QToolButton
  • 第十节:JS的中断语句

    1 break语句 break 语句 它被用于 跳出 switch 语句 break 语句也可用于跳出 循环 for i 0 i lt 10 i if i 3 break console log i 结果 0 1 2 break 语句 如果
  • 解决No module named flask的问题

    被困扰了好几天了的问题 找过别的解决方法 都不太适用 还重新安装了一遍PyCharm也没有用 后来感觉可能是我的python和flask不在一个目录下的原因 我猜的 因为我把python卸载重新安装了一遍 在d盘里开了一个python目录
  • 如何快速开通微信小程序 流量主

    1 开通微信小程序分享盆友圈功能 2 转发给自己的盆友 3 找一些相关的群转发 4 建立自己的互刷群 有意的可以添加微信 相互刷 5 下面的我的小程序demo 欢迎大家看一看
  • dgl学习笔记05-在GPU上使用DGL图

    这个很简单 跟使用pytorch的GPU计算是一样的 就不解释了 直接上代码 代码 import dgl import torch device if torch cuda is available device cuda 0 else d
  • 常见测温传感器及电路原理图

    温度这个物理量在很多场合需要检测 目前市场测温的方法和种类也比较多 在选用何种方法的时候 需要被考虑到的因素有 温度检测范围 精度 灵敏度 应用场合 封装形式 成本等等 根据自己最近研究的内容 将温度检测的方式也可以叫电路分为模拟式和数字式
  • Linux登录mysql时 密码正确登录不进去,没有密码却能登进去

    今天上午遇到的问题 mysql密码正确登录不进去 没有密码却能登进去 解决方法 使用Navicat连接上该root权限的数据库 进入mysql 库的user 表 将 root用户的Host 127 0 0 1或者 local 改为local
  • IDEA tomcat8.5 控制台打印中文内容乱码

    运行SpringMVC项目时发现后台获取到的中文数据输出在控制台上是乱码 已经设置了字符编码过滤器 解决 方法1 修改D apache tomcat 8 5 70 bin目录下catlina bat文件 追加 Dfile encoding
  • 【C语言】字符串排序

    文章目录 前言 一 需要的相关知识 二 代码实现 1 指针数组指向的字符串常量 2 使用二维数组存放字符串 前言 在理解二维数组和数组指针的结合使用 指针数组相关内容后 会更易于理解 一 需要的相关知识 指针数组存放常量字符串和二维数组结构
  • echarts字变大_在echarts中如何调整lable的字体大小?

    series i pie data i label normal textStyle fontSize 透過設定 fontSize 就可以調整大小了 你可以參考 官網的範例 手動修改左側欄 label 的 fontSize 看看 是可以調整
  • TLS中PSK的简要介绍

    PSK的目的 我们都知道TLS需要依赖非对称算法 RSK EC DS DH 完成秘钥交换 身份认证的功能 但是非对称算法的耗时和耗计算资源的特性在对资源或者耗时敏感的场景下 你就想把他优化掉 本文我们就简绍一种TLS标准本身提供的优化方式
  • C++11新特性——时间操作chrono库

    此课件及源代码来自B站up主 码农论坛 该文章仅作为本人学习笔记使用 C 11提供了chrono模版库 实现了一系列时间相关的操作 时间长度 系统时间和计时器 头文件 include
  • Python从入门到放弃

    第一篇 markdown编辑器 001 markdown基本语法 第二篇 计算机基础 002 计算机基础之编程 003 计算机组成原理 004 计算机操作系统 005 编程语言分类 006 网络的瓶颈效应 007 计算机基础小结 第三篇 P
  • go语言日志收集系统

    0 项目地址 完整项目的GitHub地址 https github com taw19960426 learning go language tree main go log collect 一 日志收集系统背景 1 项目背景 a 每个系统
  • 如何在CentOS上安装Java

    Java是一种免费的开放源代码 并且是专门设计用于Internet的分布式环境的最流行的编程语言之一 Java有两种不同的实现 Oracle Java和OpenJDK Oracle Java具有一些其他商业功能 而OpenJDK是Java平
  • spring boot常见注解

    目录 1 EasyPoi基础功能常见的五个注解 2 Component 3 在mybatis映射接口的配置中 resultType和parameterType的用法 4 EqualsAndHashCode callSuper false 5
  • stm32定时器实现60秒定时秒表

    include led h include delay h include key h include sys h include lcd h include usart h include timer h include beep h e
  • games101,lecture11(obj文件)

    OBJ 这里的obj是一个文本文件 和编译生成的obj文件是不一样的 更多详解 https blog csdn net shenshen211 article details 51740988 添加链接描述 https www jiansh
  • MySql,SQLServer,SQLite性能比较

    工作任务 测试三个数据库的性能 测试方法 C 编写工具 对数据库进行大量数据Insert和Selectc测试 测试结果 Insert测试 Select测试 测试结果 SQLServer 和 MySql性能相差不大 Sqlite则数据多大几万
  • Java中局部变量、静态变量、静态方法的有效范围与调用

    1 局部变量 定义 在成员方法中定义的变量称为局部变量 方法中的形参也可以作为局部变量 例 public void method1 n i均为局部变量 int n for int i 0 i lt 5 i System out printl