Java|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、对象实例级变量就是成员变量,实例化后才会分配内存空间,才能访问。
【Java|Java 如何在switch case语句中声明变量】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执行统一语句.****
原理归原理,下面是一个例题
从键盘输入两个数和一个运算符,输出运算结果:
文章图片
文章图片
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
推荐阅读
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 任时光绽放成六月繁花
- 我从来不做坏事
- 考研英语阅读终极解决方案——阅读理解如何巧拿高分
- 樱花雨
- 如何寻找情感问答App的分析切入点
- 拍照一年啦,如果你想了解我,那就请先看看这篇文章
- mybatisplus如何在xml的连表查询中使用queryWrapper
- MybatisPlus使用queryWrapper如何实现复杂查询
- 事件代理