在创建应用程序的阶段,开发人员通常只知道其结构,并不假设它将处理哪些数据。然而,在某些情况下,您需要在程序代码中显式指定一些数据(例如迭代次数或要输出的消息)。在这种情况下,文字就可以派上用场。 内容:
什么是文字?
文字是程序代码中显式指定的值 - 启动时代码中的某种类型的常量。class Test {
public static void main(String[] args) {
System.out.println("Hello world!");
}
}
在本课程中“Hello world!” - 字面意思。文字有不同的类型,由它们的目的和编写方式决定。
文字的类型及其用途
所有文字都是原始值(字符串、数字、字符、布尔值)。您无法创建文字对象。与对象关联的唯一文字是null
。根据原语,文字也分为几个部分:
- 数字:
- 整数;
- 浮点;
- 细绳;
- 特点;
- 脑筋急转弯。
数字文字
整数文字
这种类型的文字是最简单的。数字以其标准形式书写,不指示字符或其他任何内容。默认情况下,任何整数都是整数文字。也就是说,您可以显式设置变量的值或循环中的迭代次数。Java 支持 4 种数字系统:- 二进制
- 八进制
- 十进制
- 十六进制
public static void main(String[] args) {
int a = 0b1101010110;
int b = 012314;
int c = 456;
int d = 0x141D12;
System.out.println("Число a в двоичной системе: " + a);
System.out.println("Число b в восьмеричной системе: " + b);
System.out.println("Число c в десятичной системе: " + c);
System.out.println("Число d в шестнадцатеричной системе: " + d);
}
输出: 二进制数 a:854 八进制数 b:5324 十进制数 c:456 十六进制数 d:1318162 尽管数字在不同的数制中指定,但在程序中它们都按十进制处理数字。超过该值将导致编译错误:
int b = 012914; // Ошибка
int d = 0x141Z12; // Ошибка
当在编译阶段运行时,我们得到以下结果:
Error:(13, 25) java: integer number too large: 012914
Error:(14,30) java: ';' expected
打字呢?任何整数文字都有默认类型int
. 如果其值超出指定变量的范围,则会发生编译错误。使用类型时,long
必须在末尾添加一个符号L
来指示该类型:
long x = 0x1101010110; // Ошибка
long b = 1342352352351351353L; // Все в порядке
尝试编译会出现以下错误:
Error(11, 26) java: integer number too large: 1101010110
浮点文字
浮点数或小数可以用两种方式编写。 第一个是经典的小数:3.14159 或 2.718281282459045。 第二种是科学形式,即普通小数加上符号 e 或 E 形式的后缀以及指定分数必须乘以的 10 次方。例如,4.05E-13,这意味着 4.05 * 10 -13。double a = 2.718281828459045;
double d = 4.05E-13;
System.out.println("Тип double в классическом виде: " + a);
System.out.println("Тип double в научном виде: " + d);
输出: 经典双精度类型:2.718281828459045 科学双精度类型:4.05E-13 与整数和数字系统不同,科学记数法存储在变量中,并以与经典记数法相同的方式进行处理。打字呢?任何浮点数都会创建一个类型double
。如果需要使用类型float
,则必须在末尾添加f
or F
。在这种情况下,double
它将被简化为类型float
。这不会自动发生:
float a = 2.718281828459045; // Ошибка
float d = 4.05E-13F; // Все в порядке
当从编译阶段开始时,我们看到以下错误:
Error:(11, 27) java: incompatible types: possible lossy conversion from double to float
字符串文字
字符串文字是用双引号括起来的一组字符。这种类型的使用频率与数字文字一样。该行还可能包含需要转义的服务字符(所谓的转义序列)。例子:String simpleString = "Это обычная строка. Такая же стандартная и непримечательная, How и все мы.";
String uniqueString = "А это необычная \"строка\". Хотя бы потому, что часть \"слов\" в ней в \"кавычках\".";
System.out.println(simpleString);
System.out.println(uniqueString);
输出: 这是一个正常的字符串。和我们其他人一样标准且不起眼。这是一条不寻常的“线”。如果只是因为其中的一些“单词”在“引号”中。
字符文字
Java中的字符字面量是用Unicode字符集表示的,即每个字符都是一个16位的值。为了在代码中指示符号,它用单引号分隔。根据经验,有两种类型的符号:- 可以从键盘输入的都是普通字符;
- 无法简单地从键盘输入的符号(各种语言、形状等的符号)。
,
”或“ @
”。如果字符是服务字符(例如换行符或制表符),则必须使用反斜杠转义此类字符。不能简单地从控制台输入的字符可以以其 16 位形式指定。为此,您必须指定带有前缀的字符代码\u
,例如“ \u00F7
”。您还可以通过在开头添加反斜杠来指定八进制样式(三位数)的字符,例如“ ” \122
。在我看来,它更容易使用\u
。使用示例:
System.out.println("Амперсанд - " + '&');
System.out.println("Символ деления - " + '\u00F7');
输出: & 符号 - & 除号 - ÷
布尔文字
最简单的文字是逻辑文字。只有 2 个值:false
和true
,它们是明确指定的,没有各种符号。这些文字可以分配给 boolean 类型的变量,或者在需要 boolean 类型的地方指定(例如,在 if 块中,虽然这种做法被认为是不好的举止,但温和地说)。
boolean flag = false;
if(true) {
// Действия будут выполняться всегда.
}
绝地武士技术与文字
借助 Java 中的符号,您可以做许多有趣的事情,包括管理表情符号。例如,让我们显示一张笑脸:int smile = 0x1F600; // Здесь шестнадцатеричный code эмоджи
StringBuilder sb = new StringBuilder();
sb.append(Character.toChars(smile)); // Собираем в StringBuilder
System.out.println("Улыбающееся лицо: " + sb.toString()); // Выводим
结论: 笑脸: 😀 虽然表情符号的显示可能令人毛骨悚然(取决于实现),但这个解决方案做得很好。然而,在标准编码表中很难搜索到所需的表情符号;官网的表情符号部分也稀疏。使用附加库要容易得多。
GO TO FULL VERSION