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

目录
  • 在switch case语句中声明变量
    • 第一种情况常见的场景为
    • 第二种情况常见的场景为
  • Java switch-case语句用法及例题
    • 原理归原理,下面是一个例题

在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执行统一语句.****

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

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

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

(0)

相关推荐

  • java switch语句使用注意的四大细节

    switch语句的格式如下:(它的功能是选出一段代码执行) 复制代码 代码如下: switch(整数选择因子) { case 整数值1 : 语句; break; case 整数值2 : 语句; break; case 整数值3 : 语句; break; case 整数值4 : 语句; break; case 整数值5 : 语句; break; ... default:语句; } 但是要注意几点如下: 1.switch中case的参数类型只能是int类型,但是放byte,short,char类型的

  • Java中Switch用法代码示例

    一.java当中的switch与C#相比有以下区别 注:在java中switch后的表达式的类型只能为以下几种:byte.short.char.int(在Java1.6中是这样),  在java1.7后支持了对string的判断 还有一点要注意的是:在java中如果switch的case语句中少写了break;这个关键字,在编译的时候并没有报错.但是在执行的时候会一直执行所有case条件下的语句并不是去判断,所以会一直执行直到遇到break关键字跳出或者一直执行到defaut语句. 还有就是如果

  • Java中switch的三种用法方式

    Java中switch的三种用法详解: switch居然有三种方式 ? 作为一个接触java不久的人来说,这确实让我吃了一惊! 根据版本,在java14开始, switch语句有了一个很大的调整, 这就让swicth语句有了更多的操作和选择,在代码上,更加的简便灵活, 让我们试试这神奇的switch吧! 使用switch这个关键词, 我们可以很好的解决if-else 中多重选择的尴尬场面! Java中switch的三种用法详解: switch 标准方式 switch - > 用法: switch

  • java中的switch case语句使用详解

    java中的switch case语句 switch-case语句格式如下: switch(变量){ case 变量值1: //; break; case 变量值2: //...; break; ... case default: //...; break; } swtich()变量类型只能是int.short.char.byte和enum类型(JDK 1.7 之后,类型也可以是String了).当进行case判断时,JVM会自动从上到小扫描,寻找匹配的case,可能存在以下情况: 情况一:若未

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

    目录 在switch case语句中声明变量 第一种情况常见的场景为 第二种情况常见的场景为 Java switch-case语句用法及例题 原理归原理,下面是一个例题 在switch case语句中声明变量 Java中使用switch case语句时很容易出现以下两个报错: 1.Duplicate local veriable out. (局部变量重复) 2.The local veriable out may not have been initialized. (局部变量可能未被初始化)

  • 详解Swift的switch...case语句中break关键字的用法

    与Objective-C中这部分内容相比,在Swift中switch得到了极大的改善.这是一件非常有趣的事,因为这还是没有添加到Objective-C中,还是没有打破Objective-C是C的超集的事实. 第一件令人兴奋的地方是可以对字符串转换.这也许正是你之前想要做,却不能做的事.在Objective-C中如果要对字符串用"switch",你必须要使用多个if语句,同时要用isEqualToString:,像下面这样: if ([person.name isEqualToStrin

  • java中switch case语句需要加入break的原因解析

    java中switch case语句需要加入break的原因解析            java 中使用switch case语句需要加入break 做了具体的实例分析,及编译源码,在源码中分析应该如何使用,大家可以参考下: 假设我们有如下这样一个switch语句: public static void test(int index) { switch (index) { case 1: System.out.println(1); case 2: System.out.println(2);

  • Swift编程中的switch...case语句实例解析

    Swift中的switch...case语句可以判断对象类型, Objective-C中则必须是整数. 不可以穿透,可以不写break, var rank = "A" switch rank{ case "A": //相当于if print("优") case "B": // 相当于else if print("优") case "C": // 相当于else if print(&quo

  • 如何用c++表驱动替换if/else和switch/case语句

    目录 C++的表驱动法 一.常用示例 二.表驱动法 三.C++实现注意 四.实用案例 C++的表驱动法 目的:使用表驱动法,替换复杂的if/else和switch/case语句. 一.常用示例 以switch为例,常用示例如下: Funcition() { switch (key) { case key1: statements 1; break; case key2: statements 2; break; ... case keyn: statements n; break; defaul

  • 使用 Python 实现简单的 switch/case 语句的方法

    在Python中是没有Switch / Case语句的,很多人认为这种语句不够优雅灵活,在Python中用字典来处理多条件匹配问题字典会更简单高效,对于有一定经验的Python玩家不得不承认,的确如此. 但今天我们还是来看看如果一定要用Python来Switch / Case,可以怎么玩. 语法约束 我们先定义一下Switch/Case应该怎么表达,为了简单我们可以让它长成这样. def cn(): print('cn') def us(): print('us') switch(lang).c

  • Python实现switch/case语句

    目录 使用if-elif-elif-else 实现switch/case 使用字典 实现switch/case 在类中可使用调度方法实现switch/case 总结 使用if-elif-elif-else 实现switch/case 可以使用if-elif-elif..else序列来代替switch/case语句,这是大家最容易想到的办法.但是随着分支的增多和修改的频繁,这种代替方式并不很好调试和维护. 使用字典 实现switch/case 可以使用字典实现switch/case这种方式易维护,

  • SQL Server在T-SQL语句中使用变量

    变量的种类 在T-SQL中,变量按生存范围可以分为全局变量(Global Variable)和局部变量(Local Variable) 全局变量是由系统定义的,在整个SQL Server实例内都能访问到的变量,全部变量以@@开头,用户只能访问,不能赋值. 局部变量由用户定义,生命周期只在一个批处理内有效.局部变量以@作为第一个字符,由用户自己定义和复制. 示例: DECLARE @i int --声明一个int类型局部变量 SET @i = 10 --通过SET对局部变量进行赋值 DECLARE

  • mysql查询语句中用户变量的使用代码解析

    上一篇文章中我们介绍了MySQL优化总结-查询总条数.这篇文章我们来介绍下查询语句中的另一个知识:用户变量的使用代码解析. 先上代码吧 SELECT `notice`.`id` , `notice`.`fid` , `notice`.`has_read` , `notice`.`notice_time` , `notice`.`read_time` , `f`.`fnum` , `f`.`forg` , `f`.`fdst` , `f`.`actual_parking` AS `parking`

随机推荐