文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Java 如何在switch case语句中声明变量

2024-04-02 19:55

关注

在switch case语句中声明变量

Java中使用switch case语句时很容易出现以下两个报错:

1、Duplicate local veriable out. (局部变量重复)

2、The local veriable out may not have been initialized. (局部变量可能未被初始化)

第一种情况常见的场景为


switch (type) {
    case 1:
        String test;
        ...
        break;
    case 2:
        String test;
        ...
        break;
}

是因为我们在一个变量作用域里声明了两个同名变量“test”。

第二种情况常见的场景为


switch (type) {
    case 1:
        String test;
        test = "my error";
        ...
        break;
    case 2:
        System.out.print(test);
        ...
        break;
}

是因为虽然声明变量test的位置和使用变量test的位置在同一个变量作用域,但是当type为2时,就会跳过test = "my error"的变量初始化语句,导致程序在运行时变量没有被初始化就被使用报错。

下面的写法就是正确的:


switch (type) {
    case 1:
        String test;
        ...
        break;
    case 2:
        test = "my error";
        System.out.print(test);
        ...
        break;
}

在Java中使用switch语句还是比较友好的,在C++中使用switch语句时甚至不能在case分支中声明变量。

不允许跨过变量的初始化语句,直接跳到该变量作用域的另一个位置。

——《C++ primer》

那么我们上文中反复提及到的一个概念——变量作用域,是什么呢?

Java的变量作用域一共有四种,分别是类级、对象实例级、方法级、块级.

1、类级变量又称全局级变量或静态变量,需要使用static关键字修饰,类级变量在类定义后就已经存在,占用内存空间,可以通过类名来访问,不需要实例化。

2、对象实例级变量就是成员变量,实例化后才会分配内存空间,才能访问。

3、方法级变量就是在方法内部定义的变量。

4、块级变量就是定义在一个块内部的变量,变量的生存周期就是这个块,出了这个块就消失了,比如 if、for 语句的块,还有static块。

Java用一对大括号作为语句块的范围,称为作用域,在作用域里定义的变量,只有在该作用域结束之前才可使用。


public class test {
    public static String TAG = "test";  //类级变量
    public int flag;   //对象实例级变量
    
    static {
        boolean isTest = flase;   //块级变量
    }
    
    public void test() {
        int testFlag = 2;   //方法级变量
    }
  
  public static void main(String[] args) {}
}

Java switch-case语句用法及例题


******switch(表达式)
{
case 常量表达式1:语句1;
....
case 常量表达式2:语句2;
default:语句;
}**

1.default就是如果没有符合的case就执行它,default并不是必须的.

2.case后的语句可以不用大括号.

3.switch语句的判断条件可以接受int,byte,char,short,不能接受其他类型.

4.一旦case匹配,就会顺序执行后面的程序代码,而不管后面的case是否匹配,直到遇见 break,利用这一特性可以让好几个case执行统一语句.****

原理归原理,下面是一个例题

从键盘输入两个数和一个运算符,输出运算结果:

在这里插入图片描述 在这里插入图片描述

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯