Skip to content · ⁨Перейти к содержанию⁩

Using Objects and Methods · ⁨Использование объектов и методов⁩

AP Computer Science A · ⁨AP Информатика A⁩ · Topic 1 · ⁨Тема 1⁩

Video lesson for this topic · ⁨Видеоурок по этой теме⁩ Open the video page · ⁨Открыть страницу видео⁩
15:05

Использование объектов и методов

Вот две программы Java. В первой отсутствует точка с запятой. Вторая делит семь на два и сохраняет ответ в целочисленной переменной. Компилятор останавливает…

English narration · English + 中文 subtitles burned in · ⁨Английское озвучивание · Английский + китайские субтитры (встроенные)⁩

1.1

Introduction to Algorithms, Programming, and Compilers · ⁨Введение в алгоритмы, программирование и компиляторы⁩

Syllabus · ⁨Программа⁩
English

Learning Objective 1.1.A: Represent patterns and algorithms found in everyday life using written language or diagrams.

  • 1.1.A.1 Algorithms define step-by-step processes to follow when completing a task or solving a problem. These algorithms can be represented using written language or diagrams.
  • 1.1.A.2 Sequencing defines an order for when steps in a process are completed. Steps in a process are completed one at a time.

Learning Objective 1.1.B: Explain the code compilation and execution process.

  • 1.1.B.1 Code can be written in any text editor; however, an integrated development environment (IDE) is often used to write programs because it provides tools for a programmer to write, compile, and run code.
  • 1.1.B.2 A compiler checks code for some errors. Errors detectable by the compiler need to be fixed before the program can be run.

Learning Objective 1.1.C: Identify types of programming errors.

  • 1.1.C.1 A syntax error is a mistake in the program where the rules of the programming language are not followed. These errors are detected by the compiler.
  • 1.1.C.2 A logic error is a mistake in the algorithm or program that causes it to behave incorrectly or unexpectedly. These errors are detected by testing the program with specific data to see if it produces the expected outcome.
  • 1.1.C.3 A run-time error is a mistake in the program that occurs during the execution of a program. Run-time errors typically cause the program to terminate abnormally.
  • 1.1.C.4 An exception is a type of run-time error that occurs as a result of an unexpected error that was not detected by the compiler. It interrupts the normal flow of the program's execution.
Русский

Цель обучения 1.1.A: Представлять закономерности и алгоритмы, встречающиеся в повседневной жизни, с помощью письменного текста или диаграмм.

  • 1.1.A.1 Алгоритмы определяют пошаговые процессы, которые необходимо выполнить для выполнения задачи или решения проблемы. Эти алгоритмы могут быть представлены с помощью письменного текста или диаграмм.
  • 1.1.A.2 Последовательность определяет порядок выполнения шагов в процессе. Шаги в процессе выполняются по одному за другим.

Цель обучения 1.1.B: Объяснять процесс компиляции и выполнения кода.

  • 1.1.B.1 Код может быть написан в любом текстовом редакторе; однако часто используется средство разработки (IDE), потому что оно предоставляет инструменты для программиста, чтобы писать, компилировать и запускать код.
  • 1.1.B.2 Компилятор проверяет код на наличие некоторых ошибок. Ошибки, обнаруживаемые компилятором, должны быть исправлены до того, как программу можно будет запустить.

Цель обучения 1.1.C: Определять типы ошибок программирования.

  • 1.1.C.1 Синтаксическая ошибка — это ошибка в программе, в которой не соблюдены правила языка программирования. Эти ошибки обнаруживаются компилятором.
  • 1.1.C.2 Логическая ошибка — это ошибка в алгоритме или программе, которая вызывает неправильное или неожиданный результат. Эти ошибки обнаруживаются тестированием программы с использованием конкретных данных для проверки, дает ли она ожидаемый результат.
  • 1.1.C.3 Ошибка времени выполнения — это ошибка в программе, которая возникает во время выполнения программы. Ошибки времени выполнения обычно приводят к abnormalному завершению работы программы.
  • 1.1.C.4 Исключение — это тип ошибки времени выполнения, который возникает в результате неожиданной ошибки, не обнаруженной компилятором. Оно нарушает нормальный поток выполнения программы.

Source: College Board AP Course and Exam Description · ⁨Источник: Описание курса и экзамена College Board AP⁩

English

An algorithm 算法 is a finite, step-by-step procedure that solves a problem. A program 程序 expresses an algorithm in a language a computer can run. Java is compiled 编译: the compiler 编译器 translates your source code into bytecode, which the Java Virtual Machine (JVM) runs. A syntax error 语法错误 (breaking the grammar) is caught by the compiler; a logic error 逻辑错误 (wrong result) is not – the program runs but misbehaves.

Русский
Исходный код на рабочей станции — программы пишутся, компилируются и выполняются как точные инструкции
Исходный код на рабочей станции — программы пишутся, компилируются и выполняются как точные инструкции

Алгоритм — это конечная пошаговая процедура решения задачи. Программа выражает алгоритм на языке, который может выполнить компьютер. Java является компилируемым: компилятор переводит ваш исходный код в байт-код, который выполняет виртуальная машина Java (JVM). Синтаксическая ошибка (нарушение грамматики) ловится компилятором; логическая ошибка (неправильный результат) нет — программа выполняется, но ведет себя неверно.

Компилятор переводит всю программу целиком; интерпретатор выполняет её построчно
Компилятор переводит всю программу целиком; интерпретатор выполняет её строчку за строчкой
Несколько чипов процессора компьютера, вид снизу
Ваша программа на Java компилируется в инструкции, которые выполняет центральный процессор, подобный одному из этих
Vocabulary · ⁨Словарь⁩ Train · ⁨Тренировать⁩
English Русский
compiler/kəmˈpaɪlə/ компилятор
syntax error/ˈsɪntæks ˈerə/ синтаксическая ошибка
logic error/ˈlɒdʒɪk ˈerə/ логическая ошибка
variable/ˈveərɪəbl/ переменной
1.2

Variables and Data Types · ⁨Переменные и типы данных⁩

Syllabus · ⁨Программа⁩
English

Learning Objective 1.2.A: Identify the most appropriate data type category for a particular specification.

  • 1.2.A.1 A data type is a set of values and a corresponding set of operations on those values. Data types can be categorized as either primitive or reference.
  • 1.2.A.2 The primitive data types used in this course define the set of values and corresponding operations on those values for numbers and Boolean values.
  • 1.2.A.3 A reference type is used to define objects that are not primitive types.

Learning Objective 1.2.B: Develop code to declare variables to store numbers and Boolean values.

  • 1.2.B.1 The three primitive data types used in this course are int, double, and boolean. An int value is an integer. A double value is a real number. A boolean value is either true or false.
    • Exclusion statement: The other five primitive data types (long, short, byte, float, and char) are outside the scope of the AP Computer Science A course and exam.
  • 1.2.B.2 A variable is a storage location that holds a value, which can change while the program is running. Every variable has a name and an associated data type. A variable of a primitive type holds a primitive value from that type.
Русский

Цель обучения 1.2.A: Определить наиболее подходящий тип данных для конкретного задания.

  • 1.2.A.1 Тип данных — это набор значений и соответствующий им набор операций над этими значениями. Типы данных можно классифицировать как примитивные или ссылочные.
  • 1.2.A.2 Примитивные типы данных, используемые в данном курсе, определяют набор значений и соответствующие операции над ними для чисел и логических значений.
  • 1.2.A.3 Ссылочный тип используется для определения объектов, которые не являются примитивными типами.

Цель обучения 1.2.B: Написать код для объявления переменных хранения чисел и логических значений.

  • 1.2.B.1 Три примитивных типа данных, используемых в этом курсе: int, double и boolean. Значение int является целым числом. Значение double является вещественным числом. Значение boolean может быть либо true, либо false.
    • Исключение из программы: Остальные пять примитивных типов данных (long, short, byte, float и char) выходят за рамки курса и экзамена AP Computer Science A.
  • 1.2.B.2 Переменная — это место хранения, содержащее значение, которое может изменяться во время выполнения программы. У каждой переменной есть имя и связанный с ней тип данных. Переменная примитивного типа хранит примитивное значение этого типа.

Source: College Board AP Course and Exam Description · ⁨Источник: Описание курса и экзамена College Board AP⁩

English

A variable 变量 is a named box that stores a value of a fixed type 类型. Java's main primitive types 基本类型 are int (whole numbers), double (decimals), and boolean (true/false). Declare with the type first:

Русский

Переменная — это именованная ячейка, хранящая значение фиксированного типа. Основные примитивные типы Java — это int (целые числа), double (дробные числа) и boolean (true/false). Объявляются типом сначала:

Базовые типы данных Java, каждый из которых хранит определенный тип значения
Базовые типы данных Java, каждый хранит типовых значений
int score = 90;
double price = 4.99;
boolean passed = true;
Explore · ⁨Исследовать⁩

Explore how a variable holds one value at a time · ⁨Исследуйте, как переменная хранит одно значение за раз⁩

A variable is a named box that stores one value of a fixed type. Step through the lines and watch each box take its value; notice that reassigning score overwrites the old number rather than making a new box. · ⁨Переменная — это именованная ячейка, хранящая одно значение фиксированного типа. Пройдитесь по строкам кода и следите, как каждая ячейка получает свое значение; обратите внимание, что повторное присваивание score перезаписывает старое число, а не создает новую ячейку.⁩

Vocabulary · ⁨Словарь⁩ Train · ⁨Тренировать⁩
English Русский
type/taɪp/ текст (типографика)
primitive types/ˈprɪmɪtɪv taɪps/ простые типы данных
expression/ekˈspreʃn/ выражение
modulus/ˈmɒdjʊləs/ модуль
escape sequence/eˈskeɪp ˈsiːkwəns/ последовательность выхода
assignment/əˈsaɪnmənt/ присваиванием
1.3

Expressions and Output · ⁨Выражения и вывод⁩

Syllabus · ⁨Программа⁩
English

Learning Objective 1.3.A: Develop code to generate output and determine the result that would be displayed.

  • 1.3.A.1 System.out.print and System.out.println display information on the computer display. System.out.println moves the cursor to a new line after the information has been displayed, while System.out.print does not.

Learning Objective 1.3.B: Develop code to utilize string literals and determine the result of using string literals.

  • 1.3.B.1 A literal is the code representation of a fixed value.
  • 1.3.B.2 A string literal is a sequence of characters enclosed in double quotes.
  • 1.3.B.3 Escape sequences are special sequences of characters that can be included in a string. They start with a \ and have a special meaning in Java. Escape sequences used in this course include double quote \", backslash \\, and newline \n.

Learning Objective 1.3.C: Develop code for arithmetic expressions and determine the result of these expressions.

  • 1.3.C.1 Arithmetic expressions, which consist of numeric values, variables, and operators, include expressions of type int and double.
  • 1.3.C.2 The arithmetic operators consist of addition +, subtraction -, multiplication *, division /, and remainder %. An arithmetic operation that uses two int values will evaluate to an int value. An arithmetic operation that uses at least one double value will evaluate to a double value.
    • Exclusion statement: Expressions that result in special double values (e.g., infinities and NaN) are outside the scope of the AP Computer Science A course and exam.
  • 1.3.C.3 When dividing numeric values that are both int values, the result is only the integer portion of the quotient. When dividing numeric values that use at least one double value, the result is the quotient.
  • 1.3.C.4 The remainder operator % is used to compute the remainder when one number a is divided by another number b.
    • Exclusion statement: The use of values less than 0 for a and the use of values less than or equal to 0 for b is outside the scope of the AP Computer Science A course and exam.
  • 1.3.C.5 Operators can be used to construct compound expressions. At compile time, numeric values are associated with operators according to operator precedence to determine how they are grouped. Parentheses can be used to modify operator precedence. Multiplication, division, and remainder have precedence over addition and subtraction. Operators with the same precedence are evaluated from left to right.
  • 1.3.C.6 An attempt to divide an integer by the integer zero will result in an ArithmeticException.
    • Exclusion statement: The use of dividing by zero when one numeric value is a double is outside the scope of the AP Computer Science A course and exam.
Русский

Цель обучения 1.3.A: Написать код для вывода информации и определить результат, который будет отображен.

  • 1.3.A.1 System.out.print и System.out.println выводят информацию на экран компьютера. System.out.println перемещает курсор на новую строку после вывода информации, тогда как System.out.print этого не делает.

Цель обучения 1.3.B: Написать код для использования строковых литералов и определить результат их применения.

  • 1.3.B.1 Литерал — это кодовая запись фиксированного значения.
  • 1.3.B.2 Строковый литерал — это последовательность символов, заключенная в двойные кавычки.
  • 1.3.B.3 Последовательности экранирования — это специальные последовательности символов, которые могут быть включены в строку. Они начинаются со знака обратного слеша (\) и имеют специальное значение в Java. Последовательности экранирования, используемые в этом курсе: двойная кавычка \", обратный слеш \\ и символ новой строки \n.

Цель обучения 1.3.C: Написать код для арифметических выражений и определить результат этих выражений.

  • 1.3.C.1 Арифметические выражения, состоящие из числовых значений, переменных и операторов, включают выражения типов int и double.
  • 1.3.C.2 Арифметические операторы включают сложение +, вычитание -, умножение *, деление / и остаток от деления %. Арифметическая операция, использующая два значения int, даст результат в виде значения int. Арифметическая операция, использующая хотя бы одно значение double, даст результат в виде значения double.
    • Исключение: Выражения, дающие специальные значения double (например, бесконечности и NaN), выходят за рамки курса и экзамена AP Computer Science A.
  • 1.3.C.3 При делении числовых значений, оба из которых являются int-значениями, результатом является только целая часть частного. При делении числовых значений, в которых используется хотя бы одно double-значение, результатом является частное.
  • 1.3.C.4 Оператор остатка от деления % используется для вычисления остатка, когда одно число a делится на другое число b.
    • Замечание об исключении: Использование значений меньше 0 для a и использование значений меньше или равных 0 для b выходит за рамки курса и экзамена AP Computer Science A.
  • 1.3.C.5 Операторы могут использоваться для создания составных выражений. На этапе компиляции числовые значения связываются с операторами согласно приоритету операторов для определения способа их группировки. Скобки могут использоваться для изменения приоритета операторов. Умножение, деление и остаток от деления имеют более высокий приоритет, чем сложение и вычитание. Операторы с одинаковым приоритетом вычисляются слева направо.
  • 1.3.C.6 Попытка разделить целое число на целую ноль приведет к возникновению ошибки ArithmeticException.
    • Замечание об исключении: Использование деления на ноль, когда одно числовое значение является double-значением, выходит за рамки курса и экзамена AP Computer Science A.

Source: College Board AP Course and Exam Description · ⁨Источник: Описание курса и экзамена College Board AP⁩

English

An expression 表达式 combines values and operators to compute a result: + - * / and % (modulus 取模, the remainder). Integer division truncates: 7 / 2 is 3, while 7 % 2 is 1. Operator precedence follows math (*,/,% before +,-). Print with:

Dividing an integer by the integer 0 (like 7 / 0) is not allowed and crashes at run time with an ArithmeticException. Inside a string, a backslash marks an escape sequence 转义序列: \" prints a double quote, \\ a single backslash, and \n starts a new line – so System.out.println("She said \"hi\""); prints She said "hi".

Русский

Выражение сочетает значения и операторы для вычисления результата: + - * / и % (остаток от деления, остаток). Целочисленное деление отбрасывает дробную часть: 7 / 2 равно 3, тогда как 7 % 2 равно 1. Приоритет операторов следует математике (*,/,% перед +,-). Печать с помощью:

System.out.print("no newline");
System.out.println("with newline");

Деление целого числа на целое число 0 (например, на 7 / 0) запрещено и вызывает ошибку во время выполнения программы с возникновением исключения ArithmeticException. Внутри строки обратный слэш обозначает специальную последовательность: конструкция \" выводит двойную кавычку, \\ — одинарный обратный слэш, а \n начинает новую строку — поэтому вызов System.out.println("She said \"hi\""); выведет результат She said "hi".

Explore · ⁨Исследовать⁩

Explore the order of operations step by step · ⁨Исследуйте порядок выполнения операций шаг за шагом⁩

Java applies *, /, % before + and -, working left to right. Watch each step and see why 2 + 3 * 4 is $14$, not $20$ — the multiplication happens first. · ⁨Java применяет *, /, % до + и -, работая слева направо. Наблюдайте за каждым шагом и поймите, почему 2 + 3 * 4 равно $14$, а не $20$ — умножение выполняется первым.⁩

1.4

Assignment Statements and Input · ⁨Операторы присваивания и ввод⁩

Syllabus · ⁨Программа⁩
English

Learning Objective 1.4.A: Develop code for assignment statements with expressions and determine the value that is stored in the variable as a result of these statements.

  • 1.4.A.1 Every variable must be assigned a value before it can be used in an expression. That value must be from a compatible data type. A variable is initialized the first time it is assigned a value. Reference types can be assigned a new object or null if there is no object. The literal null is a special value used to indicate that a reference is not associated with any object.
  • 1.4.A.2 The assignment operator = allows a program to initialize or change the value stored in a variable. The value of the expression on the right is stored in the variable on the left.
    • Exclusion statement: The use of assignment operators inside expressions (e.g., a = b = 4; or a[i += 5]) is outside the scope of the AP Computer Science A course and exam.
  • 1.4.A.3 During execution, an expression is evaluated to produce a single value. The value of an expression has a type based on the evaluation of the expression.

Learning Objective 1.4.B: Develop code to read input.

  • 1.4.B.1 Input can come in a variety of forms, such as tactile, audio, visual, or text. The Scanner class is one way to obtain text input from the keyboard.
    • Exclusion statement: Any specific form of input from the user is outside the scope of the AP Computer Science A course and exam.
Русский

Цель обучения 1.4.A: Писать код для операторов присваивания с выражениями и определять значение, которое сохраняется в переменной в результате этих операций.

  • 1.4.A.1 Каждой переменной должно быть присвоено значение до того, как она будет использована в выражении. Это значение должно принадлежать совместимому типу данных. Переменная инициализируется при первом присвоении ей значения. Типам ссылочных данных может быть присвоено новое значение объекта или null, если объект отсутствует. Буквальное значение null является специальным значением, используемым для указания на то, что ссылка не связана ни с каким объектом.
  • 1.4.A.2 Оператор присваивания = позволяет программе инициализировать или изменить значение, хранящееся в переменной. Значение выражения справа сохраняется в переменной слева.
    • Замечание об исключении: Использование операторов присваивания внутри выражений (например, a = b = 4; или a[i += 5]) выходит за рамки курса и экзамена AP Computer Science A.
  • 1.4.A.3 Во время выполнения выражение вычисляется для получения одного значения. Тип значения выражения определяется на основе его вычисления.

Цель обучения 1.4.B: Писать код для чтения входных данных.

  • 1.4.B.1 Входные данные могут поступать в различных формах, таких как тактильные, аудиальные, визуальные или текстовые. Класс Scanner — это один из способов получения текстового ввода с клавиатуры.
    • Замечание об исключении: Любая конкретная форма ввода от пользователя выходит за рамки курса и экзамена AP Computer Science A.

Source: College Board AP Course and Exam Description · ⁨Источник: Описание курса и экзамена College Board AP⁩

English

An assignment 赋值 x = expr; evaluates the right side and stores it in the left variable. Read input with a Scanner:

Русский

Присваивание x = expr; вычисляет правую сторону и сохраняет её в левую переменную. Считывайте ввод с помощью Scanner:

Scanner in = new Scanner(System.in);
int age = in.nextInt();
String name = in.next();
1.5

Casting and Range of Variables · ⁨Приведение типов и диапазон переменных⁩

Syllabus · ⁨Программа⁩
English

Learning Objective 1.5.A: Develop code to cast primitive values to different primitive types in arithmetic expressions and determine the value that is produced as a result.

  • 1.5.A.1 The casting operators (int) and (double) can be used to convert from a double value to an int value (or vice versa).
  • 1.5.A.2 Casting a double value to an int value causes the digits to the right of the decimal point to be truncated.
  • 1.5.A.3 Some code causes int values to be automatically cast (widened) to double values.
  • 1.5.A.4 Values of type double can be rounded to the nearest integer by (int)(x + 0.5) for non-negative numbers or (int)(x - 0.5) for negative numbers.

Learning Objective 1.5.B: Describe conditions when an integer expression evaluates to a value out of range.

  • 1.5.B.1 The constant Integer.MAX_VALUE holds the value of the largest possible int value. The constant Integer.MIN_VALUE holds the value of the smallest possible int value.
  • 1.5.B.2 Integer values in Java are represented by values of type int, which are stored using a finite amount (4 bytes) of memory. Therefore, an int value must be in the range from Integer.MIN_VALUE to Integer.MAX_VALUE inclusive.
  • 1.5.B.3 If an expression would evaluate to an int value outside of the allowed range, an integer overflow occurs. The result is an int value in the allowed range but not necessarily the value expected.

Learning Objective 1.5.C: Describe conditions that limit accuracy of expressions.

  • 1.5.C.1 Computers allot a specified amount of memory to store data based on the data type. If an expression would evaluate to a double that is more precise than can be stored in the allotted amount of memory, a round-off error occurs. The result will be rounded to the representable value. To avoid rounding errors that naturally occur, use int values.
    • Exclusion statement: Other special decimal data types that can be used to avoid rounding errors are outside the scope of the AP Computer Science A course and exam.
Русский

Цель обучения 1.5.A: Писать код для приведения примитивных значений к различным примитивным типам в арифметических выражениях и определять получаемое в результате значение.

  • 1.5.A.1 Операторы приведения (int) и (double) могут использоваться для преобразования значения типа double в значение типа int (или наоборот).
  • 1.5.A.2 Приведение значения типа double к типу int приводит к отбрасыванию цифр после десятичной точки.
  • 1.5.A.3 Некоторые фрагменты кода вызывают автоматическое приведение (расширение) значений типа int к значениям типа double.
  • 1.5.A.4 Значения типа double можно округлить до ближайшего целого числа с помощью (int)(x + 0.5) для неотрицательных чисел или (int)(x - 0.5) для отрицательных чисел.

Цель обучения 1.5.B: Описывать условия, при которых целочисленное выражение вычисляется в значение вне допустимого диапазона.

  • 1.5.B.1 Константа Integer.MAX_VALUE содержит значение максимально возможного значения типа int. Константа Integer.MIN_VALUE содержит значение минимально возможного значения типа int.
  • 1.5.B.2 Целочисленные значения в Java представлены значениями типа int, которые хранятся с использованием конечного объема памяти (4 байта). Следовательно, значение типа int должно находиться в диапазоне от Integer.MIN_VALUE до Integer.MAX_VALUE включительно.
  • 1.5.B.3 Если результат вычисления выражения должен был бы стать значением типа int, выходящим за пределы допустимого диапазона, происходит переполнение целого числа. Результатом станет значение типа int, находящееся в допустимом диапазоне, но не обязательно ожидаемое значение.

Цель обучения 1.5.C: Описывать условия, ограничивающие точность выражений.

  • 1.5.C.1 Компьютеры выделяют определенное количество памяти для хранения данных в зависимости от типа данных. Если результат вычисления выражения должен был бы стать значением типа double, которое имеет большую точность, чем может быть сохранено в выделенном объеме памяти, возникает ошибка округления. Результат будет округлен до представимого значения. Чтобы избежать естественных ошибок округления, используйте значения типа int.
    • Замечание об исключении: Другие специальные типы данных для десятичных дробей, которые можно использовать для предотвращения ошибок округления, выходят за рамки курса и экзамена AP Computer Science A.

Source: College Board AP Course and Exam Description · ⁨Источник: Описание курса и экзамена College Board AP⁩

English
int range, overflow and truncation

Each type has a fixed range; an int overflows past about 2.1 billion. Casting 类型转换 converts between types. Widening (int to double) is automatic; narrowing needs an explicit cast, which truncates (does not round):

Exam skill: watch for integer division producing a truncated result when a decimal was expected – cast one operand to double first.

Worked example. Trace each expression:

  • 7 / 2 → 3 (both int, so division truncates);
  • 7.0 / 2 → 3.5 (one double forces real division);
  • 7 % 2 → 1 (the remainder);
  • (double) 7 / 2 → 3.5 (the cast binds tighter than /, so it is 7.0 / 2);
  • (double) (7 / 2) → 3.0 (the parentheses compute 7 / 2 = 3 in int first, then widen).

The last two look alike but differ – the position of the cast decides whether the truncation happens.

Русский
Диапазон int, переполнение и усечение

У каждого типа есть фиксированный диапазон; при int происходит переполнение свыше примерно 2,1 миллиарда. Приведение типов (casting) преобразует между типами. Расширение (от int к double) происходит автоматически; сужение требует явного приведения, которое усекает (не округляет):

double avg = (double) total / count;   // force real division
int whole = (int) 3.9;                 // 3, truncated

Навык для экзамена: следите за целочисленным делением, дающим усеченный результат вместо ожидаемого дробного — приведите один из операндов к double заранее.

Разобранный пример. Проследите каждое выражение:

  • 7 / 2 → 3 (оба int, поэтому деление усекает);
  • 7.0 / 2 → 3.5 (наличие одного double вынуждает вещественное деление);
  • 7 % 2 → 1 (остаток от деления);
  • (double) 7 / 2 → 3.5 (приведение типа связывается строже, чем /, поэтому результат является 7.0 / 2);
  • (double) (7 / 2) → 3.0 (скобки вычисляют 7 / 2 = 3 в int сначала, затем расширяют тип).

Последние два выглядят похоже, но различаются — положение приведения типа определяет, где происходит отбрасывание дробной части.

Explore · ⁨Исследовать⁩

Why int and double store numbers differently · ⁨Почему int и double хранят числа по-разному⁩

An int holds only whole numbers in a fixed range; a double stores a mantissa and an exponent, trading exactness for a huge range. Casting double→int throws away the fraction, and a value past an int's range overflows. · ⁨Значение int хранит только целые числа в фиксированном диапазоне; double хранит мантиссу и экспоненту, жертвуя точностью ради огромного диапазона. Приведение типа double→int отбрасывает дробную часть, а значение, выходящее за пределы диапазона int, вызывает переполнение.⁩

Vocabulary · ⁨Словарь⁩ Train · ⁨Тренировать⁩
English Русский
Casting/ˈkæstɪŋ/ Приведение типов
library/ˈlaɪbrəri/ библиотекой
abstraction/əbˈstrækʃn/ абстракцией
Comments/ˈkɒments/ Комментарии
method signature/ˈmeθəd ˈsɪɡnɪtʃə/ подпись метода
arguments/ˈɑːɡjuːmənts/ аргументы
class (static) method/klæs ˈmeθəd/ классический (статический) метод
1.6

Compound Assignment Operators · ⁨Операторы составного присваивания⁩

Syllabus · ⁨Программа⁩
English

Learning Objective 1.6.A: Develop code for assignment statements with compound assignment operators and determine the value that is stored in the variable as a result.

  • 1.6.A.1 Compound assignment operators +=, -=, *=, /=, and %= can be used in place of the assignment operator in numeric expressions. A compound assignment operator performs the indicated arithmetic operation between the value on the left and the value on the right and then assigns the result to the variable on the left.
  • 1.6.A.2 The post-increment operator ++ and post-decrement operator -- are used to add 1 or subtract 1 from the stored value of a numeric variable. The new value is assigned to the variable.
    • Exclusion statement: The use of increment and decrement operators in prefix form (e.g., ++x) is outside the scope of the AP Computer Science A course and exam. The use of increment and decrement operators inside other expressions (e.g., arr[x++]) is outside the scope of the AP Computer Science A course and exam.
Русский

Цель обучения 1.6.A: Писать код для операторов присваивания со составными операторами присваивания и определять значение, которое сохраняется в переменной в результате.

  • 1.6.A.1 Компоунд-присваивание операторы (+=, -=, *=, /= и %=) могут использоваться вместо оператора присваивания в числовых выражениях. Компоунд-оператор выполняет указанную арифметическую операцию между значением слева и значением справа, а затем присваивает результат переменной слева.
  • 1.6.A.2 Оператор постинкремента ++ и оператор постдеcrementa -- используются для прибавления 1 или вычитания 1 из сохраняемого значения числовой переменной. Новое значение присваивается переменной.
    • Исключение из программы: Использование операторов инкремента и декремента в префиксной форме (например, ++x) выходит за рамки курса и экзамена AP Computer Science A. Использование операторов инкремента и декремента внутри других выражений (например, arr[x++]) выходит за рамки курса и экзамена AP Computer Science A.

Source: College Board AP Course and Exam Description · ⁨Источник: Описание курса и экзамена College Board AP⁩

English

Shorthands combine an operation with assignment: x += 5 means x = x + 5; likewise -=, *=, /=, %=. The increment and decrement operators x++ and x-- add or subtract one.

Русский

Сокращенные записи объединяют операцию с присваиванием: x += 5 означает x = x + 5; аналогично для -=, *=, /=, %=. Операторы инкремента и декремента x++ и x-- прибавляют или отнимают единицу.

1.7

Application Program Interface (API) and Libraries · ⁨Программный интерфейс приложения (API) и библиотеки⁩

Syllabus · ⁨Программа⁩
English

Learning Objective 1.7.A: Identify the attributes and behaviors of a class found in the libraries contained in an API.

  • 1.7.A.1 Libraries are collections of classes. An application programming interface (API) specification informs the programmer how to use those classes. Documentation found in API specifications and libraries is essential to understanding the attributes and behaviors of a class defined by the API. A class defines a specific reference type. Classes in the APIs and libraries are grouped into packages. Existing classes and class libraries can be utilized to create objects.
  • 1.7.A.2 Attributes refer to the data related to the class and are stored in variables. Behaviors refer to what instances of the class can do (or what can be done with them) and are defined by methods.
Русский

Цель обучения 1.7.A: Определять атрибуты и поведение класса, содержащегося в библиотеках API.

  • 1.7.A.1 Библиотеки — это наборы классов. Спецификация прикладного программного интерфейса (API) информирует разработчика о том, как использовать эти классы. Документация, содержащаяся в спецификациях API и библиотеках, необходима для понимания атрибутов и поведения класса, определенного API. Класс определяет конкретный ссылочный тип. Классы в API и библиотеках сгруппированы по пакетам. Существующие классы и библиотеки классов могут использоваться для создания объектов.
  • 1.7.A.2 Атрибуты относятся к данным, связанным с классом, и хранятся в переменных. Поведение относится к тому, что экземпляры класса могут делать (или что можно сделать с ними), и определяется методами.

Source: College Board AP Course and Exam Description · ⁨Источник: Описание курса и экзамена College Board AP⁩

English

An API (Application Programming Interface) 应用程序接口 is the published list of classes and methods you may use. A library 库 is a collection of ready-made classes (like Math, String, Scanner). You read the API documentation to learn what a method needs (its parameters) and returns, without seeing its inner code – an example of abstraction 抽象.

Русский

API (Application Programming Interface) — это опубликованный список классов и методов, которые вы можете использовать. Библиотека — это набор готовых классов (например, Math, String, Scanner). Вы изучаете документацию API, чтобы узнать, что требует метод (его параметры) и что возвращает, не видя его внутреннего кода — это пример абстрагирования.

Vocabulary · ⁨Словарь⁩ Train · ⁨Тренировать⁩
English Русский
algorithm/ˈælɡərɪθəm/ алгоритм
program/ˈprəʊɡræm/ программа
compiled/kəmˈpaɪld/ скомпилированный
Interface/ˈɪntəfeɪs/ Интерфейс
1.8

Documentation with Comments · ⁨Документация с комментариями⁩

Syllabus · ⁨Программа⁩
English

Learning Objective 1.8.A: Describe the functionality and use of code through comments.

  • 1.8.A.1 Comments are written for both the original programmer and other programmers to understand the code and its functionality, but are ignored by the compiler and are not executed when the program is run. Three types of comments in Java include /* */, which generates a block of comments; //, which generates a comment on one line; and /** */, which are Javadoc comments and are used to create API documentation.
  • 1.8.A.2 A precondition is a condition that must be true just prior to the execution of a method in order for it to behave as expected. There is no expectation that the method will check to ensure preconditions are satisfied.
  • 1.8.A.3 A postcondition is a condition that must always be true after the execution of a method. Postconditions describe the outcome of the execution in terms of what is being returned or the current value of the attributes of an object.
Русский

Цель обучения 1.8.A: Описывать функциональность и использование кода с помощью комментариев.

  • 1.8.A.1 Комментарии пишутся как для первоначального разработчика, так и для других программистов, чтобы они могли понять код и его функциональность, но компилятор игнорирует их, и они не выполняются при запуске программы. В Java существует три типа комментариев: /* */, который создает блок комментариев; //, который создает комментарий в одну строку; и /** */, которые являются Javadoc-комментариями и используются для создания документации API.
  • 1.8.A.2 Предусловие — это условие, которое должно быть истинным непосредственно перед выполнением метода, чтобы он вел себя ожидаемым образом. Не предполагается, что метод будет проверять выполнение предусловий.
  • 1.8.A.3 Постусловие — это условие, которое всегда должно быть истинным после выполнения метода. Постусловия описывают результат выполнения в терминах возвращаемого значения или текущего значения атрибутов объекта.

Source: College Board AP Course and Exam Description · ⁨Источник: Описание курса и экзамена College Board AP⁩

English

Comments 注释 are ignored by the compiler but explain code to humans: // for a single line, /* ... */ for a block, and /** ... */ for a Javadoc comment that documents a method's purpose, parameters, and return value. Precise preconditions and postconditions are written here.

Русский

Комментарии игнорируются компилятором, но объясняют код людям: // для одной строки, /* ... */ для блока, а /** ... */ для Javadoc-комментария, который документирует назначение метода, его параметры и возвращаемое значение. Здесь также записывают точные предусловия и постусловия.

1.9

Method Signatures · ⁨Подписи методов⁩

Syllabus · ⁨Программа⁩
English

Learning Objective 1.9.A: Identify the correct method to call based on documentation and method signatures.

  • 1.9.A.1 A method is a named block of code that only runs when it is called. A block of code is any section of code that is enclosed in braces. Procedural abstraction allows a programmer to use a method by knowing what the method does even if they do not know how the method was written.
  • 1.9.A.2 A parameter is a variable declared in the header of a method or constructor and can be used inside the body of the method. This allows values or arguments to be passed and used by a method or constructor. A method signature for a method with parameters consists of the method name and the ordered list of parameter types. A method signature for a method without parameters consists of the method name and an empty parameter list.

Learning Objective 1.9.B: Describe how to call methods.

  • 1.9.B.1 A void method does not have a return value and is therefore not called as part of an expression.
  • 1.9.B.2 A non-void method returns a value that is the same type as the return type in the header. To use the return value when calling a non-void method, it must be stored in a variable or used as part of an expression.
  • 1.9.B.3 An argument is a value that is passed into a method when the method is called. The arguments passed to a method must be compatible in number and order with the types identified in the parameter list of the method signature. When calling methods, arguments are passed using call by value. Call by value initializes the parameters with copies of the arguments.
  • 1.9.B.4 Methods are said to be overloaded when there are multiple methods with the same name but different signatures.
  • 1.9.B.5 A method call interrupts the sequential execution of statements, causing the program to first execute the statements in the method before continuing. Once the last statement in the method has been executed or a return statement is executed, the flow of control is returned to the point immediately following where the method was called.
Русский

Цель обучения 1.9.A: Определять правильный метод для вызова на основе документации и подписей методов.

  • 1.9.A.1 Метод — это именованный блок кода, который выполняется только тогда, когда он вызывается. Блок кода — это любой участок кода, заключенный в фигурные скобки. Процедурная абстракция позволяет программисту использовать метод, зная, что он делает, даже если он не знает, как именно он написан.
  • 1.9.A.2 Параметр — это переменная, объявленная в заголовке метода или конструктора, и может использоваться внутри тела метода. Это позволяет передавать значения или аргументы и использовать их методом или конструктором. Подпись метода для метода с параметрами состоит из имени метода и упорядоченного списка типов параметров. Подпись метода для метода без параметров состоит из имени метода и пустого списка параметров.

Цель обучения 1.9.B: Описывать, как вызывать методы.

  • 1.9.B.1 Void-метод не имеет возвращаемого значения и поэтому не используется как часть выражения.
  • 1.9.B.2 Non-void-метод возвращает значение того же типа, что и тип возвращаемого значения в заголовке. Чтобы использовать возвращаемое значение при вызове non-void-метода, оно должно быть сохранено в переменной или использовано как часть выражения.
  • 1.9.B.3 Аргумент — это значение, которое передается в метод при его вызове. Аргументы, передаваемые методу, должны быть совместимы по количеству и порядку с типами, указанными в списке параметров подписи метода. При вызове методов аргументы передаются по значению. Передача по значению инициализирует параметры копиями аргументов.
  • 1.9.B.4 Методы называются перегруженными, когда существует несколько методов с одним именем, но разными подписями.
  • 1.9.B.5 Вызов метода прерывает последовательное выполнение инструкций, заставляя программу сначала выполнить инструкции в методе, а затем продолжить. После выполнения последней инструкции в методе или выполнения инструкции return управление возвращается в точку сразу после места вызова метода.

Source: College Board AP Course and Exam Description · ⁨Источник: Описание курса и экзамена College Board AP⁩

English

A method signature 方法签名 is a method's name plus its parameter types, e.g. nextInt() or substring(int, int). To call a method you must supply arguments 实参 that match the parameters in number, type, and order. The method header (the full declaration) also states the return type – the type of value the method gives back (void if none) – but the return type is not part of the signature, which is why two methods cannot differ by return type alone.

Русский

Подпись метода — это имя метода вместе с типами его параметров, например nextInt() или substring(int, int). Чтобы вызвать метод, необходимо передать аргументы, соответствующие параметрам по количеству, типу и порядку. Заголовок метода (полное объявление) также указывает тип возвращаемого значения — тип данных, который метод возвращает (void, если ничего не возвращается), но тип возвращаемого значения не входит в подпись, поэтому два метода не могут отличаться только типом возвращаемого значения.

1.10

Calling Class Methods · ⁨Вызов статических методов класса⁩

Syllabus · ⁨Программа⁩
English

Learning Objective 1.10.A: Develop code to call class methods and determine the result of those calls.

  • 1.10.A.1 Class methods are associated with the class, not instances of the class. Class methods include the keyword static in the header before the method name.
  • 1.10.A.2 Class methods are typically called using the class name along with the dot operator. When the method call occurs in the defining class, the use of the class name is optional in the call.
Русский

Цель обучения 1.10.A: Написать код для вызова методов класса и определить результат этих вызовов.

  • 1.10.A.1 Методы класса связаны с самим классом, а не с его экземплярами. Методы класса включают ключевое слово static в заголовке перед именем метода.
  • 1.10.A.2 Методы класса обычно вызываются с использованием имени класса вместе с точечным оператором. Когда вызов метода происходит внутри определяющего класса, использование имени класса в вызове является необязательным.

Source: College Board AP Course and Exam Description · ⁨Источник: Описание курса и экзамена College Board AP⁩

English

A class (static) method 类方法 belongs to the class itself, so you call it on the class name: ClassName.method(args). No object is needed.

Русский

Статический метод класса принадлежит самому классу, поэтому вы вызываете его по имени класса: ClassName.method(args). Объект при этом не требуется.

Explore · ⁨Исследовать⁩

Follow a class-method call on the stack · ⁨Отслеживайте вызов метода класса в стеке⁩

Calling a class method like Math.max pushes a new frame onto the call stack; when the method returns a value, its frame pops and control goes back to the caller. Step through to watch the stack grow and shrink. · ⁨Вызов метода класса, например Math.max, помещает новый фрейм в стек вызовов; когда метод возвращает значение, его фрейм удаляется из стека, и управление возвращается вызывающей функции. Пройдитесь по шагам, чтобы увидеть, как стек растет и уменьшается.⁩

Vocabulary · ⁨Словарь⁩ Train · ⁨Тренировать⁩
English Русский
class/klæs/ класс
1.11

Math Class · ⁨Класс Math⁩

Syllabus · ⁨Программа⁩
English

Learning Objective 1.11.A: Develop code to write expressions that incorporate calls to built-in mathematical libraries and determine the value that is produced as a result.

  • 1.11.A.1 The Math class is part of the java.lang package. Classes in the java.lang package are available by default.
  • 1.11.A.2 The Math class contains only class methods. The following Math class methods—including what they do and when they are used—are part of the Java Quick Reference:
    • static int abs(int x) returns the absolute value of an int value.
    • static double abs(double x) returns the absolute value of a double value.
    • static double pow(double base, double exponent) returns the value of the first parameter raised to the power of the second parameter.
    • static double sqrt(double x) returns the nonnegative square root of a double value.
    • static double random() returns a double value greater than or equal to 0.0 and less than 1.0.
  • 1.11.A.3 The values returned from Math.random() can be manipulated using arithmetic and casting operators to produce a random int or double in a defined range based on specified criteria. Each endpoint of the range can be inclusive, meaning the value is included, or exclusive, meaning the value is not included.
Русский

Цель обучения 1.11.A: Написать код для создания выражений, включающих вызовы встроенных математических библиотек, и определить значение, которое получается в результате.

  • 1.11.A.1 Класс Math является частью пакета java.lang. Классы из пакета java.lang доступны по умолчанию.
  • 1.11.A.2 Класс Math содержит только методы класса. Следующие методы класса Math — включая их назначение и области применения — входят в справочник по Java:
    • static int abs(int x) возвращает абсолютное значение значения int.
    • static double abs(double x) возвращает абсолютное значение значения double.
    • static double pow(double base, double exponent) возвращает значение первого параметра, возведенного в степень второго параметра.
    • static double sqrt(double x) возвращает неотрицательный квадратный корень из значения double.
    • static double random() возвращает значение double, большее или равное 0.0 и меньшее 1.0.
  • 1.11.A.3 Значения, возвращаемые из Math.random(), можно преобразовывать с помощью арифметических и операторов приведения типов, чтобы получить случайное целое число int или вещественное число double в заданном диапазоне на основе указанных критериев. Каждый конец диапазона может быть включительным, то есть значение включено, или исключающим, то есть значение не включено.

Source: College Board AP Course and Exam Description · ⁨Источник: Описание курса и экзамена College Board AP⁩

English

The Math class provides static math methods: Math.abs(x), Math.pow(base, exp), Math.sqrt(x), and Math.random() (a double in $[0,1)$). To get a random integer from 0 to n-1: (int)(Math.random() * n).

Русский

Класс Math предоставляет статические математические методы: Math.abs(x), Math.pow(base, exp), Math.sqrt(x) и Math.random() (возвращающий double из $[0,1)$). Чтобы получить случайное целое число от 0 до n-1: (int)(Math.random() * n).

1.12

Objects: Instances of Classes · ⁨Объекты: экземпляры классов⁩

Syllabus · ⁨Программа⁩
English

Learning Objective 1.12.A: Explain the relationship between a class and an object.

  • 1.12.A.1 An object is a specific instance of a class with defined attributes. A class is the formal implementation, or blueprint, of the attributes and behaviors of an object.
  • 1.12.A.2 A class hierarchy can be developed by putting common attributes and behaviors of related classes into a single class called a superclass. Classes that extend a superclass, called subclasses, can draw upon the existing attributes and behaviors of the superclass without replacing these in the code. This creates an inheritance relationship from the subclasses to the superclass.
    • Exclusion statement: Designing and implementing inheritance relationships are outside the scope of the AP Computer Science A course and exam.
  • 1.12.A.3 All classes in Java are subclasses of the Object class.

Learning Objective 1.12.B: Develop code to declare variables to store reference types.

  • 1.12.B.1 A variable of a reference type holds an object reference, which can be thought of as the memory address of that object.
Русский

Цель обучения 1.12.A: Объяснить связь между классом и объектом.

  • 1.12.A.1 Объект — это конкретный экземпляр класса с определенными атрибутами. Класс — это формальная реализация, или чертеж, атрибутов и поведения объекта.
  • 1.12.A.2 Иерархию классов можно построить, поместив общие атрибуты и поведение родственных классов в один класс, называемый надклассом. Классы, которые расширяют надкласс (называемые подклассами), могут использовать существующие атрибуты и поведение надкласса без их замены в коде. Это создает отношение наследования от подклассов к надклассу.
    • Исключение: Проектирование и реализация отношений наследования находятся вне рамок курса и экзамена AP Computer Science A.
  • 1.12.A.3 Все классы в Java являются подклассами класса Object.

Цель обучения 1.12.B: Написать код для объявления переменных для хранения ссылочных типов.

  • 1.12.B.1 Переменная ссылочного типа хранит ссылку на объект, которую можно рассматривать как адрес памяти этого объекта.

Source: College Board AP Course and Exam Description · ⁨Источник: Описание курса и экзамена College Board AP⁩

English
= copies the reference, not the object

A class 类 is a blueprint; an object 对象 is a concrete instance 实例 built from it. A class bundles data (fields) with behavior (methods) – the heart of object-oriented programming 面向对象编程. String, Scanner, and ArrayList are all classes you instantiate.

Classes can be organised into a hierarchy. A superclass 父类 holds attributes and behaviors shared by several subclasses 子类 that extend it – an inheritance relationship 继承关系. Every class in Java is ultimately a subclass of the built-in Object class, which is why every object already has a toString method; writing a subclass method with the same signature as a superclass one is method overriding 方法重写. (Designing your own inheritance is beyond this course, but you are expected to recognise this vocabulary.)

Русский
= копирует ссылку, а не объект

Класс — это чертеж, а объект — конкретный экземпляр, созданный на его основе. Класс объединяет данные (поля) с поведением (методами) — это основа объектно-ориентированного программирования. String, Scanner и ArrayList — это все классы, которые вы создаете (инстанцируете).

Классы можно организовывать в иерархию. Суперкласс содержит атрибуты и поведение, общие для нескольких подклассов, которые extend его — это отношение наследования. Каждый класс в Java в конечном итоге является подклассом встроенного класса Object, поэтому у каждого объекта уже есть метод toString; определение метода в подклассе с той же подписью, что и в суперклассе, называется переопределением метода. (Проектирование собственной иерархии выходит за рамки этого курса, но вы должны уметь распознавать эту терминологию.)

Диаграмма классов: приватные атрибуты и публичные методы
Диаграмма классов: приватные атрибуты и публичные методы
Класс — это чертеж; каждый объект — один экземпляр, построенный на его основе
Класс — это чертеж; каждый объект — один экземпляр, построенный на его основе
Vocabulary · ⁨Словарь⁩ Train · ⁨Тренировать⁩
English Русский
object/ˈɒbdʒekt/ самого тела
instance/ˈɪnstəns/ экземпляр
object-oriented programming/ˈɒbdʒekt ˈɔːrɪəntɪd ˈprəʊɡræmɪŋ/ объектно-ориентированное программирование
superclass/ˈsuːpəklæs/ суперкласс
subclasses/ˈsʌbklæsɪz/ подклассы
inheritance relationship/ɪnˈherɪtəns rɪˈleɪʃənʃɪp/ наследование
method overriding/ˈmeθəd ˌəʊvəˈraɪdɪŋ/ переопределение метода
Instantiation/ˌɪnstænʃɪˈeɪʃn/ инстанцирование
constructor/kənˈstrʌktə/ конструктор
reference/ˈrefrəns/ отсчёта
1.13

Object Creation and Storage (Instantiation) · ⁨Создание объектов и их хранение (инстанцирование)⁩

Syllabus · ⁨Программа⁩
English

Learning Objective 1.13.A: Identify, using its signature, the correct constructor being called.

  • 1.13.A.1 A class contains constructors that are called to create objects. They have the same name as the class.
  • 1.13.A.2 A constructor signature consists of the constructor's name, which is the same as the class name, and the ordered list of parameter types. The parameter list, in the header of a constructor, lists the types of the values that are passed and their variable names.
  • 1.13.A.3 Constructors are said to be overloaded when there are multiple constructors with different signatures.

Learning Objective 1.13.B: Develop code to declare variables of the correct types to hold object references.

  • 1.13.B.1 A variable of a reference type holds an object reference or, if there is no object, null.

Learning Objective 1.13.C: Develop code to create an object by calling a constructor.

  • 1.13.C.1 An object is typically created using the keyword new followed by a call to one of the class's constructors.
  • 1.13.C.2 Parameters allow constructors to accept values to establish the initial values of the attributes of the object.
  • 1.13.C.3 A constructor argument is a value that is passed into a constructor when the constructor is called. The arguments passed to a constructor must be compatible in order and number with the types identified in the parameter list in the constructor signature. When calling constructors, arguments are passed using call by value. Call by value initializes the parameters with copies of the arguments.
  • 1.13.C.4 A constructor call interrupts the sequential execution of statements, causing the program to first execute the statements in the constructor before continuing. Once the last statement in the constructor has been executed, the flow of control is returned to the point immediately following where the constructor was called.
Русский

Цель обучения 1.13.A: Определить по сигнатуре правильный вызываемый конструктор.

  • 1.13.A.1 Класс содержит конструкторы, которые вызываются для создания объектов. Они имеют то же имя, что и класс.
  • 1.13.A.2 Сигнатура конструктора состоит из имени конструктора (которое совпадает с именем класса) и упорядоченного списка типов параметров. Список параметров в заголовке конструктора перечисляет типы передаваемых значений и имена их переменных.
  • 1.13.A.3 Говорят, что конструкторы перегружены, когда существует несколько конструкторов с различными сигнатурами.

Цель обучения 1.13.B: Написать код для объявления переменных правильных типов для хранения ссылок на объекты.

  • 1.13.B.1 Переменная ссылочного типа хранит ссылку на объект или, если объекта нет, значение null.

Цель обучения 1.13.C: Написать код для создания объекта путем вызова конструктора.

  • 1.13.C.1 Объект обычно создается с использованием ключевого слова new, за которым следует вызов одного из конструкторов класса.
  • 1.13.C.2 Параметры позволяют конструкторам принимать значения для установки начальных значений атрибутов объекта.
  • 1.13.C.3 Аргумент конструктора — это значение, передаваемое в конструктор при его вызове. Аргументы, передаваемые в конструктор, должны быть совместимы по порядку и количеству с типами, указанными в списке параметров сигнатуры конструктора. При вызове конструкторов аргументы передаются по значению. Передача по значению инициализирует параметры копиями аргументов.
  • 1.13.C.4 Вызов конструктора прерывает последовательное выполнение инструкций, заставляя программу сначала выполнить инструкции в конструкторе, а затем продолжить. После выполнения последней инструкции в конструкторе управление возвращается в точку, непосредственно следующую за местом вызова конструктора.

Source: College Board AP Course and Exam Description · ⁨Источник: Описание курса и экзамена College Board AP⁩

English

Instantiation 实例化 creates an object with the new keyword, which calls a constructor 构造函数:

The variable holds a reference 引用 (the object's address), not the object itself. Two references can point to the same object; comparing them with == compares addresses, not contents.

A reference can also point to nothing: the special value null 空值 means "not attached to any object". Calling a method on a null reference crashes at run time with a NullPointerException. Guard against it by testing with ==/!= and checking null first, so && short-circuits before the method runs: if (s != null && s.length() > 0).

Русский

Инстанцирование создает объект с помощью ключевых слов new, которое вызывает конструктор:

Scanner in = new Scanner(System.in);
String s = new String("hi");   // or just "hi"

Переменная хранит ссылку (адрес объекта), а не сам объект. Две ссылки могут указывать на один и тот же объект; сравнение их с помощью == сравнивает адреса, а не содержимое.

Ссылка также может не указывать ни на какой объект: специальное значение null означает «не привязано ни к какому объекту». Вызов метода на ссылке null вызывает ошибку во время выполнения программы с возникновением исключения NullPointerException. Избегайте этого, проверяя ссылку с помощью оператора /==/!= и проверяя null первым, чтобы оператор && выполнил короткое замыкание до вызова метода: условие if (s != null && s.length() > 0).

Примитивная переменная хранит свое значение напрямую, ссылка хранит стрелку к объекту
Примитивная переменная хранит свое значение напрямую, ссылка хранит стрелку к объекту
Vocabulary · ⁨Словарь⁩ Train · ⁨Тренировать⁩
English Русский
null/nʌl/ null
instance method/ˈɪnstəns ˈmeθəd/ метод экземпляра
immutable/ɪˈmjuːtəbl/ неизменяемыми
1.14

Calling Instance Methods · ⁨Вызов экземплярных методов⁩

Syllabus · ⁨Программа⁩
English

Learning Objective 1.14.A: Develop code to call instance methods and determine the result of these calls.

  • 1.14.A.1 Instance methods are called on objects of the class. The dot operator is used along with the object name to call instance methods.
  • 1.14.A.2 A method call on a null reference will result in a NullPointerException.
Русский

Цель обучения 1.14.A: Написать код для вызова методов экземпляра и определить результат этих вызовов.

  • 1.14.A.1 Методы экземпляра вызываются на объектах данного класса. Для вызова методов экземпляра используется точечный оператор вместе с именем объекта.
  • 1.14.A.2 Вызов метода на ссылке null приведет к возникновению ошибки NullPointerException.

Source: College Board AP Course and Exam Description · ⁨Источник: Описание курса и экзамена College Board AP⁩

English

An instance method 实例方法 acts on a specific object, so you call it on the object reference: object.method(args). Example: in.nextInt(), word.length().

Русский

Экземплярный метод действует на конкретный объект, поэтому вы вызываете его по ссылке на объект: object.method(args). Пример: in.nextInt(), word.length().

1.15

String Manipulation · ⁨Манипуляция со строками⁩

Syllabus · ⁨Программа⁩
Learning ObjectiveEssential Knowledge

1.15.A
Develop code to create string objects and determine the result of creating and combining strings.

  • 1.15.A.1 A String object represents a sequence of characters and can be created by using a string literal or by calling the String class constructor.
  • 1.15.A.2 The String class is part of the java.lang package. Classes in the java.lang package are available by default.
  • 1.15.A.3 A String object is immutable, meaning once a String object is created, its attributes cannot be changed. Methods called on a String object do not change the content of the String object.
  • 1.15.A.4 Two String objects can be concatenated together or combined using the + or += operator, resulting in a new String object. A primitive value can be concatenated with a String object. This causes the implicit conversion of the primitive value to a String object.
  • 1.15.A.5 A String object can be concatenated with any object, which implicitly calls the object's toString method (a behavior that is guaranteed to exist by the inheritance relationship every class has with the Object class). An object's toString method returns a string value representing the object. Subclasses of Object often override the toString method with class-specific implementation. Method overriding occurs when a public method in a subclass has the same method signature as a public method in the superclass, but the behavior of the method is specific to the subclass.
    • Exclusion statement: Overriding the toString method of a class is outside the scope of the AP Computer Science A course and exam.

1.15.B
Develop code to call methods on string objects and determine the result of calling these methods.

  • 1.15.B.1 A String object has index values from 0 to one less than the length of the string. Attempting to access indices outside this range will result in a StringIndexOutOfBoundsException.
  • 1.15.B.2 The following String methods—including what they do and when they are used—are part of the Java Quick Reference:
    • int length() returns the number of characters in a String object.
    • String substring(int from, int to) returns the substring beginning at index from and ending at index to - 1.
    • String substring(int from) returns substring(from, length()).
    • int indexOf(String str) returns the index of the first occurrence of str; returns -1 if not found.
    • boolean equals(Object other) returns true if this corresponds to the same sequence of characters as other; returns false otherwise.
    • int compareTo(String other) returns a value < 0 if this is less than other; returns zero if this is equal to other; returns a value > 0 if this is greater than other. Strings are ordered based upon the alphabet.
    • Exclusion statement: Using the equals method to compare one String object with an object of a type other than String is outside the scope of the AP Computer Science A course and exam.
  • 1.15.B.3 A string identical to the single element substring at position index can be created by calling substring(index, index + 1).

Source: College Board AP Course and Exam Description · ⁨Источник: Описание курса и экзамена College Board AP⁩

English
Strings are immutable

String objects are immutable 不可变 – methods return a new string rather than changing the original. Key methods (all indices start at 0):

Exam skill: substring(a, b) includes index a but excludes b, and String comparison must use .equals, not == – two of the most-tested String pitfalls.

Worked example. Let String s = "COMPUTER"; (indices 0–7). Then s.length() is 8; s.substring(0, 4) is "COMP" (indices 0,1,2,3 – index 4 excluded); s.substring(4) is "UTER" (from index 4 to the end); s.indexOf("PU") is 3; and s.indexOf("X") is -1 (not found). Counting the excluded endpoint of substring is the single most common slip.

Asking for an index outside 0 to length()-1 (a bad substring or charAt argument, e.g. s.substring(0, 20) here) crashes with a StringIndexOutOfBoundsException – the String cousin of the array-index error.

Русский
Строки неизменяемы

Объекты String являются неизменяемыми — методы возвращают новую строку, а не изменяют исходную. Ключевые методы (все индексы начинаются с 0):

s.length();            // number of characters
s.substring(2, 5);     // chars at index 2,3,4 (5 excluded)
s.indexOf("ab");       // first position, or -1
s.equals(other);       // content comparison (never use == for Strings)
s.compareTo(other);    // <0, 0, >0 by dictionary order

Навык экзамена: substring(a, b) включает индекс a, но исключает b, а сравнение строк должно выполняться через .equals, а не через == — это две наиболее часто встречающиеся ловушки при работе со строками на экзамене.

Разобранная задача. Пусть String s = "COMPUTER"; (индексы 0–7). Тогда s.length() равно 8; s.substring(0, 4) равно "COMP" (индексы 0,1,2,3 – индекс 4 исключен); s.substring(4) равно "UTER" (от индекса 4 до конца); s.indexOf("PU") равно 3; а s.indexOf("X") равно -1 (не найдено). Забытый конец диапазона в substring — самая частая ошибка.

Запрос индекса вне диапазона от 0 до length()-1 (плохой аргумент для substring или charAt, например, s.substring(0, 20) здесь) приводит к сбою с ошибкой StringIndexOutOfBoundsException — это «родственник» ошибки индекса массива для строк.

Индексы строк начинаются с 0
Индексы строк начинаются с 0
Explore · ⁨Исследовать⁩

Explore string indices and slicing · ⁨Исследуйте индексы строк и срезы⁩

Every character has an index, and the numbering starts at 0. Drag the start and end to see how substring(from, to) takes the characters from from up to — but not including — to. · ⁨Каждый символ имеет индекс, нумерация которого начинается с 0. Перетащите начало и конец, чтобы увидеть, как substring(from, to) выбирает символы от индекса from до (не включая) to.⁩

1.15

Exam tips · ⁨Советы для экзамена⁩

English
  • Trace code by hand line by line, tracking each variable's value in a table — the exam rewards careful tracing over guessing.
  • Know Java's primitive types and that integer division truncates ($7/2$ gives $3$); use a cast or a double for real division.
  • Distinguish compile-time errors (syntax, types) from run-time errors – know the named ones: ArithmeticException (int ÷ 0), NullPointerException (method on a null reference), StringIndexOutOfBoundsException / ArrayIndexOutOfBoundsException – and logic errors (wrong output).
  • Follow operator precedence and initialise every variable before you use it.
  • On the free-response, write complete, compilable Java — return the right type and match the method header exactly.
Русский
  • Отслеживайте код вручную построчно, фиксируя значение каждой переменной в таблице — на экзамене ценится внимательное отслеживание, а не догадки.
  • Знать примитивные типы Java и то, что целочисленное деление отбрасывает дробную часть ($7/2$ дает $3$); используйте приведение типа или double для реального деления.
  • Различайте ошибки компиляции (синтаксис, типы) и ошибки выполнения – знайте их названия: ArithmeticException (int ÷ 0), NullPointerException (метод на нулевой ссылке), StringIndexOutOfBoundsException / ArrayIndexOutOfBoundsException – и логические ошибки (неправильный вывод).
  • Соблюдайте приоритет операторов и инициализируйте каждую переменную перед её использованием.
  • В свободных ответах пишите полный, компилируемый код Java – возвращайте правильный тип и точно соответствуйте заголовку метода.

Interactive lessons on this topic · ⁨Интерактивные уроки по этой теме⁩

Work through it step by step, with instant-check exercises. · ⁨Пройдите его шаг за шагом с упражнениями мгновенной проверки.⁩

Past Papers · ⁨Архив экзаменационных работ⁩

More topics in AP Computer Science A · ⁨AP Информатика A⁩ · ⁨Больше тем в AP Computer Science A · ⁨AP Информатика A⁩⁩

Log in or create account · ⁨Войти или создать аккаунт⁩

IGCSE, A-Level & AP