2014-02-20 2 views
0

У меня есть некоторые проблемы понимания, какие типы после каждогоКаков результат этих преобразований типов и почему?

System.out.println(); 

строки в этом Java коде. Прямо сейчас я получаю ошибки в строке 4, а остальная часть кода не запускается, может определить, в чем проблема? Может кто-нибудь объяснить мне, какой тип результата и почему? Я предполагаю, что вы даже не придется запускать код, он просто запрашивает некоторые базовые знания Java, что у меня нет :( Из того, что я понимаю

  System.out.println ((1<<1) << 2); 

обеспечивает 8 ... но опять же, почему?

public static void main(String[] args) { 
    String[] s= {"a", "2.0", "3", "eip"}; 
    System.out.println (s[7/3]); 
    System.out.println (Integer.parseInt(s[1])*3.0f); 
    System.out.println ((1<<1) << 2); 
    System.out.println (s[s.length-1].equals("EIP")); 
    System.out.println (Double.parseDouble(s[2]+1) == Integer.parseInt(s[1])); 
    System.out.println (1==0|| ! (false & !true)); 
    }} 
+0

Слишком много вопросов в одном потоке. Спросите по одному. –

ответ

0

s[1] ==> 2,0

2.0 десятичное/двойной, следовательно, не могут быть преобразованы в int с помощью Integer.parseInt(s[1]).

Вам нужно Double.parseDouble(s[1]).

(1<<1) << 2 использование перевод ведущий. Исследование здесь об этом Bitwise and Bit Shift Operators

0

Для

System.out.println ((1<<1) << 2); 

Попробуйте link для левого сдвига объяснения.

Вместо этого:

System.out.println (s[s.length-1].equals("EIP")); 

попробовать:

System.out.println (s[s.length-1].equalsIgnoreCase("EIP")); 
Смежные вопросы