Search code examples
javaapache-commons

How to display whether two String objects changed or not?


I want to display whether two String objects changed or not. How do you think following code? I guss it is not so bad. But I wonder if another approach might be more sophisticated.

EXPECTED RESULT
--------------------------
1:changed
2:changed
3:changed
--------------------------

package com.javastudy;

public class StringCompareBeforeToAfter {

 private static boolean isChanged(String before, String after) {
  if(before != null && after == null || before == null && after != null){
   return true;
  }
  if(before != null && !before.equals(after)){
   return true;
  }
  return false;
 }

 public static void main(String[] args) {

  String before1 = null;
  String after1 = "a";

  if(isChanged(before1, after1)){
   System.out.println("1:changed");
  }

  String before2 = "a";
  String after2 = null;

  if(isChanged(before2, after2)){
   System.out.println("2:changed");
  }

  String before3 = "a";
  String after3 = "b";

  if(isChanged(before3, after3)){
   System.out.println("3:changed");
  }

  String before4 = null;
  String after4 = null;

  if(isChanged(before4, after4)){
   System.out.println("4:changed");
  }

  String before5 = "a";
  String after5 = "a";

  if(isChanged(before5, after5)){
   System.out.println("5:changed");
  }
 }

}

Solution

  • This seems a mite simpler

    private static boolean isChanged(String before, String after) {
        if (before == null) {
            return after == null;
        } else {
            return before.equals(after);
        }
    }
    

    You can also change signature to objects and use method in general case.