2015-07-13 4 views
0

Пример 1:Java: Что происходит в памяти?

System.out.print("Enter an integer: "); 
int x = input.nextInt(); 
if(x < value) { } 

Пример 2:

System.out.print("Enter an integer: "); 
if(input.nextInt() < value) { } 

У меня есть два вопроса:

  1. Какой из них лучше использовать, если вы только нужно значение в том, что конкретное условие? Или оба синтаксиса одинаковы с точки зрения памяти?

  2. Что происходит с введенным значением во втором примере с точки зрения памяти?

Пожалуйста, я хочу получить ответы в деталях.

+1

Для вашего последнего замечания: попробуйте запустить код, и вы знаете, если у вас будет синтаксическая ошибка. – moffeltje

+0

@moffeltje Хотите, я имел в виду, что он не мог ответить на мой вопрос. Я знаю, что он работает отлично. –

+0

Ну, на самом деле у вас есть только доступ к входу в примере 1, в примере 2 вход никогда не сохраняется, вы знаете только, что он меньше, чем 'значение'. – Ian2thedv

ответ

5
  1. Примеры одинаковы с точки зрения памяти, поскольку в обоих случаях целочисленное значение помещается в стек. Тем не менее, первый подход несколько более удобен для отладки, потому что вы можете легко наблюдать за значением и изменять его.

  2. Посмотреть пред. Он выделяется в стеке.

Кроме того, локальные переменные рекомендуется начинать с нижнего регистра, например: value.

+0

Что такое стек? –

+1

В этом контексте стек - это область памяти программ, которая содержит последовательность методов, вызывающих детали и локальные переменные. Это основная концепция программирования, и для хорошего понимания я предлагаю прочитать какую-то книгу для начинающих Java, таких как «Мышление на Java» Брюса Эккеля. –

+0

Большое спасибо –

Смежные вопросы