为什么这个Java交换机案例不起作用?
因此,条件中的所有变量都是静态字符串<代码>类型本身实际上是一个字符串为什么这个Java交换机案例不起作用?,java,string,switch-statement,binary-operators,Java,String,Switch Statement,Binary Operators,因此,条件中的所有变量都是静态字符串类型本身实际上是一个字符串 switch(type) { case (INT || TINYINT): preparedStatement = setInteger(preparedStatement, value, index); break; case (BIGINT || LONG):
switch(type) {
case (INT || TINYINT):
preparedStatement = setInteger(preparedStatement, value, index);
break;
case (BIGINT || LONG):
preparedStatement = setLong(preparedStatement, value, index);
break;
case (DATETIME || TIMESTAMP):
preparedStatement = setTimestamp(preparedStatement, value, index);
break;
case (MEDIUMTEXT || ENUM || TEXT || LONGTEXT || VARCHAR):
preparedStatement = setString(preparedStatement, value, index);
break;
}
java 7上和之后都支持它,您不能在switch语句中使用逻辑运算符,即使是字符串。一次只能测试一个案例。假设您使用的是Java SE 7(或更高版本),并且常量是
静态最终字符串
s,则语法不是Java
case INT: case TINYINT:
Java 7:
此外,我从未在
开关
中看到过这样的或
语句。我强烈建议不要这样做。首先,Java 7+支持字符串上的switch
语句,但Java 6及更早版本不支持
接下来,|
运算符(逻辑OR运算符)只对布尔值
起作用,而不对字符串
值起作用。但是,您可以通过列出案例并在通过相关代码之前不中断,从而在多个案例上运行相同的代码:
switch(type) {
case INT:
case TINYINT:
// This code will run for INT and TINYINT only.
preparedStatement = setInteger(preparedStatement, value, index);
break;
case BIGINT:
case LONG:
// This code will run for BIGINT and LONG only.
preparedStatement = setLong(preparedStatement, value, index);
break;
// etc.
这个表达式的计算结果是什么
INT || TINYINT
INT
和TINYINT
我只见过将switch
与一些原语(在Java7中是新的字符串)文本或变量一起使用,这些原语或变量声明为final
如果这不是抛出编译错误,则必须为任何数据类型定义|
运算符。但除非在编译时以某种方式解决了这个问题,否则这个操作符是不允许的。(同样,这可能是我不知道的Java7中的新功能。)
如果您尝试执行“或”逻辑,那么规范模式(至少在Java的7之前版本中)是:
在Java SE 7及更高版本中,您可以在switch语句的表达式中使用String对象。请注意,在问题中包含实际编译器错误(以及新功能的版本)是有帮助的。二进制运算符“| |”的操作数类型错误“这不起作用”,因为“这是错误的”。“首先,您只能在Java 7中切换字符串”这不可能是真的。不再允许打开int和enum?@SteveKuo不,只允许在Java 7+中打开字符串。我不是说Java7中不再允许其他数据类型(int、enum)。
INT || TINYINT
switch(type) {
case INT:
case TINYINT:
preparedStatement = setInteger(preparedStatement, value, index);
break;
case BIGINT:
case LONG:
preparedStatement =
break;