Java switch case String

Filed Under: Java

Today we will look into Java Switch Case String Example. Being a java programmer, I know the importance of String and how many times it’s used for conditional flow. Whether you have a simple method that behaves differently for different input String or a Servlet controller class to check the incoming action and process it accordingly, we use String and compare it to determine the flow.

Java Switch Case

java switch case, java switch string

Java switch case is a neat way to code for conditional flow, just like if-else conditions. Before Java 7, the only means to achieve string based conditional flow was using if-else conditions. But Java 7 has improved the switch case to support String also.

Java switch case String Example

Here I am providing a java program that shows the use of String in java switch case statements. For comparison, I am also providing another method which does the same conditional flow using if-else conditions.

SwitchStringExample.java


package com.journaldev.util;

public class SwitchStringExample {

	public static void main(String[] args) {
		printColorUsingSwitch("red");
		printColorUsingIf("red");
		// switch case string is case sensitive
		printColorUsingSwitch("RED");
		printColorUsingSwitch(null);
	}

	private static void printColorUsingIf(String color) {
		if (color.equals("blue")) {
			System.out.println("BLUE");
		} else if (color.equals("red")) {
			System.out.println("RED");
		} else {
			System.out.println("INVALID COLOR CODE");
		}
	}

	private static void printColorUsingSwitch(String color) {
		switch (color) {
		case "blue":
			System.out.println("BLUE");
			break;
		case "red":
			System.out.println("RED");
			break;
		default:
			System.out.println("INVALID COLOR CODE");
		}
	}

}

Here is the output of the above program.


RED
RED
INVALID COLOR CODE
Exception in thread "main"
java.lang.NullPointerException
	at com.journaldev.util.SwitchStringExample.printColorUsingSwitch(SwitchStringExample.java:24)
	at com.journaldev.util.SwitchStringExample.main(SwitchStringExample.java:10)

Keys points to know for java switch case String are:

  1. Java switch case String make code more readable by removing the multiple if-else-if chained conditions.
  2. Java switch case String is case sensitive, the output of example confirms it.
  3. Java Switch case uses String.equals() method to compare the passed value with case values, so make sure to add a NULL check to avoid NullPointerException.
  4. According to Java 7 documentation for Strings in Switch, java compiler generates more efficient byte code for String in Switch statement than chained if-else-if statements.
  5. Make sure to use java switch case String only when you know that it will be used with Java 7 else it will throw Exception.

Thats all for Java switch case String example.

Tip: We can use java ternary operator rather than switch to write smaller code.

Comments

  1. Vijay says:

    why switch was not supported in earlier version of java 7 ?

    1. Pankaj says:

      switch case was always there, String support started from Java 7 onwards.

  2. Suresh says:

    Hi Pankaj,

    The case sensitivity will not work, when the switch case label is changed as below (from lowercase red to RED, on supplying printColorUsingSwitch(“red”)

    private static void printColorUsingSwitch(String color) {
    switch (color) {
    case “blue”:
    System.out.println(“BLUE”);
    break;
    case “RED”:
    System.out.println(“RED”);
    break;
    default:
    System.out.println(“INVALID COLOR CODE”);
    }
    }

  3. alok says:

    can anyone explain following?

    “java compiler generates more efficient byte code for String in Switch statement than chained if-else-if statements.”

    1. Manisha says:

      Hello,

      “java compiler generates more efficient byte code for String in Switch statement than chained if-else-if statements…
      I tried for bytecode for switch case as well as if-else case but o/p is same for both byte code….

      package pro;

      import java.util.Arrays;

      public class SwitchString {
      static void usingswitchcase(String colour){
      byte[] bytesArr = colour.getBytes();
      switch (colour){
      case “blue”:
      System.out.println(“BLUE–“+Arrays.toString(bytesArr));
      //System.out.println(“BLUE”);
      break;
      case “red”:
      System.out.println(“RED–“+Arrays.toString(bytesArr));
      //System.out.println(“RED”);
      break;
      default:
      System.out.println(“Invalid Colour–“+Arrays.toString(bytesArr));
      //System.out.println(“Invalid Colour”);
      }
      }

      static void usingifcase(String color){
      byte[] bytesArr1 = color.getBytes();
      if(color.equals(“red”)){
      System.out.println(“RED–>”+Arrays.toString(bytesArr1));
      // System.out.println(“Green”);
      } if(color.equals(“blue”)){
      System.out.println(“BLUE–>”+Arrays.toString(bytesArr1));
      // System.out.println(“Green”);
      }
      else{
      System.out.println(“Invalid Color–>”+Arrays.toString(bytesArr1));
      //System.out.println(“Invalid Color”);
      }
      }
      public static void main(String[] args) {
      usingswitchcase(“blue”);
      usingswitchcase(“green”);
      usingifcase(“blue”);
      usingifcase(“pink”);
      }

      }

      O/p————–
      BLUE–[98, 108, 117, 101]
      Invalid Colour–[103, 114, 101, 101, 110]
      BLUE–>[98, 108, 117, 101]
      Invalid Color–>[112, 105, 110, 107]

  4. aparna says:

    very nice

Leave a Reply

Your email address will not be published. Required fields are marked *

close
Generic selectors
Exact matches only
Search in title
Search in content
Search in posts
Search in pages