hashCode switch, "" .
, ( , )
:
String op = "+";
switch( op.hashCode() ){
case ADD: r = a + b;break;
case SUB: r = a - b;break;
case TMS: r = a * b;break;
case DIV: r = a / b;break;
case MOD: r = a % b;break;
case SLF: r = a << b;break;
case SRG: r = a >> b;break;
case AND: r = a & b;break;
case OR: r = a | b;break;
case XOR: r = a ^ b;break;
default: out.print("Eerr!!!"); break;
}
AND :
private static final int ADD = 0x2b;
:
import static java.lang.System.out;
class Evaluator {
private static final int ADD = 0x2b;
private static final int SUB = 0x2d;
private static final int TMS = 0x2a;
private static final int DIV = 0x2f;
private static final int MOD = 0x25;
private static final int SLF = 0x780;
private static final int SRG = 0x7c0;
private static final int AND = 0x26;
private static final int OR = 0x7c;
private static final int XOR = 0x5e;
private int r;
private int a;
private String op;
private int b;
private Evaluator( int a, String op, int b ) {
this.a = a; this.op = op; this.b = b;
}
private Evaluator eval() {
switch( op.hashCode() ){
case ADD: r = a + b;break;
case SUB: r = a - b;break;
case TMS: r = a * b;break;
case DIV: r = a / b;break;
case MOD: r = a % b;break;
case SLF: r = a << b;break;
case SRG: r = a >> b;break;
case AND: r = a & b;break;
case OR: r = a | b;break;
case XOR: r = a ^ b;break;
default: out.print("Eerr!!!"); break;
}
return this;
}
public static int evaluate( int a, String op , int b ) {
return new Evaluator(a, op, b).eval().r;
}
public static void main( String [] args ) {
out.printf( " 1 + 2 = %d%n", evaluate( 1 ,"+" , 2 ));
out.printf( " 1 - 2 = %d%n", evaluate( 1 ,"-" , 2 ));
out.printf( " 1 * 2 = %d%n", evaluate( 1 ,"*" , 2 ));
out.printf( " 1 / 2 = %d%n", evaluate( 1 ,"/" , 2 ));
out.printf( " 1 %% 2 = %d%n", evaluate( 1 ,"%" , 2 ));
out.printf( " 1 << 2 = %d%n", evaluate( 1 ,"<<" , 2 ));
out.printf( " 1 >> 2 = %d%n", evaluate( 1 ,">>" , 2 ));
out.printf( " 1 & 2 = %d%n", evaluate( 1 ,"&" , 2 ));
out.printf( " 1 | 2 = %d%n", evaluate( 1 ,"|" , 2 ));
out.printf( " 1 ^ 2 = %d%n", evaluate( 1 ,"^" , 2 ));
}
}
. ( , )
, , , , , .
p.s.
- :
System.out.println( "+".hashCode() );
:
public class HexHashCode {
public static void main( String [] args ) {
for( String s: args ) {
System.out.printf("private final int %s = 0x%x; // %s\n",s,s.hashCode(), s );
}
}
}
java HexHashCode + - "*" / "<<" ">>" "%" "<" ">" "==" "!=" "&" "|" "^"