摘要: 线程的起动并不是简单的调用了RUN方法,而是由一个线程调度器来分别调用所有线程的RUN方法,普通的RUN方法如果没有执行完是不会返回的,也就是会一直执行下去,这样RUN方法下面的方法就不可能会执行了,可是线程里的RUN方法却不一样,它只有一定的CPU时间,执行过后就给别的线程了,这样反复的把CPU的时间切来切去,因为切换的速度很快,所以我们就感觉是很多线程在同时运行一样.你简单的调用run方法是没有这样效果的,所以你必须调用Thread类的start方法来启动你的线程.所以你启动线程有两种方法一是写一个类继承自Thread类,然后重写里面的run方法,用start方法启动线程二是写一个类实现R 阅读全文
posted @ 2012-09-10 19:35 路人浅笑 阅读(1460) 评论(0) 推荐(0) 编辑
摘要: 1 String s1 = "a";2 String s2 = s1.concat("");3 String s3 = null;4 new String(s1);这段代码会涉及3个String类型的变量,1、s1,指向下面String实例的12、s2,指向与s1相同3、s3,值为null,不指向任何实例以及3个String实例,1、"a"字面量对应的驻留的字符串常量的String实例2、""字面量对应的驻留的字符串常量的String实例(String.concat()是个有趣的方法,当发现传入的参数是空字符串时会 阅读全文
posted @ 2012-09-10 16:09 路人浅笑 阅读(328) 评论(0) 推荐(0) 编辑
摘要: 例1. short s1 = 1;s1 = s1 + 1; 例2. short s1 = 1; s1 += 1;short占2个字节,int占4个字节,short型变量+上int型值计算结果是int型,占4个字节,然后付给一个short型变量s1,就要丢失2个字节的精度,这是不容许的。1例 使用简单赋值运算, 2例 使用复合赋值运算,而简单赋值运算和复合赋值运算的最大差别就在于:复合赋值运算符会自动地将运算结果转型为其左操作数的类型!这就是1例编译不通过,2例编译却能通过的原因。 阅读全文
posted @ 2012-09-10 10:55 路人浅笑 阅读(531) 评论(0) 推荐(0) 编辑