你怎么在这里只使用一次等于?

How do you use equals only once in this?

if (someString.equals('a') || someString.equals('b') ||    someString.equals('c') || someString.equals('d'))

如何缩短此语法而不重复等号?

正则表达式(请注意它比原来的方法慢很多):

if (someString.matches("[abcd]")

流:

if (Arrays.stream(new String[] { "a", "b", "c", "d"}).anyMatch(input::equals))

如果目标只是清晰和简洁,您始终可以查看字符的 ASCII 值。

char c = someString.charAt(0);
if (c >= 'a' && c <= 'd'){
    // do whatever 
}

要理解这一点,你必须明白字符串是由存储在数组中的一系列字符组成的。 (当然,它变得更加复杂,但这是一个很好的起点。)

这些字符中的每一个最终都被编码为一个数字。计算机基本上有一个预建的查找 table,其中某些数字引用某些字符。在那个字符 table 中, 'a''b''c' 等的数字彼此相邻,并且每次都增加一个。

了解当您使用 'a' 时您引用的是字符也很重要。相反,当您使用 "a" 时,您引用的是一个字符串。字符串不能与 ><== 进行比较,但字符可以。因此,通过提取字符串的第一个字符,您允许自己检查数值范围

在您的回答中,您似乎在尝试比较字符串。在这种情况下,我会使用这样的数组语法:

 final String[] arr = {"a", "b", "c", "d"};
 if(Arrays.asList(arr).contains("a")){
        // Do Stuff
 }

如果您只想比较单个字符,@AdamSiemion 使用 Regex 的答案是正确的。