黑马程序员技术交流社区
标题: 关于基本数据类型初始值问题 [打印本页]
作者: 521123270 时间: 2015-5-17 10:46
标题: 关于基本数据类型初始值问题
1. 下面哪些赋值语句是正确的?( )
A. long test = 012;
B. float f = -412;
C. int other = (int) true;
D. double d = 0x12345678;
E. byte b = 128;
1. 在Java中,下列语句不能通过编译的有( )
A. String s= “join”+ 3;
B. int a= “join”+3;
C. int a= ‘a’+5;
D. float f=5+5.5;
1. 下列哪些代码可以顺利通过编译和运行? ( )
A.Integer i = new Integer('A');
B.Integer i = new Integer("7");
C.Character c = new Character("A");
D.Boolean b = new Boolean(null);
E.Integer i = new Integer("0x10");
这三道题跪求详解!每个选项具体说下!谢谢拉!{:3_64:}
作者: 王建亮 时间: 2015-5-17 10:46
long test = 012;//java会自动将八进制的12转换成一个十进制的数也就是10并赋予test。
float f = -412;//-412为int类型,会自动的转换成float类型在使用的时候已经变成了-412.0
int other = (int)true;//编译不通过,这是不支持的
double d = 0x12345678;//和上面的test是一个道理,只不过像这么大的数会转换成科学计数法来显示
byte b = 128;//直接编译不通过,如果没有记错的话,byte存储的是-128~127之间的整数
因此第一个题的答案是A,B,D
String s = "join"+ 3;//可以通过编译,java支持字符串(或者字符串与数字)之间通过+号来形成一个新的字符串
int a = "join" + 3;//这压根不会通过编译 有木有想过join怎么可能是一个整数呢
int a = 'a' + 5;//java会自动的将'a'转换成ASCII码 并与5相加 'a' = 97 因此 加5后为102
float f = 5 + 5.5;//浮点数默认为double类型,整数默认为int类型,因此5.5是double类型,所占的字节数为8 而float为4 这样的转换会损失精度,因此编译不通过
因此第二题的答案是B,D
Integer i = new Integer('A');//可以通过编译和运行,Integer类提供了两种构造函数一个是直接给定整数数值,还有一种就是给定一个可以让java自动转换成整数的字符或者字符串
Integer i = new Integer("7");//可以通过编译和运行,道理同上 会自动转换成整数7并存储到i所指的对象中
Character c = new Character("A");//不能通过编译,Character只提供给了一种构造函数就是指定一个char类型的数据 不能指定string类型
Boolean b = new Boolean(null);//可以通过编译和运行,通过给布尔类型的构造函数传入一个、 null,那么此boolean会采用默认值,而默认值并不是null,而是false。
Integer i = new Integer("0x10");//不能通过编译,虽然可以直接通过给定一个16进制的数字给 Integer 如:new Integer(0x10),而不能将"0x10"传入integer中。
因此第三题的答案是A,B,C
作者: 桂翔 时间: 2015-5-17 13:45
1. 下面哪些赋值语句是正确的?(A )
A. long test = 012; 012虽然是8进制的数 ,但依然是int类型的数。
B. float f = -412; 浮点类型没有负数
C. int other = (int) true; 不能把布尔值转为整型
D. double d = 0x12345678; 16进制的数也可以赋给double的
E. byte b = 128; 128是int型,int=4个byte,当然放不下
1. 在Java中,下列语句不能通过编译的有( d)
A. String s= “join”+ 3;
B. int a= “join”+3;
C. int a= ‘a’+5;
D. float f=5+5.5; 5.5默认是double型的 只有这样才行5.5f
1. 下列哪些代码可以顺利通过编译和运行? ( )
A.Integer i = new Integer('A');Integer类对象类型能在 int 类型和 String 类型之间互相转换
B.Integer i = new Integer("7");但是字符串转换了至少有2个int类型的数,用一个int类的变量,接
不下
C.Character c = new Character("A"); Character 类型的对象类型为 char 的单个字段。
D.Boolean b = new Boolean(null); Boolean类的初值就是null
E.Integer i = new Integer("0x10");同B
作者: zzlin 时间: 2015-5-17 13:45
ABD
A. long test = 012:012属于八进制转换为十进制为10
B. float f = -412:自动向上转型为float
C. int other = (int) true:boolean类型不能转换为基本数据类型
D. double d = 0x12345678:先把十六进制转化为十进制305419896,然后向上转型
E. byte b = 128:byte的范围-128-127
BD
A. String s= “join”+ 3:字符串与任何类型相加都为字符串
B. int a= “join”+3:该字符串不能转为int类型,以下情况可以转为int:String kk = "123"+6 int gg = Integer.parseInt(kk);
C. int a= ‘a’+5:a在ascii码表中对应的是97
D. float f=5+5.5:定义float变量的时候,一定要在数字后边加上 f,因为实数默认的是double型的,5+5.5的结果是double型的,你要把它付给比它低的float型 要强制转换
ABD
A.Integer i = new Integer('A'):A在ascii中对应的值是65
B.Integer i = new Integer("7"):自动装箱,如果装入的数据在一个字节内实现内存共享 例如:Integer i1 = new Integer("7") Integer i2 = new Integer("7") i1==i2 true
C.Character c = new Character("A"):不能将字符串A传人Character中
D.Boolean b = new Boolean(null):默认值是false
E.Integer i = new Integer("0x10"):string转换不了数值型格式,需要去除0x10的双引号
只是我对这些题的理解,希望可以帮到你
作者: 521123270 时间: 2015-5-17 14:32
float f = -412:这个就没错? float f=5+5.5这就错了!就因为要加F 有什么区别! 那float 和double 有什么区别?各用在什么情况下? 还有 你所说的向上转型什么意思?又没有父类接口的!!转什么?
作者: 521123270 时间: 2015-5-17 14:36
Integer i = new Integer("0x10"):string转换不了数值型格式,需要去除0x10的双引号
Integer i = new Integer("7"): 括号里面不都是字符串吗?双引号。 string转换不了数值型格式,需要去除0x10的双引号这句话不是很明白!!
作者: zzlin 时间: 2015-5-17 15:15
不好意思,表述不正确。Integer i = new Integer("0x10"):string转换不了数值型格式,需要去除0x10的双引号。只是针对这个“0x10”这个字符串。不包括十进制字符串
而我的理解是这样的,你看是否符合,我也是新手
Integer(String str)
String str1 = "7"; 字符串中的字符都必须是十进制数字
Integer ii1 = Integer.parseInt(str1);
String str2 = "0x10";而这个是十六进制的字符串,抛NumberFormatException
Integer ii2 = Integer.parseInt(str2);
Integer(int value) 例如:Integer(0x10)
int ii3 = Integer.valueOf(0x10);//把十六进制转换成十进制
Integer ii4 = new Integer(ii3);
作者: 521123270 时间: 2015-5-17 15:28
Integer i = new Integer("0x10") 其他进制的字符串不可以转吗?一定是十进制的?
作者: 521123270 时间: 2015-5-17 15:30
float f = -412:自动向上转型为float 怎么自动向上转型啊?
作者: zzlin 时间: 2015-5-17 18:25
你可以查一下API
作者: zzlin 时间: 2015-5-17 18:26
float f1 = 410 int->float 410->410.0 不是自动向上转型吗?
float f2 = 5.5 f表示该数字是float型的,如果不写默认是double型。5.5是double类型的需要强制转换为float float f2 = (float)5.5
作者: 飘过的云 时间: 2015-5-17 20:46
1、D
2、B
3、E
作者: 飘过的云 时间: 2015-5-17 20:48
1、D
2、B
3、E
作者: 董小姐 时间: 2015-5-19 20:15
1. 下面哪些赋值语句是正确的?(ABD )
A. long test = 012;
B. float f = -412;
C. int other = (int) true; 布尔类型不能强制转化成int型
D. double d = 0x12345678;
E. byte b = 128; byte范围:-128—+127,越界了
1. 在Java中,下列语句不能通过编译的有(BD )
A. String s= “join”+ 3;
B. int a= “join”+3; 字符串与任何字符相加都是字符串。
C. int a= ‘a’+5;
D. float f=5+5.5; 5.5默认double类型,应该5.5f,
作者: zhuchangbao 时间: 2015-5-20 13:12
已经有问题的解题答案了,请选择最佳答案。
作者: 君子无醉 时间: 2015-5-23 05:46
第一题中的B选项....浮点类型可以有负数吧 亲测: float f=-5.0f; System.out.println(f); //打出-5.0
第二题漏了一个B项
作者: 君子无醉 时间: 2015-5-23 05:48
查看Integer这个类的API构造方法中的第二个 传一个字符串的构造函数,里面声明 这个字符串所表示的数字对基数要是10,应该就是要传十进制的吧.:lol
作者: 君子无醉 时间: 2015-5-23 05:55
float=-412的意思是 -412是int类型, ,可以直接赋值给float类型 不会丢失精度 ,属于默认转换 在float f=5.5+5里面 5.5是小数,也就是说 要么属于double要么属于float 又因为5.5后面没加f 所以5.5是double类型 double类型比float类型高,所以double转float类型会丢失精度 ,不加强制转换的话 没法把double赋值给float 这里的向上转型 说的应该是数据间的向上向下吧 高类型转低类型 向下转型 低类型转高类型 向上转型
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |