转载自 http://blog.youkuaiyun.com/lanxuezaipiao/article/details/16753743在此特别鸣谢
1 、== 和 equals
public class SimpleBeanOne{
public static void main(String[] args){String str1 = "hello";
String str2 = "he" + new String("llo");
System.out.println(str1 == str2);
System.out.println(str1.equals(str2));
}
}
输出:
false
true
结论: == 判断的是内存地址 而equals判断的是大小
2、字符串数组和整形数组的区别
public class SimpleBeanOne{
public static void main(String[] args){
String[] a = new String[10];
for(String b: a){
System.out.println(b);
}
int[] c = new int[10];
for(int d :c){
System.out.println(d);
}
}
}
输出:
null
null
null
null
null
null
null
null
null
null
0
0
0
0
0
0
0
0
0
0
3、线程
public class SimpleBeanOne{
public static void main(String[] args){
Thread t = new Thread(){
public void run(){
pong();
}
};
t.start();
System.out.println("ping");
}
public static void pong(){
System.out.println("pong");
}
}
输出:
ping
pong
public class SimpleBeanOne{
public static void main(String[] args){
Thread t = new Thread(){
public void run(){
pong();
}
};
t.run();
System.out.println("ping");
}
public static void pong(){
System.out.println("pong");
}
}
输出:
pongpv
ping
结论:考察Thread中start()与run()的区别,start()方法用于开启一个线程,当调用start()方法后,系统开启一个新的线程,进而调用run()方法来执行任务,而单独的调用run()就跟调用普通方法是一样的,已经失去线程的特性了。因此在启动一个线程的时候一定要使用start()而不是run()。
4、守护线程和非守护线程(用户线程)
只要jvn实例中存在任何一个非守护线程,则守护线程全部工作,直到最后一个非守护线程结束,jvm随着守护线程一起结束工作。典型的守护线程是GC(垃圾回收)。
5、set、map和list关系图
6、Integer的最大值和最小值
public static void main(String[] args){
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);
int i = Integer.MAX_VALUE;
if(i+1<i){
System.out.println(1);
}
}
输出:
2147483647
-2147483648
1
7、double和float
public class SimpleBeanOne{
public static void main(String[] args){
Float a = 0.6332f;
Double b = 0.6332;
Double c = 0.6332;
System.out.println(a.equals(b));
System.out.println(b.equals(c));
}
}
输出:
false
true
注解:
float与double的区别 单精度浮点数在机内占4个字节,用32位二进制描述。 双精度浮点数在机内占8个字节,用64位二进制描述。 浮点数在机内用指数型式表示,分解为:数符,尾数,指数符,指数四部分。 数符占1位二进制,表示数的正负。 指数符占1位二进制,表示指数的正负。 尾数表示浮点数有效数字,0.xxxxxxx,但不存开头的0和点 指数存指数的有效数字。 指数占多少位,尾数占多少位,由计算机系统决定。 可能是数符加尾数占24位,指数符加指数占8位 -- float. 数符加尾数占48位,指数符加指数占16位 -- double. 知道了这四部分的占位,按二进制估计大小范围,再换算为十进制,就是你想知道的数值范围。 对编程人员来说,double 和 float 的区别是double精度高,有效数字16位,float精度7位。但double消耗内存是float的两倍,double的运算速度比float慢得多,java语言中数学函数名称double 和 float不同,不要写错,能用单精度时不要用双精度(以省内存,加快运算速度)