【转载】java拾遗

来源:互联网 发布:js unicode编码 编辑:程序博客网 时间:2024/06/05 13:23

转载自 http://blog.csdn.net/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不同,不要写错,能用单精度时不要用双精度(以省内存,加快运算速度)


0 0
原创粉丝点击