Java基础中的那些坑汇编.docx

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一、基本类型的问题类型默认值取值范围举例byte : 0 -2^7—2^7-1 byte b=10;char :‘\u0000’\u0000-\uFFFFchar c=’c’ ;short : 0 -2^15—2^15-1 short s=10;int: 0 -2^31—2^31-1 inti=10;long : 0 -2^63—2^63-1 long o=10L;float : 0.0f -2^31—2^31-1 float f=10.0Fdouble : 0.0d -2^63—2^63-1 double d=10.0;boolean:false true\false boolean flag=true;byte+byte=int,低级向高级是隐式类型转换,高级向低级必须强制类型转换,bytecharshortintlongfloatdouble。byte b=7; short a = 17; b=(byte)a;Java中的byte,short,char进行计算时都会提升为int类型。表达式的数据类型自动提升,关于类型的自动提升(向上转型,非强制),注意下面的规则。①所有的byte,short,char型的值将被提升为int型;②如果有一个操作数是long型,计算结果是long型;③如果有一个操作数是float型,计算结果是float型;④如果有一个操作数是double型,计算结果是double型;基本类型之间的比较,会将低精度类型自动转为高精度类型再比较folat类型的还有double类型的,都是浮点变量,都有精度限制。这些小数类型在趋近于0的时候直接等于0的可能性很小,一般都是无限趋近于0。因此不能用将浮点变量“==”或者“!=”来判断。应该设法转化成“=”或“=”形式,假设浮点变量的名字为x,应当将if (x == 0.0) 转化为if ((x=-err) (x=err))或者用|x-0|err来判断,这里|x-0|表示绝对值,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,Math.round(-11.5)的结果为-11。混合赋值运算符的使用表示左移位表示带符号右移位表示无符号右移但是没有这种运算符!为带符号右移,右移后左边的空位被填充为符号位为不带符号右移,右移后左边的空位被填充为0没有 ,因为后右边总是补0短路逻辑运算符和非短路逻辑运算符。和|为非短路逻辑运算符,不按“短路”方式计算。即在得到计算结果之前,一定要计算两个操作数的值。无论两个语句为真还是为假,两个都得执行,一定会执行完毕。和||为短路逻辑运算符,是按照“短路”方式求值的。如果第一个操作数已经能够确定表达式的值,第二个操作数就不必计算了。计算余弦值使用Math类的cos()方法。toRadians()是将角度转换为弧度;toDegrees()是将弧度转换为角度。三、多线程问题Java中的多线程是一种抢占式的机制,而不是分时机制。抢占式的机制是有多个线程处于可运行状态,但是只有一个线程在运行。共同点:1. 他们都是在多线程的环境下,都可以在程序的调用处阻塞指定的毫秒数,并返回。2. wait()和sleep()都可以通过interrupt()方法打断线程的暂停状态,从而使线程立刻抛出InterruptedException。如果线程A希望立即结束线程B,则可以对线程B对应的Thread实例调用interrupt方法。如果此刻线程B正在wait/sleep/join,则线程B会立刻抛出InterruptedException,在catch() {} 中直接return即可安全地结束线程。需要注意的是,InterruptedException是线程自己从内部抛出的,并不是interrupt()方法抛出的。对某一线程调用 interrupt()时,如果该线程正在执行普通的代码,那么该线程根本就不会抛出InterruptedExcep

文档评论(0)

希望之星 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档