Some micro-optimizations I tested. These were all ran on the same hardware, your timings may differ but the result should always be the same.
final String s = "This is some string because I'm crazy and need to micro-optimise ok? STOP JUDGING ME!";
TestTimer.testSnippet(1_000_000,
() -> { boolean found = s.indexOf('-') != -1; },
() -> { boolean found = s.contains("-"); }