基础Java知识汇集
一些涉及java的一些容易忽视的简单的知识总结,会持续更新~
- 中央缓存机制
有关这一点,个人呢觉得看起来很高大上,实际如果换个角度思考还是挺容易理解的
public class test {
public static void main(String[] args) {
int j = 1;
for (int i = 0; i < 10; i++) {
j = j++;
}
System.out.println(j);
}
}
就像上面这串代码,如果单纯一个输出j=j++大家肯定知道是1,但是加一个循环,有的人就拿不定主意了,其实输出的还是1,看到过书上给的解释是中间缓存机制,j=j++其实执行的是
temp=j;
j=j+1;
j=temp;
个人觉得如果觉得绕的话直接按照j=j++后加理解就行,直接把j赋给了j,你就当a=j++来理解,前面一个j和后面那个j不是一个j,然后好理解一点,其实就像web的时候缓存一样,有的时候虽然改变了值,但因为会先读取缓存,所以值一直没改变,就像现在这个情况,你知道他有一个缓存机制,读的一直是过去的那个j就行。
- 关于main方法
main方法大家一开始就会的,都知道是虚拟机进入方法的入口,然后就会一直记着public static void main(String[] args)这样,新手一开始学习不能理解的时候就会一直背,然后就一直记着,实际上只要理解之后就会容易一些,也不会出什么关于这方面的错误。
第一个方法()里面的参数,实际上就是在声明一个名为args 的数组,这个地方可以修改成别的也不会出现错误,比如public static void main(String[] eee)这样,因为刚开始学习java的时候是用命令行的时候用javac编译,java运行,有的时候会带参数,比如java test 123来运行,在输出args[0]就可以得到123,等大家使用eclipse的时候一般习惯于使用运行直接运行了,其实可以在运行里面选择Run Configurations然后在Arguments里面把参数传过去再运行可以达到一样的效果,如图所示:
关于java编码过程中的一些进制标识
有的时候在一些程序上会看到如
int i = 012;
int j = 0x12;
这样的以0开始或者0x开始的,新手可能会不明白什么意思,实际上0表示的是后面的使用的是八进制表示的,也就是i的值是10,同样0x表示的是十六进制,j的值是18。
- 关于精度自动转换
看到一道笔试题大概是这样子的
public class test {
public static void main(String[] args) {
int a = 10;
System.out.println(a > 10 ? 8.8 : 6);
}
}
问输出的是什么,大部分乍一看,直接选了6,觉得很简单啊,实际上这边涉及一个运算符精度类型自动转换,因为前面这边有一个8.8,所以后面那个6会自动转换成6.0这样,注意一下就可以了。