`
vortexchoo
  • 浏览: 66861 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

java--for

    博客分类:
  • java
 
阅读更多
今天碰到一好玩的问题,不幸答错,在此坐下笔记。
虽然工作的时间不短了,却被一个for循环拿下,先鄙视下自己。
public class ForTest {

static boolean order(char c) {
        System.out.print(c);
        return true;
    }
   
    public static void main(String[] args) {
        int i = 0;
        for (order('A'); order('B') && (i < 2); order('C')) {
            i++;
            order('D');
        }
       
    }
}
问以上代码能运行么,如果不能又是为什么?
平时写惯了for(int i;i<xxx;i++) 也写了很多for(Object o:list<Object>),此时才发现,自己是小白啊。

以上代码是可以运行的,输出结果是:ABDCBDCB

为什么如此?

联想一下for(int i=0;i<3;i++)这个大家都会写的写法。
for循环的执行顺序就出来了。
第一次循环:
首先执行 order('A') 打印A,接着做逻辑运算:order('B')&&(i<2) 只要做逻辑运算,那么B就一定会被打印,第一次的时候不会执行到order('C')
这里第一次就执行完毕了,此时由于i++,i变成了1。
第二次循环:
这个时候会以order('C')作为起始的执行点(就像for(int i=0;i<3;i++) 第二次循环的时候是以i++的值开始一样)那么C会被打印,接着是做逻辑运算,B会被打印。最后是进入循环体,打印D,然后执行了i++,此时i=2。
即第二次之后后面的循环起始就都变为了order('C'),那么第三次 C首先被打印,接着是逻辑运算B会被打印,但此时的逻辑运算不能满足要求了,因为i=2 不再 小于2了 因此D不会被打印。固结果为:ABDCBDCB
分享到:
评论
1 楼 quainter 2015-07-31  
	for(a;b;c){
		d;
	}

1.第一次循环先执行a,然后执行b的判断条件,满足条件则执行循环体d,
之后再执行c,第一次循环执行完成。
2.第二次循环则不再执行a,直接执行b的判断条件,满足条件则再次执行循环体d,
之后再执行c
3.第三次循环同样不执行a,直接执行b的判断条件,.....................
所以,for循环也可以写成这样:
	for(a;b;){
		d;
		c;
	}

相关推荐

    aws-java-sdk-core-1.11.939-API文档-中文版.zip

    赠送jar包:aws-java-sdk-core-1.11.939.jar 赠送原API文档:aws-java-sdk-core-1.11.939-javadoc.jar 赠送源代码:aws-java-sdk-core-1.11.939-sources.jar 包含翻译后的API文档:aws-java-sdk-core-1.11.939-...

    aws-java-sdk-core-1.12.160-API文档-中英对照版.zip

    赠送jar包:aws-java-sdk-core-1.12.160.jar; 赠送原API文档:aws-java-sdk-core-1.12.160-javadoc.jar; 赠送源代码:aws-java-sdk-core-1.12.160-sources.jar; 赠送Maven依赖信息文件:aws-java-sdk-core-1.12....

    Aspose.Diagram-for-Java-master.zip

    这个"Aspose.Diagram-for-Java-master.zip"压缩包包含了Aspose.Diagram官方提供的Java示例代码,对于正在学习或者使用Aspose.Diagram的开发者来说,是一份非常有价值的参考资料。 在解压这个文件后,我们主要会看到...

    谷歌java格式-重新格式化 Java 源代码以符合 Google Java 风格

    谷歌java格式 google-java-format是一个重新格式化 Java 源代码以符合 Google Java Style的程序。 使用格式化程序 从命令行 下载格式化程序 并运行它: java -jar /path/to/google-java-format-${GJF_VERSION?}-all...

    mysql-connector-java-5.1.5-bin.jar mysql-connector-java-5.1.40-bin

    MySQL Connector/J是MySQL数据库系统与Java应用程序之间的桥梁,它是一个实现了Java Database Connectivity (JDBC) API的驱动程序,使得Java开发者能够轻松地在Java应用程序中连接到MySQL数据库。标题中的"mysql-...

    mysql-connector-java-5.6-bin.jar

    支持mysql-connector-java-5.6,mysql-connector-java-5.0.X以上

    mysql-connector-java-5.1.37-jar

    MySQL Connector/J是MySQL数据库与Java应用程序之间的重要桥梁,它是一个实现了Java Database Connectivity (JDBC) API的驱动程序,使得Java开发者能够方便地在Java应用中访问MySQL数据库。本资源提供的"mysql-...

    Android代码-rx-java-extensions

    This library allow simple implementation for some tasks in android Usage Add library to project dependencies. repositories { maven { url "https://jitpack.io" } } dependencies { // snapshot ...

    Java-for-Anylogic-user译文

    本资源原文为java-for-Anylogic-user英文版,即面向Anylogic用户的Java开发,本人纯手工翻译,讲述以拖放方式以外的编程思路,对于建立复杂系统有很大帮助。这是一个信息论,可以在模型中进行数据操作以及智能体的...

    mysql-connector-java-5.1.7-bin.jar

    为了在Java环境中与MySQL数据库进行交互,我们需要一个中间桥梁,这就是所谓的JDBC(Java Database Connectivity)驱动。"mysql-connector-java-5.1.7-bin.jar" 文件就是这个桥梁,它是一个Java归档(JAR)文件,...

    mysql-connector-java-5.1.7-bin.zip

    2. **建立连接**:在Java代码中,可以通过`Class.forName()`方法加载JDBC驱动,然后使用`DriverManager.getConnection()`创建数据库连接。例如: ```java Class.forName("com.mysql.jdbc.Driver"); Connection ...

    mysql-connector-java-5.1.47 jar包

    然后,应用程序通过调用`Class.forName()`方法加载MySQL的JDBC驱动。接着,`DriverManager.getConnection()`方法被用来创建数据库连接,传入包含数据库URL、用户名和密码的参数。一旦连接建立,就可以通过`Statement...

    fastdfs-client-java-1.29-SNAPSHOT.jar

    解决 Maven 无法下载 fastdfs-client-java-1.29-SNAPSHOT 依赖,直接下载之后用maven命令存储到本地maven仓库即可。 maven命令 mvn install:install-file -DgroupId=org.csource -DartifactId=fastdfs-client-java ...

    MySQL-connector-java-8.0.28

    MySQL-connector-java-8.0.28 是MySQL数据库与Java应用程序之间通信的重要组件,它是一个JDBC(Java Database Connectivity)驱动程序,使得Java开发者能够通过编写Java代码来访问和操作MySQL数据库。在这个版本中,...

    mysql-connector-java-5.1.7 jar包

    MySQL是世界上最流行的开源关系型数据库管理系统之一,而`mysql-connector-java-5.1.7.jar`是MySQL官方为了使得Java应用程序能够连接到MySQL数据库而提供的JDBC(Java Database Connectivity)驱动程序。JDBC是Java...

    mysql-connector-java-8.0.21.zip

    - 在Java代码中使用`Class.forName("com.mysql.cj.jdbc.Driver")`加载驱动。 - 使用`Connection conn = DriverManager.getConnection(url, username, password)`建立与MySQL数据库的连接。 - 执行SQL查询、更新或...

    eclipse-java-2023-12-R-win32-x86-64.zip

    eclipse-java-2023-12-R-win32-x86_64.zip 适用于Windows系统

    mysql-connector-java-5.1.40.tar.gz

    MySQL Connector/J是MySQL数据库与Java应用程序之间的桥梁,它是一个实现了JDBC(Java Database Connectivity)标准的MySQL驱动程序。"mysql-connector-java-5.1.40.tar.gz" 是这个驱动程序的一个特定版本,版本号为...

    mysql-connector-java-5.0.3.zip

    1. 加载驱动:使用`Class.forName()`方法加载驱动程序类,例如`Class.forName("com.mysql.jdbc.Driver")`。 2. 创建连接:使用`DriverManager.getConnection()`方法,提供数据库URL、用户名和密码,例如`Connection ...

    mysql-connector-java-5.1.22-bin.jar

    MySQL Connector/J是MySQL数据库管理系统与Java应用程序之间的桥梁,它是一个实现了Java Database Connectivity (JDBC) API的驱动程序,使得Java开发者能够方便地在Java应用中访问MySQL数据库。`mysql-connector-...

Global site tag (gtag.js) - Google Analytics