desolator 267 Опубликовано 27 декабря, 2013 (изменено) Получил задание для идиотов, переписал и не понимаю как это работает, а понять что написал я все таки хочу. Собственно вот код 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. Ок. Почти понятно. Поправьте пожалуйста где я не прав, и прожуйте мне почему именно так, а не иначе. Как это работает?! Как оно что то пишет в память, как оно понимает что необходимо менять, а что нет. Как эти значения понимает железо, в каком виде? Как железо всё это дело читает, обрабатывает? Изменено 27 декабря, 2013 пользователем desolator Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Fire 15 Опубликовано 27 декабря, 2013 (изменено) Переменную можно в лоб задавать без int $m = 5; $n = 6; Если не ошибаюсь: private static void swap(int a, int { int c = $a; a = $b; b = $c; } } Изменено 27 декабря, 2013 пользователем Fire Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Naik 419 Опубликовано 28 декабря, 2013 Получил задание для идиотов, переписал и не понимаю как это работает, а понять что написал я все таки хочу. Собственно вот код 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; } } Воу-воу-воу, полехше, это же ява. 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
desolator 267 Опубликовано 28 декабря, 2013 В принципе ты всё написал, только с выводом на экран какие неясности? "M=" + m + " N=" + n , это вывод на экран Mm + Nn? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Yokus 19 Опубликовано 28 декабря, 2013 (изменено) "M=" + m + " N=" + n , это вывод на экран Mm + Nn? выводит на экран "M=%значение_m% N=%значение_n%". + - оператор конкатенации строк Как это работает?! Как оно что то пишет в память, как оно понимает что необходимо менять, а что нет. Как эти значения понимает железо, в каком виде? Как железо всё это дело читает, обрабатывает? Записывает в память 2 переменные, типа int по 4 байта каждый, обращается ЕМНИП к функции куда копируются эти значения (чтобы туда попадали ссылки на эти переменные нужно использовать классы-обёртки или массивы), дальше просто в переменную c (цэ) заносится временное значение, чтобы его не потерять, после того как функция отработала всё данные стираются. Т.к. функция принимает копии значений, то в конечном счёте она ничего не меняет. На счёт железа: всё не так просто, да я и сам этого не понимаю. Думаю стоит начинать с дискретной математики, прикладной теории цифровых автоматов и компьютерной схемотехники Изменено 28 декабря, 2013 пользователем Yokus 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
desolator 267 Опубликовано 28 декабря, 2013 (изменено) выводит на экран "M=%значение_m% N=%значение_n%". + - оператор конкатенации строк Записывает в память 2 переменные, типа int по 4 байта каждый, обращается ЕМНИП к функции куда копируются эти значения (чтобы туда попадали ссылки на эти переменные нужно использовать классы-обёртки или массивы), дальше просто в переменную c (цэ) заносится временное значение, чтобы его не потерять, после того как функция отработала всё данные стираются. Т.к. функция принимает копии значений, то в конечном счёте она ничего не меняет. На счёт железа: всё не так просто, да я и сам этого не понимаю. Думаю стоит начинать с дискретной математики, прикладной теории цифровых автоматов и компьютерной схемотехники Спасибо за ответ Да, математика, а я еще со школы не хотел учить ;( Изменено 28 декабря, 2013 пользователем desolator Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Yokus 19 Опубликовано 28 декабря, 2013 Спасибо за ответ Да, математика, а я еще со школы не хотел учить ;( от математики там только название))) Дискретная математика очень лёгкий предмет и обычно даётся без проблем, главное иметь элементарную логику Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
desolator 267 Опубликовано 28 декабря, 2013 (изменено) от математики там только название))) Дискретная математика очень лёгкий предмет и обычно даётся без проблем, главное иметь элементарную логику Да ничего сложного, начал с запроса в гугле Дискретная математика, сейчас 30 вкладок вики Изменено 28 декабря, 2013 пользователем desolator Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Yokus 19 Опубликовано 28 декабря, 2013 Да ничего сложного, начал с запроса в гугле Дискретная математика, сейчас 30 вкладок вики В университете, где обычно материала чуть меньше чем необходимо, в отличии от интернета, это действительно была одна из простейших дисциплин Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Fire 15 Опубликовано 29 декабря, 2013 а int это не задание переменныъ (что то с init спутал)... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты