事要从基础做起:
1、cmd编译.java文件命令:
javac xxx.java
当java文件中包含中文汉字,会报出:编码GBK的不可映射字符,则需要在命令上指定编码,把上述命令改为:
javac -encoding utf8 xxx.java
2、执行class文件编译结果
java xxx
3、cmd把编译文件转换为字节码
javap -c xxx.class
4、cmd查看native修饰的方法,生成 .h后缀文件命令
javah -d header -classpath classes -jni cn.bobwuming.test.Fly
-jni后面的路径=java的package的包路径+类名,包路径需要有每层的文件夹,否则找不到java类,不写package包路径,可在根目录直接输入类名即可
-d header 表示将在当前目录下生成一个header文件夹,产生的头文件就在这里面了;
-classpath classes 指明类所在的位置
-jni cn.bobwuming.test.Fly 指定类名
2、i++ 与 ++i 的区别
i++ : 先赋值再加1
++i : 先加1再赋值
3、for (表达式1;表达式2;表达式3) {}
表达式1可以省略,需要在循环之前定义初始值。
表达式2省略后,则会造成死循环。
表达式3省略后,可以在方法体内进行自加自减进行控制变量修改。 表达式3则在循环代码块每次结束后执行。
4、for循环与i++结合使用
int a = 0;
for (int i =0; i < 100; i++) {
System.out.println("观察进来的:" + i);
a = i++;
System.out.println("观察第一次的:" + a + "和 :" + i);
a = i++;
System.out.println("观察第二次的:" + a + "和 :" + i);
}
int a = 0;
for (int i =0; i < 100; ++i) {
System.out.println("观察进来的:" + i);
a = ++i;
System.out.println("观察第一次的:" + a + "和 :" + i);
a = ++i;
System.out.println("观察第二次的:" + a + "和 :" + i);
}
总结:只有i++或++i进行赋值操作后,才会产生差别,在for中表达式3中的++i和i++效果相同,因为都是在一次循环结束后进行计算,所以不影响其它变量。