浅谈java switch如果case后面没有break,会出现什么情况?

switch表达式的取值:byte,short,int,char

JDK5以后可以是枚举

JDK7以后可以是String

如下代码, case“A” :之后没有break,此刻会继续执行 case “B”:的代码 System.out.println("bbbbbbbb");遇到break之后,代码运行结束。

public static void main(String[] args) {
 String s = "A";
 switch (s) {
 case "A":
 System.out.println("aaaaaaaa");
  /*
  * 注意:此处如果没有添加break,则代码会继续执行,即使不满足case条件也会执行,直到遇到break
  */
   //break;
 case "B":
 System.out.println("bbbbbbbb");
 break;

 default:
 System.out.println("others");
 break;
 }
 }

结果:

default写在最前面的情况:

public static void main(String[] args) {
 int x = 2;
 int y = 3;
 switch(x){
 /*
 * default 写在最前面,但是如果没有写break;,还是会无条件执行后面的语句
 */
 default:
 y++;
 System.out.println("default");
 //break;
 case 3:
 y++;
 System.out.println(y);
 case 4:
 y++;
 System.out.println(y); 

 }
 System.out.println("y="+y);
 }

结果:

总结:

break;语句"不是必须的"。如果不写,如果一旦case相应的值成功,但内部没有break语句,那么将会无条件(不再进行case匹配)的继续向下执行其它case中的语句,直到遇到break;语句或者到达switch语句结束。

补充知识:Java小细节——switch有无break的区别

switch大家都很熟悉,可以从一系列代码中选出一段去执行,它的格式如下:

switch(c){
 case 1:statement;break;
 case 2:statement;break;
 case 3:statement;break;
 case 4:statement;break;
 case 5:statement;break;
 default:statement;
}

我们来看一下下面这段代码,然后判断下会输出什么。

public static void main(String[] args) {
  doSwitch(0);
 }

static void doSwitch(int i) {
 switch (i) {
  case 0: {
   System.out.println(0);
  }
  case 1: {
   System.out.println(1);
  }
  case 2: {
   System.out.println(2);
  }
  case 3: {
   System.out.println(3);
  }
  default:{
   System.out.println("default");
  }
 }
}

运行结果是:

0
1
2
3
default

=================让我们加上break试试================

虽然switch-case中的break是可选的,但是break会较大的影响到运行的效果,所以得牢记有无break的区别。

以上这篇浅谈java switch如果case后面没有break,会出现什么情况?就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • break在scala和java中的区别解析

    这篇文章主要介绍了break在scala和java中的区别解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 scala中的break和java中的break作用是一样的,都是跳出循环,只两者的用法不太一样. 1.scala中break中的用法import scala.util.control.Breaks import scala.util.control.Breaks object breakDemo { //break在scala中的使用

  • java打印从1到100的值(break,return断句)

    首先来讲这个没有什么难点,就是分析下break和return的效果有什么不一样,通过最后的打印结果可以看出: 1.break只是跳出了循环会继续执行函数内.循环外的代码. 2.return是直接函数返回了,循环内和函数内的后面的代码都不会在执行了. 代码: package com.itheima; /** * 8. 先写一个程序,打印从1到100的值.之后修改程序,通过使用break关键词,使得程序在打印到98时退出.然后尝试使用return来达到相同的目的. * @author 2811674

  • java 中break如何跳出外部循环

    学习就是为了不断的看到自己的知识盲点,然后改正,以前知道如何使用break来跳出循环,突然学习到可以用break跳出外部的循环(以前只知道怎么调本次的循环). 上正题代码如下: break跳出本次循环: public static void main(String[] args) { for (int i = 0; i < 10; i++) { for (int j = 0; j <=10; j++) { System.err.println(i+j); if(i+j==10) { break

  • 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);

  • Java中break、continue、return在for循环中的使用

    引言:在使用循环的时候,循环里面带有break.continue.return的时候经常弄混,今天特意整理了下,以待后用... for (int i = 1; i < 5; i++) { System.out.println("i==for=>"+i); while(i%2==0){ System.out.println("i==while==>"+i); break;//终止while循环,继续for后面的代码;(终止当前(while)循环,继续

  • Java continue break制作简单聊天室程序

    Java continue break 制作简单聊天室程序,屏蔽不文明语言,显示每句话聊天时间 package com.swift; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner; public class ChatWithBreakContinue { public static void main(String[] args) { Scanner scan = new Sc

  • 浅谈java switch如果case后面没有break,会出现什么情况?

    switch表达式的取值:byte,short,int,char JDK5以后可以是枚举 JDK7以后可以是String 如下代码, case"A" :之后没有break,此刻会继续执行 case "B":的代码 System.out.println("bbbbbbbb");遇到break之后,代码运行结束. public static void main(String[] args) { String s = "A"; sw

  • 浅谈Java中ABA问题及避免

    本文主要研究的是关于Java中ABA问题及避免的相关内容,具体如下. 在<Java并发实战>一书的第15章中有一个用原子变量实现的并发栈,代码如下: public class Node { public final String item; public Node next; public Node(String item){ this.item = item; } } public class ConcurrentStack { AtomicReference<Node> top

  • 浅谈java多线程编程

    一.多线程的优缺点 多线程的优点: 1)资源利用率更好 2)程序设计在某些情况下更简单 3)程序响应更快 多线程的代价: 1)设计更复杂 虽然有一些多线程应用程序比单线程的应用程序要简单,但其他的一般都更复杂.在多线程访问共享数据的时候,这部分代码需要特别的注意.线程之间的交互往往非常复杂.不正确的线程同步产生的错误非常难以被发现,并且重现以修复. 2)上下文切换的开销 当CPU从执行一个线程切换到执行另外一个线程的时候,它需要先存储当前线程的本地的数据,程序指针等,然后载入另一个线程的本地数据

  • 浅谈java是如何做资源回收补救的

    学习java的过程,我们经常谈论一个对象的回收,尤其是资源类型,如果没有显示的关闭,对象就被回收了,说明出现了资源泄漏.java本身为了防止这种情况,做了一些担保的方式,确保可以让未关闭的资源合理回收掉. finalize回收 finalize方式是java对象被回收时触发的一个方法.java的很多资源对象,都是在finalize中写了担保的方法. /** * Ensures that the <code>close</code> method of this file input

  • 浅谈Java中GuavaCache返回Null的注意事项

    Guava在实际的Java后端项目中应用的场景还是比较多的,比如限流,缓存,容器操作之类的,有挺多实用的工具类,这里记录一下,在使用GuavaCache,返回null的一个问题 I. 常见使用姿势 @Test public void testGuava() { LoadingCache<String, String> cache = CacheBuilder.newBuilder().build(new CacheLoader<String, String>() { @Overri

  • 浅谈Java中Unicode的编码和实现

    Unicode的编码和实现 大概来说,Unicode编码系统可分为编码方式和实现方式两个层次. 编码方式 字符是抽象的最小文本单位.它没有固定的形状(可能是一个字形),而且没有值."A"是一个字符,"€"也是一个字符.字符集是字符的集合.编码字符集是一个字符集,它为每一个字符分配一个唯一数字. Unicode 最初设计是作为一种固定宽度的 16 位字符编码.也就是每个字符占用2个字节.这样理论上一共最多可以表示216(即65536)个字符.上述16位统一码字符构成基

  • 浅谈java常量池

    java常量池技术 java中常量池技术说的通俗点就是java级别的缓存技术,方便快捷的创建一个对象.当需要一个对象时,从池中去获取(如果池中没有,就创建一个并放入池中),当下次需要相同变量的时候,不用重新创建,从而节省空间. java八种基本类型的包装类和对象池 java中的基本类型的包装类.其中Byte.Boolean.Short.Character.Integer.Long实现了常量池技术,(除了Boolean,都只对小于128的值才支持) 比如,Integer对象 Integer i1

  • 浅谈Java工程读取resources中资源文件路径的问题

    正常在Java工程中读取某路径下的文件时,可以采用绝对路径和相对路径,绝对路径没什么好说的,相对路径,即相对于当前类的路径.在本地工程和服务器中读取文件的方式有所不同,以下图配置文件为例. 本地读取资源文件 java类中需要读取properties中的配置文件,可以采用文件(File)方式进行读取: File file = new File("src/main/resources/properties/basecom.properties"); InputStream in = new

  • 浅谈Java多线程处理中Future的妙用(附源码)

    java 中Future是一个未来对象,里面保存这线程处理结果,它像一个提货凭证,拿着它你可以随时去提取结果.在两种情况下,离开Future几乎很难办.一种情况是拆分订单,比如你的应用收到一个批量订单,此时如果要求最快的处理订单,那么需要并发处理,并发的结果如果收集,这个问题如果自己去编程将非常繁琐,此时可以使用CompletionService解决这个问题.CompletionService将Future收集到一个队列里,可以按结果处理完成的先后顺序进队.另外一种情况是,如果你需要并发去查询一

  • 浅谈java中null是什么,以及使用中要注意的事项

    1.null既不是对象也不是一种类型,它仅是一种特殊的值,你可以将其赋予任何引用类型,你也可以将null转化成任何类型,例如: Integer i=null; Float f=null; String s=null; 但是不能把null赋值给基本类型,如int ,float,double等 int k=null ----------编译器会报错cannot convert from null to int 2.null是关键字,像public.static.final.它是大小写敏感的,你不能将

随机推荐