Java-Chapter 2 Elementary Programming

中英对照表极速版

英文 中文
A named constant is declared by using the keyword final. By convention, constants are named in uppercase. 使用关键字 final 声明命名常量。按照惯例,常量的名称采用大写字母。
An identifier is a sequence of characters that consist of letters, digits, _, $. It cannot start with a digit. It cannot be a keyword. 标识符是由字母、数字、_$ 组成的字符序列。它不能以数字开头,不能是关键字。
A literal is a constant value of boolean, numeric, character, or string data which can be assigned to the variable. 字面量是布尔值、数字、字符或字符串数据的常量值,可以赋值给变量。
Java provides four integer types (byte, short, int, long) that represent integers of four different sizes. Java 提供了四种整数类型(byteshortintlong),表示四种不同大小的整数。
Java provides two floating-point types (float, double) that represent floating-point numbers of two different precisions. Note: The arithmetic of floating-point data is not accurate. Java 提供了两种浮点类型(floatdouble),表示两种不同精度的浮点数。注意:浮点数据的运算不准确。
Character type (char) represents a single character. 字符类型(char)表示一个单一字符。
Java provides operators that perform numeric operations: + (addition), - (subtraction), * (multiplication), / (division), and % (remainder). Java 提供了执行数字运算的运算符:+(加法),-(减法),*(乘法),/(除法)和 %(余数)。
Java provides shorthand operators += (addition assignment), -= (subtraction assignment), *= (multiplication assignment), /= (division assignment), and %= (remainder assignment). Java 提供了简写运算符 +=(加法赋值),-=(减法赋值),*=(乘法赋值),/=(除法赋值)和 %=(余数赋值)。
The increment operator (++) and the decrement operator (--) increment or decrement a variable by 1. 自增运算符(++)和自减运算符(--)将变量增加或减少 1。
When evaluating an expression with values of mixed types, Java automatically converts the operands to appropriate types. 当评估具有混合类型值的表达式时,Java 会自动将操作数转换为适当的类型。
Casting a variable of a type with a small range to a variable of a type with a larger range is known as widening a type. 将一个小范围类型的变量转换为大范围类型的变量称为类型的扩展。
Casting a variable of a type with a large range to a variable of a type with a small range is known as narrowing a type. 将一个大范围类型的变量转换为小范围类型的变量称为类型的收窄。
Widening a type can be performed automatically without explicit casting. Narrowing a type must be performed explicitly. 扩展类型可以自动执行,无需显式转换。收窄类型必须显式执行。
You can explicitly convert a value from one type to another using the (type)exp notation. 可以使用 (type)exp 表示法显式地将一个值从一种类型转换为另一种类型。

问题 1:如何声明一个常量,并且常量的命名规则是什么?

答案:常量通过 final 关键字声明,按照惯例,常量的名称使用大写字母。
解释
在 Java 中,使用 final 关键字声明常量,表示该变量的值一旦赋值后就不能修改。例如:

1
final int MAX_SIZE = 100;

根据命名约定,常量的名称通常使用大写字母,多个单词之间用下划线分隔,如 MAX_SIZE


问题 2:什么是标识符,Java 中标识符的命名规则是什么?

答案:标识符是由字母、数字、下划线(_)和美元符号($)组成的字符序列。标识符不能以数字开头,且不能是 Java 的关键字。
解释
Java 标识符用于命名变量、类、方法等,它们必须遵循以下规则:

  1. 只能由字母、数字、下划线(_)和美元符号($)组成。
  2. 不能以数字开头。
  3. 不能是 Java 的关键字(例如 class, if, int 等)。

例如,_myVariablemyVariable$ 都是有效的标识符,而 123variableif 是无效的标识符。


问题 3:什么是字面量?

答案:字面量是可以直接赋值给变量的常量值,具有布尔值、数字、字符或字符串的数据类型。
解释
字面量是程序中直接表示固定值的常量,它不需要计算,直接赋值给变量。例如:

  • 整数字面量:5-123
  • 浮动点字面量:3.14-0.001
  • 字符字面量:'A'
  • 布尔字面量:truefalse
  • 字符串字面量:"Hello, World!"

问题 4:Java 提供了哪些整数类型?每种类型的大小是多少?

答案:Java 提供了四种整数类型:byteshortintlong,它们代表不同大小的整数。
解释

  • byte:占 1 字节(8 位),表示的整数范围是 -128 到 127。
  • short:占 2 字节(16 位),表示的整数范围是 -32,768 到 32,767。
  • int:占 4 字节(32 位),表示的整数范围是 -2^31 到 2^31-1。
  • long:占 8 字节(64 位),表示的整数范围是 -2^63 到 2^63-1。

问题 5:Java 提供了哪些浮点类型?它们分别表示什么精度的浮点数?

答案:Java 提供了两种浮点类型:floatdouble,分别表示不同精度的浮点数。
解释

  • float:占 4 字节(32 位),用于表示单精度浮点数,精度约为 6 到 7 位有效数字。
  • double:占 8 字节(64 位),用于表示双精度浮点数,精度约为 15 到 16 位有效数字。

注意:浮点类型的数据运算可能会出现精度问题,因为浮点数无法精确表示所有的小数。


问题 6:Java 中如何进行算术运算?

答案:Java 提供了加法(+)、减法(-)、乘法(*)、除法(/)和取余(%)等算术运算符。
解释
Java 提供了标准的算术运算符,用于处理数字类型的数据:

  • +:加法运算符,用于计算两个数的和。
  • -:减法运算符,用于计算两个数的差。
  • *:乘法运算符,用于计算两个数的积。
  • /:除法运算符,用于计算两个数的商。
  • %:取余运算符,用于计算两个数的余数。

例如:

1
2
3
4
5
int sum = 5 + 3;  // sum = 8
int difference = 5 - 3; // difference = 2
int product = 5 * 3; // product = 15
int quotient = 5 / 3; // quotient = 1
int remainder = 5 % 3; // remainder = 2

问题 7:什么是简写运算符?Java 中有哪些简写运算符?

答案:简写运算符是对标准运算符的简化,用于在变量上直接执行运算并将结果赋值给该变量。
解释
Java 提供了简写运算符,使得某些运算更加简洁:

  • +=:加法赋值运算符,用于将一个值加到变量上并赋值给变量。
  • -=:减法赋值运算符,用于将一个值从变量中减去并赋值给变量。
  • *=:乘法赋值运算符,用于将一个值与变量相乘并赋值给变量。
  • /=:除法赋值运算符,用于将一个值除以变量并赋值给变量。
  • %=:取余赋值运算符,用于将变量与一个值进行取余运算并赋值给变量。

例如:

1
2
3
4
5
6
int x = 5;
x += 3; // x = 8
x -= 2; // x = 6
x *= 2; // x = 12
x /= 3; // x = 4
x %= 3; // x = 1

问题 8:什么是自增和自减运算符?

答案:自增运算符(++)将变量的值增加 1,自减运算符(--)将变量的值减少 1。
解释

  • 自增运算符(++):将变量的值增加 1。它有两种形式:
    • 前缀自增:++x,先增加值,再使用。
    • 后缀自增:x++,先使用值,再增加。
  • 自减运算符(--):将变量的值减少 1。它也有前缀和后缀两种形式:
    • 前缀自减:--x,先减少值,再使用。
    • 后缀自减:x--,先使用值,再减少。

例如:

1
2
3
4
5
int a = 5;
a++; // a = 6
++a; // a = 7
a--; // a = 6
--a; // a = 5

问题 9:当在混合类型的表达式中评估值时,Java 是如何处理操作数的类型转换的?

答案:Java 会自动将操作数转换为适当的类型。
解释
当 Java 表达式中的操作数具有不同的数据类型时,Java 会自动进行类型转换,确保所有操作数具有相同的类型。这个过程叫做自动类型提升(implicit type conversion)。例如,如果一个 int 和一个 double 进行运算,int 会自动转换为 double,因为 double 的精度范围更大。 例如:

1
2
3
int a = 5;
double b = 2.5;
double result = a + b; // a 会自动转换为 double

问题 10:什么是类型扩展(widening)

答案:将一个小范围类型的变量转换为一个大范围类型的变量,称为类型扩展(widening)。
解释
类型扩展是指将一个较小范围的类型(如 byte, short, int)转换为一个更大范围的类型(如 long, float, double)。这种转换是自动进行的,不需要显式的类型转换。例如:

1
2
int a = 100;
long b = a; // 自动将 int 转换为 long

在这个例子中,int 被自动转换为 long,这是因为 long 的范围大于 int


问题11:什么是类型收缩(narrowing)

答案:将一个大范围类型的变量转换为一个小范围类型的变量,称为类型收缩(narrowing)。
解释
类型收缩是指将一个较大范围的类型(如 double, long)转换为一个更小范围的类型(如 int, short, byte)。这种转换必须通过显式类型转换进行,编译器不会自动进行类型收缩。例子:

1
2
double a = 10.5;
int b = (int) a; // 必须显式将 double 转换为 int

在这个例子中,double 类型的 a 被显式转换为 int 类型,这样会丢失小数部分。


问题 12:类型扩展是否需要显式转换?类型收缩需要显式转换吗?

答案:类型扩展不需要显式转换,类型收缩需要显式转换。
解释

  • 类型扩展(widening):由于 Java 会自动将小范围的类型提升为大范围类型,因此不需要显式的类型转换。例如,int 可以自动转换为 long
  • 类型收缩(narrowing):Java 不会自动将大范围的类型转换为小范围类型,因为这可能导致数据丢失。因此,类型收缩必须使用显式的类型转换(强制转换)。例如,将 double 转换为 int,必须显式地写出 (int)

问题 13:如何显式地将一个值从一种类型转换为另一种类型?

答案:可以使用 (type)exp 语法进行显式类型转换。
解释
Java 允许你显式地将一个值从一种类型转换为另一种类型,方法是使用括号括起来的目标类型作为前缀。例如:

1
2
double a = 10.5;
int b = (int) a; // 显式转换 double 为 int

在这个例子中,(int) 表示将 double 类型的 a 强制转换为 int,这会丢失小数部分。