看这样一个程序
public class test {
public static String getString(int i) {
return "" + i;
}
public static void main(String args[]) {
int col = 0;
String[] arr = new String[10];
while (col < 10) {
arr[col] = getString(++col);
}
for (String tmp : arr) {
System.out.println(tmp);
}
}
}
问题是:
arr[col] = getString(++col);
这句话第一次执行时,这里的=左右两边的col值,都是什么?
答案应该是arr[0] = getString(1)。这里左边的col 为0,右边的为1。
因为在给等号左边的变量赋值时,要先确定是哪个变量(变量都不确定如何赋值)。所以左边的先运算。确定col为0.然后再执行右边的操作,再把操作的结果赋值给左边的变量。所以arr[col]确定的时候,右边的++col还没运行。
再来看下面的例子:
public class test {
public static String getString(int i) {
return "" + i;
}
public static void main(String args[]) {
int col = 0;
int i = 0;
String[] arr = new String[10];
arr[++col] = getString(++col);
for (i = 0 ; i < 10; i++) {
System.out.println(i+":"+arr[i]);
}
}
}
你觉得这句代码的结果是什么呢?
arr[++col] = getString(++col);
答案是arr[1] = 2,原因同上。
总结:总是先确定需要赋值的变量再运行=右边的赋值语句
分享到:
相关推荐
一个简单的Java词法分析器可能会包含一个循环,不断地从输入缓冲区取出字符,根据当前状态和字符匹配正则表达式,更新状态,并可能生成记号。例如,处理数字时,从读取的第一个数字字符开始,直到遇到非数字字符为止...
这个压缩包中的“Math”文件很可能包含了一系列与数值分析相关的Java程序,虽然没有注释,但我们可以根据Java的常用库和数值分析的基本概念来解析这些程序可能涉及的知识点。 首先,数值分析是应用数学的一个分支,...
Java词法分析程序是编程语言编译器或解释器中的一个重要组成部分,它的主要任务是对源代码进行初步处理,将源代码中的字符流转化为有意义的符号序列,这些符号被称为token。词法分析是编译过程的第一步,它为语法...
在这个Java程序中,`lexicalAnalysis`可能是源代码文件夹,包含实现词法分析功能的Java类和其他辅助文件。这些文件可能包括主程序、状态机定义、测试用例以及可能的配置文件。 了解词法分析的原理对于理解编译器的...
java游戏小程序代码分析java游戏小程序代码分析java游戏小程序代码分析java游戏小程序代码分析java游戏小程序代码分析java游戏小程序代码分析java游戏小程序代码分析java游戏小程序代码分析java游戏小程序代码分析...
Java程序由类组成,每个类都包含方法和变量,通过编译成字节码后,可以在Java虚拟机(JVM)上运行。 二、语法解析 分析Java源代码的第一步是语法解析,这是将源代码转换为抽象语法树(AST)的过程。AST是一种树状...
这个Java程序不仅是一个学习工具,也是一个实用的编译原理教学辅助工具。学生可以通过修改和扩展这个程序,深入理解词法分析和语法分析的原理,提高编程和问题解决能力。同时,它的GUI界面使得用户交互更加友好,使...
总之,Java版的语法分析程序是一个用于理解和表示源代码结构的关键工具,它利用了Java的强大功能和Swing的可视化特性,为开发者提供了一个直观的方式来理解和调试代码。这样的工具对于教学、软件开发以及编译器设计...
`main`方法是Java程序执行的起点,它接收一个字符串数组作为参数,并在控制台输出结果或进行其他操作。 在描述中提到,这个计算器程序“很简单”,这可能意味着它采用了基本的算术运算符(如+,-,*,/)来实现加、...
预处理对象是 Java 词法分析器的一个组成部分,负责对 Java 源代码进行预处理。它将 Java 源代码转换为 Token 序列,以便进行词法分析。 4. 关键字表对象 关键字表对象是 Java 词法分析器的一个组成部分,负责存储...
在给定的标题"java程序自动重新启动"中,我们可以理解这是一个实现了自动重启逻辑的Java程序。描述指出,这个程序由三个.java文件组成:Test.java、Watch.java和AbstractRun.java,它们构成了一个简单的自动重启系统...
编译原理实验写的一份小型词法分析程序,具体掌握基本分析方法,此程序是对源代码的一次分析,可能输出的有点多.
在Java中,我们需要为每个非终结符设计一个递归子程序。这些子程序通常以方法的形式存在,它们接受输入的符号流,根据文法规则进行匹配,并返回一个表示当前非终结符的AST节点。例如,对于一个表达式非终结符,我们...
在Java编程环境中,我们可以创建一个词法分析程序来处理Java源代码。这个程序通常由两部分组成:用户界面和词法分析引擎。用户界面允许用户输入Java语句,而词法分析引擎则负责处理这些输入,识别出各种不同的单词...
总之,这个简单的JAVA词法分析程序为我们提供了一个理解编译原理和JAVA编程实践的实例。通过阅读源代码,我们可以学习到如何用JAVA实现词法分析器,掌握状态机的设计,以及如何处理源代码中的各种元素。使用说明文档...
编制语法分析程序,要求能将词法分析输出的单词文件用给定的语法规则书写的源程序进行语法分析,输出相应的语法分析结果和错误信息。 关于错误信息:不要求错误种类,只需给出出错位置. 简单的表达式文法如下: E...
本次试验需要编写一个学生考试成绩分析程序,至少具有这些功能:基本数据输入,能够建立并且输入班级、学生、课程和成绩单的信息,指定特定的班级和课程后,能够输出该班的所有学生的成绩,通过这个方法可以查询学生...
词法分析是编译器的第一步,它的任务是从源代码中识别出一个个有意义的符号,称为“标记”(Token)。在PL0语言中,这些标记可能包括关键字(如`if`、`then`等)、标识符(变量名)、运算符(`+`、`-`等)以及常量...
班级:程序要求处理若干班级,每个班级包含的属性有:年级、专业、班和若干学生 学生:每个班级包含多名学生,学生的属性有:学号和姓名 课程:程序中可以处理多门课程的属性:课程编号、名称、学分、学时 成绩单:...
《Java开发典型模块大全》一书中提供的"09决策分析程序"源代码,显然是为了帮助读者理解如何在Java环境中实现这类功能。下面我们将深入探讨Java在决策分析中的应用,并结合书中的经典案例进行解析。 首先,决策分析...