java随笔(一)

以下是我写的一些东西对一些java刚起步的同学可能会有点帮助,如果你已是一个高手或有点编程经验的人,你完全可以不用浪费时间来看这篇文章了,小弟在这也只是抛砖引玉,希望能有更多的高手来指教,如下是我的一些理解:
1、在做比较的时候,大家可能很清楚,“==”是对象比较,而equals是值比较,如:
String a=new String("a");
String b=new String("a");
很显然 a==b返回false,a.equals(b)返回true;但是在进行自定义类使用equals的时候需要注意了,如:
MyClass a=new MyClass("a");
MyClass b=new MyClass("a");
a.equals(b)返回仍然是false,这个时候仍然是reference比较,如果要想他们相等,只能重写equals;

2、在使用赋值的时候需要注意值的范围,如:
int num=0x7fffffff;
System.out.println("num1:"+num);
System.out.println("num2:"+num*10);
结果是:
num1:2147483647
num2:-10
内存会溢出,但是java编译器并不会报错;

3、在float、double类型向int类型或char类型转换的时候,小数点后面的值都会给去了,不管它等于多少,如:
char c='a';
int num=(int)10.9;
System.out.println((char)c+0.7);
System.out.println("char:"+(char)(c+0.7));
System.out.println(num);
输出的结果是:
97.7
char:a
10

4、在if条件运算表达式中,它只接受boolean类型的值,但是有个有趣的写法是:
boolean a=true;
boolean b=false;
if(a=b)//注意了,这个地方编译器是不会报错的,除了两个变量都是boolean的时候才能这样写,否则编译报错;

5、最后一点我来举一个比较有趣的例子来让大家思考一下:
1、
String a="init";
try{
         a="try";
return a;
}finally{
a="finally";
}

2、
String a="init";
try{
         a="try";
return a;
}finally{
a="finally";
         return a;
}

3、
String a="init";
try{
a="try";
System.exit(0);
return a;

}finally{
a="finally";
return a;
}
输出的分别是什么呢?


1、try;2、finally;3:不输出;
可能会有一些疑惑的,在示例1中其实finally是执行的,只不过在jvm中只接受最后一个return,在示例3中是整个jvm都退出了,所以理所当然的就不输出了。

你可能感兴趣的:(java,jvm,编程,C++,c)