JDK>JRE>JVM.
JVM:是Java虚拟机。能识别class类型文件中字节码指令,调用操作系统向上的API完成动作。JVM是java能够跨平台的核心。
JRE:Java运行时环境。主要包含两个部分:JVM的标准实现和Java的一些基本类库。与jvm相比多出来的是一部分的java类库。
JDK:Java开发工具包。JDK是整个Java开发的核心,它集成了JRE和一些工具。
跨平台性是指经过一次编译后可以在不同的操作系统上运行。
实现原理:JDK里有多个jvm针对不同的操作系统,这样只需要编译一次就能生成jvm时别的class文件,通过不同的jvm翻译就能让不同的操作系统运行。
短路与:&&,如果左侧的表达式是false就不执行右侧,直接返回false。
&:无论左侧是不是false都会在执行一边右边。
2 << 3.
一个数左移几位就是乘以2的几次方。8 = 23,所以左移3位,位运算是cpu直接支持的,效率更高,而2*8是通过加法运算操作的。
a ^= b
b ^= a
a ^= b
short s1 = 1; s1 = s1 +1;//是错误的. 因为1是int型,相加之后是int型不能直接赋值给short型,需要强转. s1 += 1;//是正确的.因为 += 隐含了强转,相当于 s1 = (int) s1 + 1;
不正确。在Java里,没有小数点的数据类型默认是int型,有小数点的数据类型是double类型
float f = 3.4F;//这样是正确的.
//第一种方法 boolean flag = false; do { flag = false; for(int i = 0;i < nums.length;i++) { //如果左侧大于右侧 if(nums[i] > nums[i+1]) { nums[i] ^= nums[i+1]; nums[i+1] ^= nums[i]; nums[i] ^= nums[i+1]; flag = true; } } }while(flag) //第二种方法 //轮数 for(int i = 0;i < nums.length;i++) { //次数 for(int j = i;j < nums.length-i-1;j++) { if(nums[j] > nums[j+1]) { nums[j] ^= nums[j+1]; nums[j+1] ^= nums[j]; nums[j] ^= nums[j+1]; } } }
for(int i = 0;i < 4;i++) { for(int k = 0;k < 4-i-1;k++) { System.out.print(" "); } for(int j = 0;j < 2*i+1;j++) { if(j == 0 || j == 2*i) { System.out.print("* "); }else { System.out.print(" "); } } System.out.println(); } for(int i = 0;i < 3;i++) { for(int j = 0;j < i+1;j++) { System.out.print(" "); } for(int k = 0;k < 5-2*i;k++) { if(k == 0 || k == 5-2*i-1) { System.out.print("* "); }else { System.out.print(" "); } } System.out.println(); }
运行结果:
Scanner input = new Scanner(System.in); Random r = new Random(); System.out.print("请输入地图的边长:"); int size = input.nextInt(); String[][] map = new String[size][size]; //初始化地图 for (int i = 0; i < size; i++) { for (int j = 0; j < size; j++) { map[i][j] = i+""+j; } } //打印地图 for (int i = 0; i < size; i++) { for (int j = 0; j < size; j++) { System.out.print(map[i][j]+" "); } System.out.println(); }
运行截图: