Java 里的名字
你想让一行书写显示一个名字正保存的那个词。上一页里,词写在书写行自己的引号中间,所以改屏幕就是改那一行。这一页你给词一个名字,plant,书写行使用这个名字。引号挪到保存这个词的那一行。System.out.println(plant) 没有引号,屏幕仍然显示 leaf。你不是在重新安装 Java。你不是在加一条注释,也不是在学结束一行的第二种办法。你已经知道 println 写出字母并结束这一行。新的工作是保存这些字母的名字。
一个名字保存字母
打开 Mint.java。文件名仍是 Mint.java,因为 public class Mint 仍是文件的名字。这一页不给文件改名,也不改 public class Mint 这一行。在 main 里面、书写行的上面,加一行,创建名字并在里面保存一个词:String plant = "leaf";。String 表示这个名字保存字母。plant 是名字,以小写 p 开头。= 保存这个词。引号里是 leaf,全是小写,和上一页放在书写行上的词相同。分号结束这一行。然后改书写行,让它不再有引号。它变成 System.out.println(plant);。名字 plant 是裸的。p 前面没有引号,t 后面也没有。保存文件。
你保留的文件
把这段存成 Mint.java。这是这一页要保留的文件。名字 plant 保存单词 leaf。书写行使用这个名字,里面没有引号。
public class Mint {
public static void main(String[] args) {
String plant = "leaf";
System.out.println(plant);
}
}
从上往下读,判断屏幕能显示什么。public class Mint 给文件起名。它不写屏幕。public static void main(String[] args) 是 Java 开始的地方。这些词里没有一个是给屏幕的字母。main 那一行里的 String 不是下一行的 String。main 那一行是开头。下一行才是创建名字的行。String plant = "leaf"; 把字母 l、e、a、f 保存在名字 plant 里。这一行不把这些字母写到屏幕上。保存不是书写。到这一行结束,屏幕仍然是空的。它后面的一行,System.out.println(plant);,才是书写行。Java 读名字 plant,写出这个名字保存的字母,并结束这一行。屏幕显示 leaf。一行。没有引号。名字自己的字母 plant 不在屏幕上。System 不在屏幕上。分号不在屏幕上。
按原来的办法运行。在放着这份 Mint.java 的文件夹里输入 javac Mint.java。文件没问题时,这条命令不写任何一行。文件里有名字,不会让 javac 写出一行,也不会让它失败。然后输入 java Mint。java 后面不要写 .java。屏幕显示 leaf。如果屏幕显示 plant,书写行里 plant 的两边有引号。你保留的文件不是这样。如果屏幕仍显示 mint,保存的词仍是 mint,或者书写行仍是 System.out.println("mint");。看 String 那一行引号中间的字母,再看书写行是不是用了裸名字。屏幕显示错了词,不要因此重新安装 Java。
改词,书写行留在原处
名字的用处是书写行可以留在原处,保存的词可以改。在第一行书写的下面,把一个新词保存进同一个名字,然后再写一次这个名字。新的保存行是 plant = "stem";。它不以 String 开头。plant 已经存在,所以这一行只替换名字保存的字母。stem 换掉 leaf,全是小写。下一行书写又是 System.out.println(plant);。它和第一行书写的样子相同。屏幕现在有两行,因为每个 println 都结束自己的一行。第一行是 leaf,就是名字当时保存的字母。第二行是 stem,就是 plant = "stem"; 之后名字保存的字母。
这是第二份文件。它不是你保留的文件。你保留的文件有一行保存、一行书写,屏幕是 leaf。想看词被改掉时,把这份第二文件存成 Mint.java,看完再把单独的保存行和单独的书写行放回去。
public class Mint {
public static void main(String[] args) {
String plant = "leaf";
System.out.println(plant);
plant = "stem";
System.out.println(plant);
}
}
在同一个文件夹里输入 javac Mint.java。文件没问题,所以 javac 不写任何一行。第二行保存可以不写 String,这个省略不会让 javac 失败。然后输入 java Mint。屏幕显示 leaf,屏幕的下一行是 stem。两行。leaf 在上面,因为第一个 System.out.println(plant); 运行时 plant 仍保存着 leaf。stem 在下面,因为第二个 System.out.println(plant); 在 plant = "stem"; 之后运行。名字 plant 不在屏幕的两行里。如果屏幕两行都是 leaf,第二行保存缺了,或者它仍写着 "leaf"。如果两行都是 stem,第一行保存已经写着 "stem",或者第一行书写在改词的下面。屏幕跟着文件里各行的顺序。后面一行保存了新词之后,旧词不会留下,在那一行保存运行之前,屏幕也不会跳到 stem。
不要给同一个名字再写一次 String。在已经创建过 plant 的行下面写 String plant = "stem"; 是另一种错误。那一行试图再创建一次 plant。javac 会写出错误,不会保持安静。你不需要记住那条错误的原文。有用的事实是 javac 写了一行,所以先不要输入 java Mint。改法是删掉第二个 String,留下 plant = "stem";。名字只创建一次。后面的行只改它保存的字母。你保留的文件里根本没有第二行保存。看到 leaf 再看到 stem 之后,把文件放回去:一行 String plant = "leaf"; 和一行 System.out.println(plant);。
名字两边的引号写出的是名字
你保留的文件里,书写行是 System.out.println(plant);,没有引号。如果把引号放在名字两边,这一行就变成 System.out.println("plant");。这些引号和上一页的引号做同一件事。它们标出给屏幕的字母。中间的字母是 p、l、a、n、t。Java 不去找这个名字,因为引号里的词不是名字。上面一行里名字 plant 仍可以保存 leaf,屏幕照样显示 plant。保存的词 leaf 不会被写出来,因为书写行根本没有使用这个名字。它使用的是引号里一个拼写和名字一样的词。
这是第三份文件。它不是你保留的文件。只保存到你看见单独一行 plant,然后去掉书写行上的引号。
public class Mint {
public static void main(String[] args) {
String plant = "leaf";
System.out.println("plant");
}
}
输入 javac Mint.java。文件没问题,所以 javac 不写任何一行。plant 两边的引号是允许的。它们不会让 javac 失败。它们也不会让屏幕显示保存的词。然后输入 java Mint。屏幕显示 plant。一行。没有引号。不是 leaf。不是 stem。如果你要的是 leaf,书写行必须是裸名字 System.out.println(plant);。引号在保存行上,围着 leaf,不在书写行上围着名字。保存用的引号里面的空格也会被保存。String plant = "leaf "; 在 f 后面有一个空格,会让 System.out.println(plant); 写出 leaf 再加后面的空格。你保留的文件没有这个空格。你保留的文件的屏幕是 leaf,四个字母,然后这一行结束。
名字必须先存在
Java 从上往下读文件。创建名字的行必须在使用名字的行上面。如果你先放 System.out.println(plant);,再写 String plant = "leaf";,书写行在 plant 存在之前就使用了名字 plant。javac 会写出错误。它不会保持安静。没有屏幕可读,因为 javac 写出错误时你不要输入 java Mint。改法是把 String 那一行放回书写行的上面。文件里的顺序就是 Java 阅读的顺序。名字不能用在创建它的那一行更靠上的地方。
这份第四文件的顺序是坏的。它不是你保留的文件。只保存到 javac 写出错误,然后把 String 那一行放回上面。
public class Mint {
public static void main(String[] args) {
System.out.println(plant);
String plant = "leaf";
}
}
输入 javac Mint.java。javac 写出错误。不要输入 java Mint。你不需要记住错误的原文。有用的事实和上一页引号缺了的时候一样:javac 写了一行,所以文件有问题。把 String plant = "leaf"; 放到 System.out.println(plant); 上面。保存。再输入一次 javac Mint.java。现在 javac 不写任何一行。然后 java Mint 显示单词 leaf。名字 leaf,文件里任何地方都没有 String leaf 这一行,仍然是错误,而且是另一种错误。System.out.println(leaf); 要的是一个叫 leaf 的名字。这份文件不创建那个名字。它创建的名字叫 plant,保存在里面的词是 leaf。词和名字不是同一串字母。把引号放回书写行上的 leaf 两边,System.out.println("leaf");,也会让 javac 保持安静,但那样就回到上一页了。这一页让书写行上是裸名字,让引号留在保存行上。
你现在可以把一个词保存在名字里,并写出这个词,而不必把词本身放在书写行上。String plant = "leaf"; 保存 leaf。System.out.println(plant); 写出 leaf 并结束这一行。后面的 plant = "stem"; 改掉保存的词,后面同一个名字的 println 写出 stem。名字两边的引号写出的是名字的字母。创建的那一行必须在第一次使用名字的上面。下一页读取你在程序运行时键入的一个词,并把那个词保存在一个名字里,这样屏幕可以显示文件引号里没有写过的字母。
屏幕是名字保存的那个词
你保留的文件写出 leaf。书写行上的名字是 plant,plant 不在屏幕上。引号在保存行上,围着 leaf。一个 println 是一行。在两行 println 之间改掉保存的词,只改屏幕的第二行。
🧠 测试您的知识
测试您的知识
通过这个互动测验挑战自己,看看你对这个主题的理解程度如何
📝 说明
- 仔细阅读每个问题
- 为每个问题选择最佳答案
- 您可以随时重新参加测验
- 您的进度将显示在顶部