2013-10-03 4 views
0

Я следующий код:Использование оператора = + в Java?

public class Operators { 
    public static void main(String[] args) { 
     int i =+ 2; 
     System.out.println(i); 
    } 
} 

После выполнения я получаю следующий результат:

Так что же =+ оператор фактически делает здесь?

EDIT:

Как некоторые ответили, что это назначение +2 к i, рассмотрим следующий код:

public class Operators { 
    public static void main(String[] args) { 
     int i =- -2; 
     System.out.println(i); 
    } 
} 

Таким образом, в описанном выше случае, выход должен быть -2. Но я получаю 2

Так что я полагаю, это -(-2), который дает 2. Право?

+0

'' = + представляет два оператора '=' и префикс '' + одна. –

+4

Возможно, это было бы лучше, если бы оно было написано как «i = + 2», что совпадает с «i = 2». Но если я сказал «i = -2», я думаю, что это будет иметь больший смысл ... – MadProgrammer

+1

Знаете ли вы, что Javascript? прочитайте [Что означает = + _ в JavaScript] (http://stackoverflow.com/questions/15129137/what-does-mean-in-javascript) '= +' интересен в JavaScript. –

ответ

7
int i =+ 2; 

Это положительное 2 (+2) присвоение переменной i. Это более miningful или понятно, если Вы пишете как - int i = +2;

Еще один пример -

int i = 2; 
i=+3; 
System.out.println(i); 

Он печатает 3.

+ Одинарный оператор плюс; указывает положительное значение (цифры положительны без этого, однако)

Еще пример - http://docs.oracle.com/javase/tutorial/displayCode.html?code=http://docs.oracle.com/javase/tutorial/java/nutsandbolts/examples/UnaryDemo.java

+0

Спасибо за редактирование Суреш :) –

+0

Смотрите мои правки ... :) –

+0

Да, вы правы Gokul –

2

Вы устанавливаете i равным +2, что и есть то, что вы получили. Какую продукцию вы ожидаете?

+1

Почему я быть подал заявку на правильный ответ? Мне действительно нужно объяснить, что +2 означает положительный 2? –

+0

Ответу нужно гораздо больше деталей, чтобы правильно было, ну, ответ. – Zyerah

2

Сказав:

int i =+ 2; 

+ действует как unary operator.

Чтобы уточнить, он устанавливает i в положительное значение 2.

EDIT: Ваше обновление говорит:

int i =- -2; 

производит 2. Почему?

В этом случае это означает, что i=-(-(2)). Обратите внимание, что использование унарного оператора-минуса может привести к неожиданным результатам , когда это значение, скажем, Integer.MIN_VALUE.

+0

См. Мое редактирование ... :) –

+0

@Gokul Обновлено сообщение. – devnull

2

Я считаю, что вы имеете в виду = + действительно + =.

Ваш код присваивает целому числу значение +2 (положительное 2).

Например:

int x =+ 4; 
x =+ 8; 
Console.WriteLine(x.ToString()); 
Console.ReadLine(); 

Напечатает "8", а не 12. Это происходит потому, что вы назначаете х до +4, а затем +8.

Если вы спрашиваете о том, что делает + =, это сокращенное выражение, которое принимает начальную переменную и добавляет к ней.

x += 8 

такая же, как

x = x + 8 

Изменив предыдущий пример формы = + к + = дают нам:

int x = 4; 
x += 8; 
Console.WriteLine(x.ToString()); 
Console.ReadLine(); 

Напечатает "12".

+0

Почему голос?Ответы на исходный вопрос, а также объяснение того, что выглядит опечаткой. – user2841290

0

Обратите внимание на следующее изображение для унарных операторов.

enter image description here

Вот exmaple, чтобы понять это.

public class UnaryDemo { 
    public static void main(String[] args) { 
     int x = 10; 
     int y = 20; 

     int result = +x; 

     System.out.println("+x = " + result); 

     result = -y; 

     System.out.println("-y = " + result); 
     } 
    } 

и выход

+x = 10 
-y = -20 

Так думаю, что оператор, как variable = +value, а не variable =+ values. да Это пространство делает его более читаемым.

0

Как и все остальные, я хочу дать ссылку на JLS.
Ответ Править

int i =- -2; 

Как указано в jls

  • одноместной числовом продвижение (§5.6.1) выполняется на операнд.
  • Тип унарного выражения минус - это продвинутый тип операнда.
  • Во время выполнения значение унарного минусового выражения является арифметическим отрицанием продвинутого значения операнда.

Так,

System.out.println(i); //prints 2 

Для целочисленных значений, отрицание такого же, как вычитание от нуля.


Примечание

Для значений с плавающей точкой, отрицание не то же самое, как вычитание из нуля, потому что, если х равен 0,0, то 0,0-х 0,0, но это -x - 0.0.

Унарный минус просто инвертирует знак числа с плавающей запятой. Особые случаи:

  • Если операнд NaN, результатом является NaN. (Напомним, что NaN не имеет знака (§4.2.3).)

  • Если операнд бесконечен, результатом является бесконечность противоположного знака.

  • Если операнд равен нулю, результатом будет ноль противоположного знака.

Полезные ссылки

  1. unary operators
  2. Unary Numeric Promotion
Смежные вопросы