欢迎来到天天文库
浏览记录
ID:41884350
大小:431.21 KB
页数:21页
时间:2019-09-04
《Java基础中的那些坑》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、一、基本类型的问题类型默认值取值范围举例byte:0-2A7—2A7-1byteb=10;char:、u0000〃、u0000「uFFFFcharc=‘c‘;short:0・2A15—2A15-1shorts=10;int:0・2A31—2A31-1inti=10;long:0・2A63—2A63-1longo=10L;float:O.Of・2A31—2A31-1floatf=10.0Fdouble:O.Od・2A63—2A63-1doubled=10.0;booleani:falsetruefalseboole
2、anflag=true;byte+byte=int,低级向高级是隐式类型转换,高级向低级必须强制类型转换,byte3、个操作数是float型,计算结果是float型;④如果有一个操作数是double型,计算结果是double型;基本类型之间的比较,会将低精度类型自动转为高精度类型再比较folat类型的还有double类型的,都是浮点变量,都有精度限制。这些小数类型在趋近于0的吋候岂接等于0的可能性很小,一般都是无限趋近于0。因此不能用将浮点变量“乂”或者“匕”来判断。应该设法转化成“>=”或““”形式,假设浮点变最的名字为x,应当将讦(x==0.0)转化为if((x>=-err)&&(xv二err))或者用4、x-01verr来判断,5、这里6、x-01表示绝对值,err表示限定误差。用程序表示就是fabs(x)<0.00001f二、运算符的问题floor返冋不大于的最大整数,返冋double类型math.floor(-0.5)的结果为-1.0ceil返回不小于的最小整数,返回double类型math.ceil(-0.5)的结果为-0.0round则是对小数4舍5入的计算,返回int类型round方法,它表示“四舍五入”,算法为Math.floor(x+0.5),即将原来的数字加上0.5后再向下取整,所以,Math.round(11.5)的结果为12,7、Math.round(-11.5)的结果为-11。混仑赋值运算符的使用<<表示左移位>>表示带符号右移位>>>表示无符号右移但是没有VVV这种运算符!>>为带符号右移,右移后左边的空位被填充为符号位>>>为不带符号右移,右移后左边的空位被填充为0没有VVV,因为VV后右边总是补0短路逻辑运算符和非短路逻辑运算符。&和I为非短路逻辑运算符,不按“短路”方式计算。即在得到计算结果Z前,一定要计算两个操作数的值。无论两个语句为真还是为假,两个都得执行,一定会执行完毕。&&和8、9、为短路逻辑运算符,是按照“短路”方式求值的。如10、果笫一个操作数己经能够确定表达式的值,第二个操作数就不必计算了。计算余弦值使用Math类的cos()方法。toRadiansf)是将角度转换为弧度;toDegrees()是将弧度转换为角度。三、多线程问题Java中的多线程是一种抢占式的机制,阳不是分时机制。抢占式的机制是有多个线程处于可运行状态,但是只冇一个线程在运行。共同点:1.他们都是在多线程的环境下,都可以在程序的调用处阻塞指定的毫秒数,并返回。2.wait()和sleep()都可以通过interrupt)方法打断线程的暂停状态,从而使线程立刻抛出Interr11、uptedException。如果线程A希望立即结束线程B,则可以对线程B对应的Thread实例调用interrupt方法。如果此刻线程B正在wait/sleep/join,则线程B会立刻抛出InterruptedException,在catch(){}中宜接return即可安全地结束线程。需要注意的是,InterruptedException是线程自己从内部抛出的,并不是interrupt)方法抛出的。对某一线程调用interrupt。时,如果该线程正在执行普通的代码,那么该线程根本就不会抛出Interrupted12、Exceptiono但是,一旦该线程进入到wait()/sleep()/join()后,就会立刻抛illInterruptedException。不同点:1.每个对象都有一个锁來控制同步访问。Synchronized关键字可以和对象的锁交互,來实现线程的同步。sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方
3、个操作数是float型,计算结果是float型;④如果有一个操作数是double型,计算结果是double型;基本类型之间的比较,会将低精度类型自动转为高精度类型再比较folat类型的还有double类型的,都是浮点变量,都有精度限制。这些小数类型在趋近于0的吋候岂接等于0的可能性很小,一般都是无限趋近于0。因此不能用将浮点变量“乂”或者“匕”来判断。应该设法转化成“>=”或““”形式,假设浮点变最的名字为x,应当将讦(x==0.0)转化为if((x>=-err)&&(xv二err))或者用
4、x-01verr来判断,
5、这里
6、x-01表示绝对值,err表示限定误差。用程序表示就是fabs(x)<0.00001f二、运算符的问题floor返冋不大于的最大整数,返冋double类型math.floor(-0.5)的结果为-1.0ceil返回不小于的最小整数,返回double类型math.ceil(-0.5)的结果为-0.0round则是对小数4舍5入的计算,返回int类型round方法,它表示“四舍五入”,算法为Math.floor(x+0.5),即将原来的数字加上0.5后再向下取整,所以,Math.round(11.5)的结果为12,
7、Math.round(-11.5)的结果为-11。混仑赋值运算符的使用<<表示左移位>>表示带符号右移位>>>表示无符号右移但是没有VVV这种运算符!>>为带符号右移,右移后左边的空位被填充为符号位>>>为不带符号右移,右移后左边的空位被填充为0没有VVV,因为VV后右边总是补0短路逻辑运算符和非短路逻辑运算符。&和I为非短路逻辑运算符,不按“短路”方式计算。即在得到计算结果Z前,一定要计算两个操作数的值。无论两个语句为真还是为假,两个都得执行,一定会执行完毕。&&和
8、
9、为短路逻辑运算符,是按照“短路”方式求值的。如
10、果笫一个操作数己经能够确定表达式的值,第二个操作数就不必计算了。计算余弦值使用Math类的cos()方法。toRadiansf)是将角度转换为弧度;toDegrees()是将弧度转换为角度。三、多线程问题Java中的多线程是一种抢占式的机制,阳不是分时机制。抢占式的机制是有多个线程处于可运行状态,但是只冇一个线程在运行。共同点:1.他们都是在多线程的环境下,都可以在程序的调用处阻塞指定的毫秒数,并返回。2.wait()和sleep()都可以通过interrupt)方法打断线程的暂停状态,从而使线程立刻抛出Interr
11、uptedException。如果线程A希望立即结束线程B,则可以对线程B对应的Thread实例调用interrupt方法。如果此刻线程B正在wait/sleep/join,则线程B会立刻抛出InterruptedException,在catch(){}中宜接return即可安全地结束线程。需要注意的是,InterruptedException是线程自己从内部抛出的,并不是interrupt)方法抛出的。对某一线程调用interrupt。时,如果该线程正在执行普通的代码,那么该线程根本就不会抛出Interrupted
12、Exceptiono但是,一旦该线程进入到wait()/sleep()/join()后,就会立刻抛illInterruptedException。不同点:1.每个对象都有一个锁來控制同步访问。Synchronized关键字可以和对象的锁交互,來实现线程的同步。sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方
此文档下载收益归作者所有