ответы на ревью. Integer pool. Особенность Integer pool'а в том, что он хранит только числа 128 до 127Для остальных чисел из Integer'а пул не работаетBigInteger в Java
Скачать 0.94 Mb.
|
Пример 1. Дано n . Написать фрагмент программного кода, который вычисляет следующую сумму S = 2 + 4 + … + 2·n . Существует много способов решения данной задачи. В данном случае задача решается с использованием оператора continue . int s=0; int n; n = 10; for ( int i=1; i<=2*n; i++) { if (i%2==1) continue ; // нечетные значения i пропустить s = s+i; // суммировать только парные значения i } В строке if (i%2==1) continue ; проверяется значение i . Если i нечетно ( i%2==1 ), то происходит переход на следующую итерацию с помощью оператора continue . Таким образом, суммируются только парные значения i . Пример 2. В заданном массиве чисел все положительные элементы умножить на 2. Для решения используется оператор continue . // использование оператора continue double [] A = { 3.8, -2.5, 4.6, -1.8, -2.2, 5.6, 1.5 }; // в массиве A все положительные элементы умножить на 2 for ( int i=0; i length ; i++) { // если элемент массива отрицательный, то переход к следующей итерации if (A[i]<0) continue ; // иначе, умножить этот элемент на 2 A[i] = A[i] * 2; } ⇑ 10. Примеры решения задач, в которых используется оператор continue с меткой Пример 1. Демонстрируется использование оператора continue с меткой, которая размещена во вложенном цикле (внутреннем цикле). Метка имеет имя loop . В примере находится сумма элементов, которые размещены на главной диагонали матрицы A размера 5×5. // суммировать элементы матрицы, которые размещены на главной диагонали // в этих элементах позиция в строке i равна позиции в столбце j int n = 5; // размерность матрицы double A[][] = { { 3.2, 4.1, 2.8, 3.4, 3.4 }, { 1.3, 4.3, 5.5, 0.4, 1.4 }, { 3.4, 4.7, 2.1, 3.4, 3.4 }, { 6.2, 4.1, 2.6, 2.4, 2.4 }, { 0.7, 7.1, 3.8, 1.4, 4.4 } }; double summ = 0; // во внутреннем цикле объявляется метка с именем loop for ( int i=0; i loop: for ( int j=0; j // если не главная диагональ, то переход на следующую итерацию if (i!=j) continue loop; summ += A[i][j]; } Пример 2. Демонстрируется использование оператора continue с меткой, которая размещена на внешнем (верхнем) цикле. В программе определяется количество строк массива A , в которых есть отрицательные элементы. // суммировать элементы матрицы, которые размещены на главной диагонали // в этих элементах позиция в строке i равна позиции в столбце j int n = 0; // количество строк, в которых есть отрицательные элементы double A[][] = { { 3.2, -4.1, 2.8, 3.4, 3.4, 3.6, 4.8 }, { 1.3, 4.3, 5.5, 0.4, 1.4, 2.0, 1.0 }, { 3.4, -4.7, 2.1, -3.4, 3.4, 3.0, 5.5 }, { 6.2, 4.1, 2.6, 2.4, 2.4, 1.8, 1.9 }, { -0.7, 7.1, 3.8, 1.4, 4.4, 2.3, 4.0 } }; // объявляется метка с именем nextRow nextRow: for ( int i=0; i length ; i++) for ( int j=0; j length ; j++) { // если найден отрицательный элемент, то переход на следующую строку массива if (A[i][j]<0) { n++; // увеличить счетчик continue nextRow; } } System. out .println( "n = " + n); // n = 3 Перебор всех элементов массива осуществляется с помощью двух вложенных циклов. Номер строки соответствует переменной i , номер столбца соответствует переменной j . Если в i -й строке массива найден хотя бы один отрицательный элемент, то дальнейший перебор элементов этой строки не имеет смысла. Нужно переходить на следующую строку. Именно поэтому, здесь вызывается оператор continue с меткой, которая размещается на верхнем (внешнем цикле). Метка имеет название nextRow . ⇑ 11. Какие преимущества дает использование операторов break и continue в программах Использование break и continue дает следующие преимущества: ● в случае выполнения циклического процесса нет необходимости выполнять лишние итерации, если найдено искомое значение или достигнут нужный результат. Это дает повышение скорости выполнения программы; ● при преждевременном прекращении циклического процесса не искажается структура кода. ⇑ 12. Какое отличие между оператором break с меткой и оператором continue с меткой Операторы break с меткой и continue с меткой могут использоваться только тогда, когда в программе есть вложенные циклы. Оператор break с меткой осуществляет полный выход из всех вложенных циклов. Оператор continue с меткой осуществляет выход из текущего вложенного цикла и переход к следующей итерации внешнего цикла. 36. Double to int Приведение типов в java осуществляется через оператор приведения типов (тип данных). Мы можем преобразовать объект Double в int с помощью метода intValue() класса Double 37.Что такое Литерал? Литералы — это явно заданные значения в коде программы — константы определенного типа, которые находятся в коде в момент запуска. 38. Что такое NaN? NaN ( англ. Not-a-Number) — одно из особых состояний числа с плавающей запятой . В соотв етствии с IEEE 754 , такое состояние задаётся через установку показателя степени в зарезер вированное значение. Используется во многих математических библиотеках и математичес ких сопроцессорах . Данное состояние может возникнуть в различных случаях, например, к огда предыдущая математическая операция завершилась с неопределённым результатом, и ли если в ячейку памяти попало не удовлетворяющее условиям число. К операциям, приводящим к появлению NaN в качестве ответа, относятся: ● все математические операции, содержащие NaN в качестве одного из операндов; ● деление ноля на ноль; ● деление бесконечности на бесконечность; ● умножение ноля на бесконечность; ● сложение бесконечности с бесконечностью противоположного знака; ● вычисление квадратного корня отрицательного числа [1] ; ● логарифмирование отрицательного числа. 39. Что такое условные конструкции? Ответ: Данные конструкции позволяют направить работу программы по одному из путей в зависимости от определенных условий. В языке Java используются следующие условные конструкции: if..else и switch..case и тернерный оператор Конструкция if/else Выражение if/else проверяет истинность некоторого условия и в зависимости от результатов проверки выполняет определенный код: После ключевого слова if ставится условие. И если это условие выполняется, то срабатывает код, который помещен в далее в блоке if после фигурных скобок. if(num1>num2){ System.out.println("Первое число больше второго"); }else{ System.out.println("Первое число меньше второго"); } Конструкция switch Конструкция switch/case аналогична конструкции if/else, так как позволяет обработать сразу несколько условий: int num = 8; switch(num){ case 1: System.out.println("число равно 1"); break; case 8: System.out.println("число равно 8"); num++; break; case 9: System.out.println("число равно 9"); break; default: System.out.println("число не равно 1, 8, 9"); } После ключевого слова switch в скобках идет сравниваемое выражение. Значение этого выражения последовательно сравнивается со значениями, помещенными после операторов сase. И если совпадение найдено, то будет выполняет соответствующий блок сase. В конце блока сase ставится оператор break, чтобы избежать выполнения других блоков. Если мы хотим также обработать ситуацию, когда совпадения не будет найдено, то можно добавить блок default. Хотя блок default необязателен. Тернарная операция Тернарную операция имеет следующий синтаксис: [первый операнд - условие] ? [второй операнд] : [третий операнд]. Таким образом, в этой операции участвуют сразу три операнда. В зависимости от условия тернарная операция возвращает второй или третий операнд: если условие равно true, то возвращается второй операнд; если условие равно false, то третий. Например: int x=3; int y=2; int z = x Здесь результатом тернарной операции является переменная z. Сначала проверяется условие x Ответ: Если переменную объявить и инициализировать с ключевым словом final, то такая переменная становится константой. Изменить значение константы в процессе выполнения программы нельзя. 41. |