文档章节

在switch中的case语句中声明变量

Leech
 Leech
发布于 2015/10/08 17:30
字数 346
阅读 518
收藏 1

本人今天在编写工具类时,无意之间发现,在Java的Swith语句的case语句中声明局部变量时出现了一个奇怪的问题。

废话少说,先列出例子,一看便知。

情景一:case 1中声明变量x,case 2中不能再声明变量x

switch (1) {

        case 1:

            int x = 1;

            break;

        case 2:

            int x = 2;// 编译器会提示:Duplicate local variable x

            break;

}

如是,我猜测是不是因为case 1和case 2都在switch的块中,所以case 1和case 2共享本地变量。如是,我便提出第二种假设。

情景二:case 1中声明变量x,case 2中直接使用变量x

switch (2) {

        case 1:

            int x = 1;

            break;

        case 2:

            System.out.println(x);// The local variable x may not have been initialized

            break;

}

情景二的结果说明,case 1中x被提前声明,但是没有进行case 1中指定的赋值操作。初步可以得出结论,case语句中的局部变量声明会被提前。如是对情景二的代码稍加修改。

情景三:case 1声明x变量,case 2赋值并使用

switch (2) {

        case 1:

            int x = 1;

            break;

        case 2:

            x = 2;

            System.out.println(x);// 正常输出2

            break;

}

由此可见,进一步证明case中声明局部变量的语句会被提前。

© 著作权归作者所有

共有 人打赏支持
上一篇: 入门指南
下一篇: mv命令详解
Leech
粉丝 20
博文 196
码字总数 399079
作品 0
武汉
架构师
私信 提问
读《Go并发编程实战》第4章 流程控制方式

说实话,该书前面讲的枯燥冗长,看的有点打瞌睡,而我自己又是有一个有强迫症的人,喜欢一个字一个字地抠,最终结果是一看就困,然后转天再看再困,依次循环......。 这就总会让我自己有点遐...

qingkechina
2017/11/18
0
0
前嗅ForeSpider脚本教程:基本语句

今天,小编主要为大家介绍一下:前嗅ForeSpider脚本中的基本语句。内容包括:顺序语句,条件语句,循环语句,开关语句和返回语句。 1.顺序语句 ForeSpider脚本语法规则类似JavaScript、C++等...

forespider
03/13
0
0
swift 流程控制

swift 流程控制 // // main.swift // swift流程控制 // // Created by zhangbiao on 14-6-13. // Copyright (c) 2014年 理想. All rights reserved. // import Foundation // swift 流程控制......

法斗斗
2016/03/03
3
0
Python编程入门基础语法详解经典

一、基本概念 1.内置的变量类型: Python是有变量类型的,而且会强制检查变量类型。内置的变量类型有如下几种: #浮点 float_number = 2.3 #复数 complex_number = 1 + 5j #整型 integer_nu...

qq1622479435
2018/08/19
0
0
Python编程入门基础语法详解(经典)

一、基本概念 1.内置的变量类型: Python是有变量类型的,而且会强制检查变量类型。内置的变量类型有如下几种: #浮点 float_number = 2.3 #复数 complex_number = 1 + 5j #整型 integer_nu...

糖宝lsh
2018/08/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

容器服务

简介 容器服务提供高性能可伸缩的容器应用管理服务,支持用 Docker 和 Kubernetes 进行容器化应用的生命周期管理,提供多种应用发布方式和持续交付能力并支持微服务架构。 产品架构 容器服务...

狼王黄师傅
昨天
3
0
高性能应用缓存设计方案

为什么 不管是刻意或者偶尔看其他大神或者大师在讨论高性能架构时,自己都是认真的去看缓存是怎么用呢?认认真真的看完发现缓存这一块他们说的都是一个WebApp或者服务的缓存结构或者缓存实现...

呼呼南风
昨天
12
0
寻找一种易于理解的一致性算法(扩展版)

摘要 Raft 是一种为了管理复制日志的一致性算法。它提供了和 Paxos 算法相同的功能和性能,但是它的算法结构和 Paxos 不同,使得 Raft 算法更加容易理解并且更容易构建实际的系统。为了提升可...

Tiny熊
昨天
3
0
聊聊GarbageCollectionNotificationInfo

序 本文主要研究一下GarbageCollectionNotificationInfo CompositeData java.management/javax/management/openmbean/CompositeData.java public interface CompositeData { public Co......

go4it
昨天
3
0
阿里云ECS的1M带宽理解

本文就给大家科普下阿里云ECS的固定1M带宽的含义。 “下行带宽”和“上行带宽” 为了更好的理解,需要先给大家解释个词“下行带宽”和“上行带宽”: 下行带宽:粗略的解释就是下载数据的最大...

echojson
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部