Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么这个Java交换机案例不起作用?_Java_String_Switch Statement_Binary Operators - Fatal编程技术网

为什么这个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;