Перейти к содержанию
Авторизация  
desolator

Переменные Ссылки

Рекомендуемые сообщения

Получил задание для идиотов, переписал и не понимаю как это работает, а понять что написал я все таки хочу.

Собственно вот код

public class References
{
public static void main(String[] args)
{
int m = 5;
int n = 6;
System.out.println("M=" + m + " N=" + n);
swap(m, n);
System.out.println("M=" + m + " N=" + n);
}

private static void swap(int a, int 
{
int c = a;
a = b;
b = c;
}
}

И так, что же я все таки смог понять.

  • public class References - публичный класс(можно обращаться из любого места программы) References.
  • public static void main(String[] args) - метод main, массив String[], args - название массива String[]

  • Int m = 5; - объявляем переменную m и даем ей значение 5 (int - только целое число)
  • int n = 6; - опять же объявляем переменную только уже n и даем значение 6.
  • System.out.println("M=" + m + " N=" + n); - наверное выводим на экран, Mm+Nn (тут уже неясность)
  • swap(m, n); - меняем местами m, n
  • System.out.println("M=" + m + " N=" + n); - выводим на экран, опять таки неясность.
  • private static void swap(int a, int b ) - метод "поменять местами" переменные int a и int b
  • int c = a; - переменная "с" будет иметь значение "a"
  • a = b - переменная а будет равна b
  • b = c - переменная b будет равна c.

Ок. Почти понятно.

 

Поправьте пожалуйста где я не прав, и прожуйте мне почему именно так, а не иначе.

Как это работает?! Как оно что то пишет в память, как оно понимает что необходимо менять, а что нет. Как эти значения понимает железо, в каком виде? Как железо всё это дело читает, обрабатывает?

Изменено пользователем desolator

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Переменную можно в лоб задавать без int

 $m = 5;
$n = 6;

Если не ошибаюсь:

private static void swap(int a, int 
{
int c = $a;
a = $b;
b = $c;
}
}

Изменено пользователем Fire

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Получил задание для идиотов, переписал и не понимаю как это работает, а понять что написал я все таки хочу.

Собственно вот код

public class References
{
public static void main(String[] args)
{
int m = 5;
int n = 6;
System.out.println("M=" + m + " N=" + n);
swap(m, n);
System.out.println("M=" + m + " N=" + n);
}

private static void swap(int a, int 
{
int c = a;
a = b;
b = c;
}
}

И так, что же я все таки смог понять.

  • public class References - публичный класс(можно обращаться из любого места программы) References.
  • public static void main(String[] args) - метод main, массив String[], args - название массива String[]

  • Int m = 5; - объявляем переменную m и даем ей значение 5 (int - только целое число)
  • int n = 6; - опять же объявляем переменную только уже n и даем значение 6.
  • System.out.println("M=" + m + " N=" + n); - наверное выводим на экран, Mm+Nn (тут уже неясность)
  • swap(m, n); - меняем местами m, n
  • System.out.println("M=" + m + " N=" + n); - выводим на экран, опять таки неясность.
  • private static void swap(int a, int b ) - метод "поменять местами" переменные int a и int b
  • int c = a; - переменная "с" будет иметь значение "a"
  • a = b - переменная а будет равна b
  • b = c - переменная b будет равна c.

Ок. Почти понятно.

 

Поправьте пожалуйста где я не прав, и прожуйте мне почему именно так, а не иначе.

Как это работает?! Как оно что то пишет в память, как оно понимает что необходимо менять, а что нет. Как эти значения понимает железо, в каком виде? Как железо всё это дело читает, обрабатывает?

 

В принципе ты всё написал, только с выводом на экран какие неясности?

 

Переменную можно в лоб задавать без int

 $m = 5;
$n = 6;

Если не ошибаюсь:

private static void swap(int a, int 
{
int c = $a;
a = $b;
b = $c;
}
}

 

Воу-воу-воу, полехше, это же ява.

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В принципе ты всё написал, только с выводом на экран какие неясности?

"M=" + m + " N=" + n , это вывод на экран Mm + Nn?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

"M=" + m + " N=" + n , это вывод на экран Mm + Nn?

выводит на экран "M=%значение_m% N=%значение_n%". + - оператор конкатенации строк

 

Как это работает?! Как оно что то пишет в память, как оно понимает что необходимо менять, а что нет. Как эти значения понимает железо, в каком виде? Как железо всё это дело читает, обрабатывает?

Записывает в память 2 переменные, типа int по 4 байта каждый, обращается ЕМНИП к функции куда копируются эти значения (чтобы туда попадали ссылки на эти переменные нужно использовать классы-обёртки или массивы), дальше просто в переменную c (цэ) заносится временное значение, чтобы его не потерять, после того как функция отработала всё данные стираются. Т.к. функция принимает копии значений, то в конечном счёте она ничего не меняет.

 

На счёт железа: всё не так просто, да я и сам этого не понимаю. Думаю стоит начинать с дискретной математики, прикладной теории цифровых автоматов и компьютерной схемотехники

Изменено пользователем Yokus
  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

выводит на экран "M=%значение_m% N=%значение_n%". + - оператор конкатенации строк

 

 

Записывает в память 2 переменные, типа int по 4 байта каждый, обращается ЕМНИП к функции куда копируются эти значения (чтобы туда попадали ссылки на эти переменные нужно использовать классы-обёртки или массивы), дальше просто в переменную c (цэ) заносится временное значение, чтобы его не потерять, после того как функция отработала всё данные стираются. Т.к. функция принимает копии значений, то в конечном счёте она ничего не меняет.

 

На счёт железа: всё не так просто, да я и сам этого не понимаю. Думаю стоит начинать с дискретной математики, прикладной теории цифровых автоматов и компьютерной схемотехники

Спасибо за ответ :) Да, математика, а я еще со школы не хотел учить ;(

Изменено пользователем desolator

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо за ответ :) Да, математика, а я еще со школы не хотел учить ;(

от математики там только название))) Дискретная математика очень лёгкий предмет и обычно даётся без проблем, главное иметь элементарную логику

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

от математики там только название))) Дискретная математика очень лёгкий предмет и обычно даётся без проблем, главное иметь элементарную логику

Да ничего сложного, начал с запроса в гугле Дискретная математика, сейчас 30 вкладок вики :D

Изменено пользователем desolator

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да ничего сложного, начал с запроса в гугле Дискретная математика, сейчас 30 вкладок вики :D

В университете, где обычно материала чуть меньше чем необходимо, в отличии от интернета, это действительно была одна из простейших дисциплин

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а int это не задание переменныъ (что то с init спутал)...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...