TestRange.java


public class TestRange {

   static int sum(int vals[]){
      int total;
      int total1 = 0;
      
      // same name as method is ok
      // multi declaration/initialization is ok
      for (int i=0, sum=0, n=0; i < vals.length; i++){  
         sum   += vals[i];
         n      = sum;
         total  = sum;
         total1 = sum;
      }
      
      // undefined variable n
      // return n;
      
      // refer to method sum in class TestRange as if 
      // it were a variable
      // return sum;   
      
      // variable total may not have been initialized 
      // return total;   
      
      return total1;
   }
   
   public static void m(byte b) {
      switch (b){
         // case label 140 too large for 'switch' on byte
         // case 140:
         //   System.out.println(140);
         case -128:
            System.out.println("-128 and " + b);
            break;
         case 127:
            System.out.println("-128 and " + b);
            break;
         default:
            System.out.println(b);
            break;
         
      }      
   }
   
   public static void main (String[] args){
      byte n = 3;
      m(n);    // 3
      
      // incompatible type for (...), explicitly 
      // cast needed to convert int to byte
      // byte nn = 130;  //(declaration)
      // m(3);           //(method) Suprise?!
      
      // How to get the value of (byte)456 
      // convert 111001000 => truncate 11001000 (negative number!)
      // => minus one 11000111 then get one's complement 00111000 
      // => convert 56 => The answer is -56!
      m((byte)456);// -56
      
      // convert 101001000 => truncate 01001000 (positive number)
      // => 72
      m((byte)328);// 72   
      
      int[]     nn3   = {1, 3, 5};   
      int[]     mm3   = {1, 3, 5};   
      int[]     nn4   = {1, 3, 5, 7};   
      double[]  dd2   = {0.3, 4.9};
      float[]   ff2   = {0.3f, 4.9f};
      byte[]    bb2   = {2, 4};
      boolean[] zz2   = {true, false};
      short[]   ss2   = {12, 13};
      long[]    ll2   = {12, 13};
      
      char[]    cc2   = {'1', 'a'};
      
       System.out.println(sum(nn3)); // 9
       
       // something interesting
       // Java gives every primitive array a name
       System.out.println(nn3);      // [I@1ee878
       System.out.println(mm3);      // [I@1ee877
       System.out.println(nn4);      // [I@1ee8a0
       System.out.println(dd2);      // [D@1ee875
       System.out.println(ff2);      // [F@1ee8ca
       System.out.println(bb2);      // [B@1ee8c9
       System.out.println(zz2);      // [Z@1ee8c8
       System.out.println(ss2);      // [S@1ee8c7
       System.out.println(ll2);      // [J@1ee8c6

       //print char array actually prints its contents
       System.out.println(cc2);      // 1a

       // just for curiosity
       System.out.println(cc2.getClass()); // Class [C
       
       
       // How about array of objects
       System.out.println(TestRange[].class);        // Class [LTestRange;
       System.out.println(java.lang.String[].class); // Class [Ljava.lang.String;
   }
}


last updated: 04-11-2002
[ Java certification page] [ SCJP FAQ] [ JavaChina]