供应室塑封包装要求相关试题,java 基础面试题——基本数据类型与包装类 -ag真人官方入口

苗坤旺离型膜

题库来源:安全生产模拟考试一点通公众号小程序

危险化学品经营单位安全管理人员找解析考前必练!安全生产模拟考试一点通每个月更新危险化学品经营单位安全管理人员考试试题题目及答案!多做几遍,其实通过危险化学品经营单位安全管理人员理论考试很简单。

1、【判断题】压力容器的设计,必须由具有相应专业技术水平的单位负责,并应经过规定的审批手续。(??√??)

2、【判断题】危险化学品安全标签是用文字、图形符号和编码的组合形式表示危险化学品所具有的危险性和安全注意事项。(??√??)

3、【判断题】盛装化学品的包装,不必到指定部门检验,但包装要满足有关试验要求。(??×??)

4、【判断题】剧毒物品的仓库应使用密闭措施。(??×??)

5、【判断题】事发当天上午,该加油站站长陈某在未办理动火审批手续的情况下,带领2名临时雇来的无资格证的修理工,对装过90号汽油的一卧式罐扶梯进行焊补作业,在焊接过程中发生爆炸,陈某和1名焊工当场被炸死,另1人重伤。直接经济损失16万元。根据上述事实,请判断,在加油站动火,必须严格执行规章制度,办理必要的动火手续。(??√??)

6、【判断题】不同品种的氧化剂,应根据其性质及消防方法的不同,选择适当的库房分类存放及分类运输。有机过氧化物不得与无机氧化剂共储混运;亚硝酸盐类、亚氯酸盐类、次亚氯酸盐类均不得与其他氧化剂混储混运。(??√??)

7、【判断题】《中华人民共和国消防法》规定,企业对职工进行岗前消防安全培训,定期组织消防安全培训和消防演练。(??√??)

8、【判断题】有机过氧化物比无机氧化剂有更大的火灾爆炸危险。(??√??)

9、【判断题】安全生产检查是安全管理工作的重要内容,是消除隐患、防止事故发生、改善劳动条件的重要手段。(??√??)

10、【判断题】装卸毒害品人员作业中不得饮食,不得用手擦嘴、脸、眼睛。每次作业完毕,应及时用肥皂(或专用洗涤剂)洗净面部、手部,用清水漱口,防护用具应及时清洗,集中存放。(??√??)

11、【判断题】用于引爆炸药的导火索不属于爆炸品。(??×??)

12、【判断题】2007年11月24日7时51分,某公司上海销售分公司租赁经营的浦三路油气加注站,在停业检修时发生液化石油气储罐爆炸事故,造成4人死亡、30人受伤,周围部分建筑物等受损,直接经济损失960万元。根据上述事实,请判断,该事故应上报至省、自治区、直辖市人民政府安全生产监督管理部门和负有安全生产监督管理职责的有关部门。(??√??)

13、【判断题】职业病危害较重的建设项目,其职业病危害预评价报告应当报安全生产监督管理部门审核;职业病防护设施竣工后,由安全生产监督管理部门组织验收。()(??√??)

14、【判断题】运输危险化学品的车、船和其它运输工具内允许搭乘无关人员。()(??×??)

15、【判断题】2007年4月13日早8时许,某县某村公路旁的麦田里发现7桶不明化学物品。经过专家化验,该化学物品为“三氯化磷”,剧毒,易散发。被遗弃的7桶“三氯化磷”都已经过期。周围小麦被“烧”死,造成严重污染。根据上述事实,请判断,本事故违反《危险化学品安全管理条例》规定,危险化学品处置方案应当报所在地设区的市级人民政府负责危险化学品安全监督管理综合工作部门和同级环境保护部门、公安部门备案。(??√??)

16、【判断题】为了防止危险化学品的误用,危险化学品安全标签的粘贴、挂拴、喷印应牢固,保证在运输及储存期间不脱落、不损坏。(??√??)

17、【判断题】铝镁粉与水反应比镁粉或铝粉单独与水反应要强烈得多。(??√??)

18、【判断题】应急预案的编制可以明确应急组织和人员的职责分工,并有具体的落实措施。(??×??)

19、【判断题】危险化学品应当储存在专用仓库、专用场地或者专用储存室内,并由专人负责。(??√??)

20、【判断题】自燃点与闪点一样都是可燃物质的固有性质。(??×??)

21、【判断题】只要具备燃烧三要素(可燃物、助燃物、点火源),即会引起燃烧。(??×??)

22、【判断题】直流电流与交流电流相比,容易摆脱,其室颤电流也比较小,因而,直流电击事故很少。(??×??)

23、【判断题】应急预案是针对可能发生的事故,为迅速、有序地开展应急行动而预先制定的管理规定。(??×??)

24、【判断题】一个单位的不同类型的应急救援预案要形成统一整体,救援力量要统一安排。(??√??)

25、【判断题】危险化学品仓库根据危险品特性和仓库条件,必须配置相应的消防设备、设施和灭火药剂。(??√??)

26、【判断题】应急预案的编制应该有明确、具体的事故预防措施和应急程序,并与其应急能力相适应。(??√??)

27、【判断题】《中华人民共和国安全生产法》规定,生产经营单位必须投保安全生产责任保险。(??×??)

28、【判断题】易燃气体在常温常压下遇明火、高温即会发生着火或爆炸,燃烧时其蒸气对人畜有一定的刺激毒害作用。(??√??)

29、【判断题】个体运输业户的车辆可以从事道路危险化学品运输经营活动。(??×??)

30、【判断题】可燃气体和氧的含量越大,火源强度、初始温度越高,湿度越低,惰性粉尘及灰分越少,爆炸极限范围越大,粉尘爆炸危险性也就越大。(??√??)

31、【判断题】干粉灭火剂不适合扑救精密仪器火灾。(??√??)

32、【判断题】高毒作业场所职业中毒危害因素不符合国家职业卫生标准和卫生要求时,用人单位必须立即停止高毒作业,并采取相应的治理措施;经治理,职业中毒危害因素符合国家职业卫生标准和卫生要求的,方可重新作业。(??√??)

33、【判断题】危险化学品建设项目竣工,未进行职业中毒危害控制效果评价,或者未经卫生行政部门验收,可以投入生产、运行。(??×??)

34、【判断题】压力容器,可由没有制造许可证的专业单位制造。(??×??)

35、【判断题】事故隐患分为一般事故隐患、较大事故隐患、重大事故隐患、特大事故隐患。(??×??)

36、【判断题】当某种化学品具有两种及两种以上的危险性时,用危险性最小的警示词。(??×??)

37、【判断题】周围环境发生变化,形成新的重大危险源的应当及时修订应急预案。(??√??)

38、【判断题】某机械制造厂仪表车间车工班的李某、徐某、陈某和徒工小张、小孟及徐某的妻子饶某,聚集在一间约18㎡的休息室内,用一个5kw的电炉取暖。将门窗紧闭,墙角存放一个盛装15kg汽油的玻璃瓶。玻璃瓶内压力,随着室温升高而加大,先后两次将瓶塞顶出,被徒工小孟先后两次用力塞紧。由于瓶内压力不断增大,把玻璃瓶胀开一道裂缝,汽油慢慢向外渗出,流向电炉。坐在电炉旁的陈某、饶某发现汽油渗出后,刻用拖布擦拭汽油。在擦拭清理过程中,拖布上的汽油溅到电炉丝上,瞬间电炉就燃烧起来,火焰顺着油迹向汽油瓶烧去。屋内的几个人见事不妙都往门口跑,徐某用力把门打开,因屋内充满汽油蒸气,门一开,屋外充足的氧气使屋内刹那间火光冲天,汽油瓶爆炸。造成3人被烧死,其他人被烧伤,房屋和机床被烧毁,经济损失惨重。根据上述事实,该事故原因是严重违反休息室内不准存放易燃易爆危险化学品的规定,汽油瓶受热胀裂,遇火燃烧爆炸,发现危险后处理操作方法错误,缺乏有关汽油等危险物品的安全知识,遇险后不会正确处理。(??√??)

39、【判断题】对已确定的重大危险源应在建筑设计、设备设计、环境设计采取有关的消防、安全措施。(??√??)

40、【判断题】静电放电时发生的火花,可引燃爆炸性混合物,导致爆炸或火灾。(??√??)

41、【判断题】储存危险化学品的建筑物、区域内严禁吸烟和使用明火。(??√??)

42、【单选题】铁路发送剧毒品禁止( )。(??b??)

a、在铁道部批准的剧毒品办理站或专用线,专用铁路办理剧毒品发送

b、办理剧毒品的零担发送业务

c、采用毒品专用车、企业自备车和企业自备集装箱运输

43、【单选题】粉尘的爆炸下限大体为( ),爆炸上限约为80mg/l称为易燃固体。(??c??)

a、5至15mg/l

b、15至25mg/l

c、25至45mg/l

44、【单选题】易燃易爆场所中不能使用( )工具。(??a??)

a、铁制

b、铜制

c、木制

45、【单选题】一个单位的不同类型的应急救援预案要形成统一整体,救援力量要( )安排。(??a??)

a、统筹

b、随时

c、定期

46、【单选题】企业要按照国家有关规定实行重大危险源和重大隐患及有关应急措施备案制度,每( )至少要进行一次全面的安全生产风险分析。(??c??)

a、年

b、季度

c、月

47、【单选题】在应急救援过程中,救援人员进入危险区后应立即通过敲门、呼叫等方式搜索( )人员。(??b??)

a、救援

b、受困

c、无关

48、【单选题】粉尘的爆炸下限大体为( ),爆炸上限约为80mg/l称为易燃固体。(??c??)

a、5-15mg/l

b、15-25mg/l

c、25-45mg/l

49、【单选题】液体火灾和可熔化的固体物质的火灾属于( )类火灾。(??b??)

a、a

b、b

c、c

50、【单选题】固体可物表面温度超过()时,可燃物接触该表面有可能一触即燃。(??b??)

a、100℃

b、可燃物燃点

c、可燃物闪点

以上是2021年危险化学品经营单位安全管理人员找解析及危险化学品经营单位安全管理人员考试试题。支持全国各地区精准危险化学品经营单位安全管理人员考试试题,支持安全资格证,特种作业操作证,职业技能鉴定等工种题库练习。

目录

1.java 有哪几种基本数据类型?分别对应哪些包装类?2.java 中为什么要保留基本数据类型?为什么要使用包装类?3.基本数据类型的转换规则有哪些?4.基本数据类型与包装类有什么区别?5.什么是装箱?什么是拆箱?它们的执行过程分别是什么?6.什么是包装类型的缓存机制?7.在进行算术运算时如果存在大量自动装箱的过程,可能会出现什么问题?8.基本类型和包装类对象使用 == 和 equals 进行比较的区别是什么?9.为什么浮点数运算的时候会有精度丢失的风险?如何解决该问题?10.超过 long 整型的数据应该如何表示?11.对于整型数据来说,存在 i 使得 i 1 < i 吗?12.char 型变量中能否存储一个中文汉字,为什么?

1.java 有哪几种基本数据类型?分别对应哪些包装类?

(1)java 中一共有 8 种基本数据类型,同时分别对应 8 个包装类,具体如下表所示:

数据类型关键字字节数取值范围默认值包装类布尔型boolean-{true, false}falseboolean字节型byte1-128 ~ 1270byte短整型short2-215 ~ 215 - 10short字符型char20 ~ 216 - 1‘\u0000’(空格)character整型int4-231 ~ 231 - 10integer长整型long8-263 ~ 263 - 10long单精度浮点型float41.4013e-45 ~ 3.4028e 380.0ffloat双精度浮点型double84.9e-324 ~ 1.7977e 3080.0ddouble

(2)注意事项:

虽然定义了 boolean 这种数据类型,但是只对它提供了非常有限的支持。在 java 虚拟机中没有任何供 boolean 值专用的字节码指令,java 语言表达式所操作的 boolean 值,在编译之后都使用 java 虚拟机中的 int 数据类型来代替,而 boolean 数组将会被编码成 java 虚拟机的 byte 数组,每个元素 boolean 元素占 8 位。java 虚拟机规范提议:

1)如果 boolean 是 “单独使用”:boolean 被编译为 int 类型,占 4 个字节;2)如果 boolean 是以 “boolean 数组” 的形式使用:boolean 占 1 个字节,java 虚拟机直接支持 boolean 数组,通过 newarray 指令创建 boolean 数组,然后通过 byte 数组指令 baload 和 bastore 来访问和修改 boolean 数组;总之,boolean 占用 1 个字节、4 个字节都是有可能的,具体还要看虚拟机实现是否按照规范来。 当一个整数以 l 或者 l 结尾时,其字面值是 long 类型,否则就是默认的 int 类型,另外建议使用大写的 l,因为小写 l 容易和 1 混淆;当一个浮点数以 f 或者 f 结尾时,其字面值是 float 类型,否则就是默认的 double 类型(以 d 或者 d 结尾,写不写都可以),不过在定义 float 类型的浮点数时,必须以 f 或 f 结尾,否则会报错,如下图所示。

2.java 中为什么要保留基本数据类型?为什么要使用包装类?

(1)保留基本数据类型的原因如下:

在 java 中,使用 new 关键字创建的对象存储在堆中,并且通过栈中的引用来使用这些对象,所以对象本身来说是比较消耗资源的。基本类型存储在栈里,因为栈的效率高,所以保留了基本类型。变量的值存储在栈中,方法执行时创建,结束时销毁,因此更加高效。使用基本数据类型参与计算时的性能要比使用包装类的高。

(2)使用包装类的原因如下:

java 语言是面向对象的编程语言,而基本数据类型声明的变量并不是对象,为其提供包装类,增强了 java 面向对象的性质。如果只有基本数据类型,那么在使用时会带来许多不便之处,例如,由于集合类中存放的元素必须是 object 类型,因此无法存放 int、long、double 等基本数据类型。此外,包装类还为基本类型添加了属性和方法,丰富了基本数据类型的操作,并且方便涉及到对象的操作。例如当我们想获取 int 取值范围的最小值,可以直接使用 integer.max_value 来表示最小值即可。

3.基本数据类型的转换规则有哪些?

(1)在代码种我们经常需要将一种数值类型转换为另一种数值类型。下图给出了数值类型之间的合法转换,其中, 6 个实心箭头表示无信息丢失的转换;3 个虚心箭头,表示可能有精度损失的转换。

(2)基本数据类型的转换规则:

8 种基本数据类型中,除了 boolean 类型不能转换,剩下的 7 种类型之间都可以进行转换;如果整数型字面值没有超过 byte、short、char 的取值范围,可以直接将其赋值给对应类型的变量;小容量向大容量转换称为自动类型转换,容量从小到大排序为:byte < short / char < int < long < float < double,其中 short 和 char 都占用两个字节,但是 char 可以表示更大的正整数;大容量转换为小容量,称为强制类型转换,编写时必须添加“强制类型转换符”,但运行时可能会出现精度损失,须谨慎使用。byte、short、char 类型混合运算时,先各自转换成 int 类型再做运算;多种数据类型混合运算时,各自先转换成容量最大的那一种再做运算。

4.基本数据类型与包装类有什么区别?

(1)初始默认值:基本数据类型的的初始值则视具体的类型而定,而包装类型的初始值为 null; (2)存储位置:基本数据类型的局部变量存放在 java 虚拟机栈中的局部变量表中,基本数据类型的成员变量(未被 static 修饰 )存放在 java 虚拟机的堆中。包装类型属于对象类型,几乎所有对象实例都存在于堆中,其引用存在于栈中。 (3)使用方式:包装类具有属性和方法,使用方式更加广阔,例如可存储到集合中、可用于泛型,而基本数据类型则不可以; (4)空间占用:相比于包装类, 基本数据类型占用的空间非常小。

5.什么是装箱?什么是拆箱?它们的执行过程分别是什么?

(1)装箱与拆箱

装箱:基本数据类型转变为包装类型的过程。拆箱:包装类型转变为基本数据类型的过程。

(2)执行过程

装箱是通过调用包装器类的 valueof() 实现的。拆箱是通过调用包装器类的 xxxvalue() 实现的,xxx代表对应的基本数据类型。例如 int 装箱的时候自动调用 integer 的 valueof(int);integer 拆箱的时候自动调用 integer 的 intvalue()。

//jdk 1.5 之前不支持自动装箱和自动拆箱,创建 integer 对象必须按下面的方式进行

integer i = new integer(9);

//jdk 1.5 开始提供了自动装箱的功能,可以按下面的方式创建 integer 对象

integer i = 9;

//上一行代码等价于 integer i = integer.valueof(9);

//自动拆箱

int n = i;

//上一行代码等价于 int n = i.intvalue();

6.什么是包装类型的缓存机制?

java 中的大部分包装类型的都用到了缓存机制来提升性能:

byte、short、integer、long 这 4 种包装类默认创建了数值 [-128, 127] 的相应类型的缓存数据;character 创建了数值在 [0, 127] 范围的缓存数据;boolean 直接返回 true 或者 false;由于在某个范围内的整型数值的个数是有限的,而浮点数却不是,valueof() 直接返回新的对象;

integer

integer i1 = 100;

integer i2 = 100;

integer i3 = 200;

integer i4 = 200;

system.out.println(i1 == i2); // true

system.out.println(i3 == i4); // false

integer 的 valueof(int i) 的具体实现如下:

public static integer valueof(int i) {

if (i >= -128 && i <= integercache.high) {

return integercache.cache[i 128];

} else {

return new integer(i);

}

}

从上面的代码可以看出,在通过 valueof 方法创建 integer 对象时,如果数值在 [-128, 127] 之间,便返回指向 integercache.cache 中已经存在的对象的引用;否则创建一个新的 integer 对象。上面的代码中 i1 和 i2 的数值为 100,因此会直接从 cache 中取已经存在的对象,所以 i1 和 i2 指向的是同一个对象,而 i3 和 i4 则是分别指向不同的对象。

现在再来看看下面的这段代码,请问输出结果是 true 还是 false?

integer i1 = 100;

integer i2 = new integer(100);

system.out.println(i1 == i2);

答案为 false,其原因在于 integer i1 = 100; 这行代码会自动装箱,即等价于 integer i1 = integer.valueof(100);,并且由于 100 在 [-128, 127] 范围内,所以 i1 直接使用缓存中的对象;而 integer i2 = new integer(100); 会直接创建新的对象。因此输出结果为 false。

character

// 小写字母 a 的 ascii 值为 97

character c1 = 'a';

character c2 = 'a';

system.out.println(c1 == c2); // true

character 的 valueof(char c) 的具体实现如下:

public static character valueof(char c) {

if (c <= 127) { // must cache

return charactercache.cache[(int)c];

}

return new character(c);

}

boolean

boolean b1 = false;

boolean b2 = false;

boolean b3 = true;

boolean b4 = true;

system.out.println(b1 == b2); // true

system.out.println(b3 == b4); // true

boolean 的 valueof(boolean b) 的具体实现如下:

public static boolean valueof(boolean b) {

return (b ? true : false);

}

double

double d1 = 100.0;

double d2 = 100.0;

double d3 = 200.0;

double d4 = 200.0;

system.out.println(d1 == d2); // false

system.out.println(d3 == d4); // false

//解释:在某个范围内的整型数值的个数是有限的,而浮点数却不是

7.在进行算术运算时如果存在大量自动装箱的过程,可能会出现什么问题?

在进行算术运算如果存在大量自动装箱的过程,且装箱返回的包装对象不是从缓存中获取的,那么会创建很多新的对象,这样比较消耗内存以及运行时间,如下面的代码所示:

public static void main(string[] args) {

integer s1 = 0;

long t1 = system.currenttimemillis();

for (int i = 0; i < 1000 * 10000; i ) {

//自动装箱

s1 = i;

}

long t2 = system.currenttimemillis();

system.out.println("使用integer,消耗了:" (t2 - t1) " ms"); // 44 ms

int s2 = 0;

long t3 = system.currenttimemillis();

for (int i = 0; i < 1000 * 10000; i ) {

s2 = i;

}

long t4 = system.currenttimemillis();

system.out.println("使用int,消耗了:" (t4 - t3) " ms"); // 4 ms

}

8.基本类型和包装类对象使用 == 和 equals 进行比较的区别是什么?

(1)值不同时 使用 == 和 equals() 比较时都返回 false;

(2)值相同时 ① 使用 == 比较 基本类型 - 基本类型、基本类型 - 包装对象,返回 true; 包装对象 - 包装对象,非同一个对象(对象的内存地址不同)返回 false;对象的内存地址相同返回 true,如下面等于 100 的两个 integer 对象(原因是 jvm 缓存部分基本类型常用的包装类对象,如 integer -128 ~ 127 是被缓存的)

② 使用 equals() 比较 包装对象与基本类型比较,返回 true; 包装对象与包装对象比较,返回 true;

public static void main(string[] args) {

integer a = 100;

integer b = 100;

integer c = 200;

integer d = 200;

int e = 100;

int f = 200;

system.out.println(a == b); // true,a 和 b 均是缓存中的同一对象

system.out.println(c == d); // false,200 不在 [-128, 127] 范围内,a 和 b 是新创建的两个不同对象

system.out.println(a == e); // true

system.out.println(c == f); // true

system.out.println(a.equals(e)); // true

system.out.println(a.equals(b)); // true

system.out.println(c.equals(f)); // true

system.out.println(c.equals(d)); // true

}

《阿里巴巴 java 开发手册》中规定:所有整型包装类对象之间值的比较,全部使用 equals 方法比较。 说明:对于integer var = ?在 -128 至 127 之间的赋值,integer 对象是在 integercache.cache 产生,会复用已有对象,这个区间内的 integer 值可以直接使用 == 进行判断,但是这个区间之外的所有数据,都会在堆上产生,并不会复用已有对象,这是一个大坑,推荐使用equals方法进行判断。

9.为什么浮点数运算的时候会有精度丢失的风险?如何解决该问题?

(1)浮点数运算精度不丢失与丢失的演示:

float a = 2.1f - 1.8f;

float b = 1.8f - 1.5f;

system.out.println(a); // 0.29999995

system.out.println(b); // 0.29999995

system.out.println(a == b); // true

float c = 2.0f - 1.9f;

float d = 1.8f - 1.7f;

system.out.println(c); // 0.100000024

system.out.println(d); // 0.099999905

system.out.println(c == d); // false

(2)精度可能丢失的原因:计算机底层的数据是用是二进制来表示的,并且计算机在表示一个数字时,其宽度是有限的,因此无限循环的小数存储在计算机时,只能被截断,所以就会导致小数精度丢失的情况。例如,十进制下的 0.2 就无法精确转换成二进制小数:

/*

0.2 转换为二进制数的过程如下:

(1) 不断乘以 2,直到不存在小数为止;

(2) 在计算过程中,得到的整数部分从上到下排列就是二进制的结果;

*/

0.2 * 2 = 0.4 -> 0

0.4 * 2 = 0.8 -> 0

0.8 * 2 = 1.6 -> 1

0.6 * 2 = 1.2 -> 1

0.2 * 2 = 0.4 -> 0(发生循环)

...

(3)解决方法:java.math 包中的 bigdecimal 可以实现对浮点数的运算,并且不会造成精度丢失问题。通常情况下,大部分需要浮点数精确运算结果的业务场景(比如涉及到钱的场景)都是通过 bigdecimal 来做的。

bigdecimal a = new bigdecimal("2.0");

bigdecimal b = new bigdecimal("1.9");

bigdecimal c = new bigdecimal("1.8");

bigdecimal d = new bigdecimal("1.7");

bigdecimal e = a.subtract(b);

bigdecimal f = c.subtract(d);

system.out.println(e); // 0.1

system.out.println(f); // 0.1

system.out.println(objects.equals(e, f)); // true

10.超过 long 整型的数据应该如何表示?

如果要表示超过 long 整型范围的数,可以使用 java.math 包中的 biginteger 类,biginteger 类实现了任意精度的整数运算。

// 9999999999999 已经超过 long 所能表示的范围

biginteger a = new biginteger("9999999999999");

biginteger b = new biginteger("1");

biginteger c = a.add(b);

system.out.println(c); // 10000000000000

11.对于整型数据来说,存在 i 使得 i 1 < i 吗?

(1)存在,i = integer.max_value,即 i = 2147483647;

(2)原因分析 计算机底层在进行加法运算时,会先将要相加的数转换为二进制补码,然后再将其相加。由于int 的取值范围是:-2147483648 ~ 2147483647 (-231 ~ 231 - 1)。当 i = integer.max_value,即 i = 2147483647时,其二进制补码如下所示,第一位的 0 是符号位,表示该数为正数。

01111111111111111111111111111111

从 int 的表示范围来看,i 1 的结果显然超出了其表示范围。但是,在计算机底层进行计算时,i 1 的补码是

10000000000000000000000000000000

该补码正好表示 integer.min_value,如果将 int 的表示范围看成一个环的话,当 i 1 的结果大于 integer.max_value 时,那么从补码的角度来看,i 1 会回到最小值,并且编译器不会提示报错。同理,当 i = integer.min_value时,i - 1 > i。

(3)代码验证

public static void main(string[] args) {

int i = integer.max_value;

system.out.println("i = " i);

system.out.println("i 1 = " (i 1));

system.out.println("i 1 < i 的结果为:" (i 1 < i));

//查看 i 和 i 1 的二进制补码表示

string stri = integer.tobinarystring(i);

string strip1 = integer.tobinarystring(i 1);

system.out.println("i 的二进制补码表示为:" stri);

system.out.println("i 1 的二进制补码表示为:" strip1);

}

结果如下:

i = 2147483647

i 1 = -2147483648

i 1 < i 的结果为:true

i 的二进制补码表示为:1111111111111111111111111111111

i 1 的二进制补码表示为:10000000000000000000000000000000

process finished with exit code 0

12.char 型变量中能否存储一个中文汉字,为什么?

char 类型可以存储一个中文汉字,因为 java 中使用的编码是 unicode(不选择任何特定的编码,直接使用字符在字符集中的编号,这是统一的唯一方法),一个 char 类型占 2 个字节(16 比特),所以放一个中文是没问题的。

补充:使用 unicode 意味着字符在 jvm 内部和外部有不同的表现形式,在 jvm 内部都是 unicode,当这个字符被从 jvm 内部转移到外部时(例如存入文件系统中),需要进行编码转换。所以 java 中有字节流和字符流,以及在字符流和字节流之间进行转换的转换流,如 inputstreamreader 和 outputstreamreader,这两个类是字节流和字符流之间的适配器类,承担了编码转换的任务;对于 c 程序员来说,要完成这样的编码转换恐怕要依赖于 union(联合体/共用体)共享内存的特征来实现。

一、内置数据类型

java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。

byte:

byte 数据类型是8位、有符号的,以二进制补码表示的整数; 最小值是 -128(-2^7); 最大值是 127(2^7-1); 默认值是 0; byte 类型用在大型数组中节约空间,主要代替整数,因为 byte 变量占用的空间只有 int 类型的四分之一; 例子:byte a = 100,byte b = -50。 short:

short 数据类型是 16 位、有符号的以二进制补码表示的整数 最小值是 -32768(-2^15); 最大值是 32767(2^15 - 1); short 数据类型也可以像 byte 那样节省空间。一个short变量是int型变量所占空间的二分之一; 默认值是 0; 例子:short s = 1000,short r = -20000。 int:

int 数据类型是32位、有符号的以二进制补码表示的整数; 最小值是 -2,147,483,648(-2^31); 最大值是 2,147,483,647(2^31 - 1); 一般地整型变量默认为 int 类型; 默认值是 0 ; 例子:int a = 100000, int b = -200000。 long:

long 数据类型是 64 位、有符号的以二进制补码表示的整数; 最小值是 -9,223,372,036,854,775,808(-2^63); 最大值是 9,223,372,036,854,775,807(2^63 -1); 这种类型主要使用在需要比较大整数的系统上; 默认值是 0l; 例子: long a = 100000l,long b = -200000l。 "l"理论上不分大小写,但是若写成"l"容易与数字"1"混淆,不容易分辩。所以最好大写。 float:

float 数据类型是单精度、32位、符合ieee 754标准的浮点数; float 在储存大型浮点数组的时候可节省内存空间; 默认值是 0.0f; 浮点数不能用来表示精确的值,如货币; 例子:float f1 = 234.5f。 double:

double 数据类型是双精度、64 位、符合ieee 754标准的浮点数; 浮点数的默认类型为double类型; double类型同样不能表示精确的值,如货币; 默认值是 0.0d; 例子:double d1 = 123.4。 boolean:

boolean数据类型表示一位的信息; 只有两个取值:true 和 false; 这种类型只作为一种标志来记录 true/false 情况; 默认值是 false; 例子:boolean one = true。 char:

char类型是一个单一的 16 位 unicode 字符; 最小值是 \u0000(即为0); 最大值是 \uffff(即为65,535); char 数据类型可以储存任何字符; 例子:char letter = ‘a’;。

二、包装类型

基本类型都有对应的包装类型,基本类型与其对应的包装类型之间的赋值使用自动装箱与拆箱完成。

integer x = 2; // 装箱

int y = x; // 拆箱

下面来看几道面试题 1.

integer x = new integer(123);

integer y = new integer(123);

system.out.println(x == y);

integer z = integer.valueof(123);

integer k = integer.valueof(123);

system.out.println(z == k);

解析: new integer(123) 与 integer.valueof(123) 的区别在于:

new integer(123)每次都会新建一个对象;integer.valueof(123) 会使用缓存池中的对象,多次调用会取得同一个对象的引用

所以答案:false true 2.

integer value1 = new integer(97); integer value2 = new integer(97); system.out.println(value1 == value2); system.out.println(value.equals(value2)); //这个就是比较值 system.out.println("-------------------");

答案 : false true

3. 自动装箱,如果值一样、地址也一样

integer value3 = 127; //自动装箱 integer value4 = 127; system.out.println(value3 == value4); system.out.println(value3.equals(value4)); //这个也是比较值

答案:true true

4.

integer value5 = 128; integer value6 = 128; system.out.println(value5==value6); //false system.out.println(value5.equals(value6)); //true

答案: false true

解析:对于–128到127(默认是127)之间的值,在 java 8 中,integer 缓存池的大小默认为 -128~127。integer.valueof(int i) 返回的是缓存的integer对象(并不是新建对象)所以value3和value4返回的是同一对象,而其他值,执行integer.valueof(int i) 返回的是一个新建的 integer对象,所以范例中,value5 与value6 指向的是不同的对象。 equals() 比较的是两个对象的值(内容)是否相同。"==" 比较的是两个对象的引用(内存地址)是否相同,也用来比较两个基本数据类型的变量值是否相等。

以上几个题其实考核的点都是大概围绕数据类型转换,以及自动装箱拆箱来考的,所以这个就要求我们一定要记住几个基本数据类型的范围排序byte->short->int->long->float->double (范围从小到大),不管拿那个类型来考我们只要知道小范围可以自动转换大范围也就是隐式转换,而小范围要转大范围必须强转才行也就是显示转换 实线表示自动转换时不会造成数据丢失,虚线则可能会出现数据丢失问题。

分享
文章九游会ag官方网站的版权声明:除非注明,否则均为苗坤旺离型膜原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
applausebadlaughcoffeefabulousfacepalmfecesfrownheyhainsidiouskeepfightingnoprobpigheadshockedslapsocialsweattolaughwatermelonwittywowyeahyellowdog
评论列表 (暂无评论,7人围观)

还没有评论,来说两句吧...

微信二维码
微信二维码
支付宝二维码
网站地图