A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 521123270 中级黑马   /  2015-5-17 10:46  /  4370 人查看  /  18 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

4黑马币
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.      下列哪些代码可以顺利通过编译和运行? (  )
AInteger i =  new Integer('A');
BInteger i = new Integer("7");
CCharacter c = new Character("A");
DBoolean b = new Boolean(null);
EInteger i = new Integer("0x10");
这三道题跪求详解!每个选项具体说下!谢谢拉!{:3_64:}

最佳答案

查看完整内容

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之间的整数 因此第 ...

18 个回复

倒序浏览
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

评分

参与人数 1黑马币 +1 收起 理由
521123270 + 1 赞一个!

查看全部评分

回复 使用道具 举报
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
回复 使用道具 举报
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的双引号

只是我对这些题的理解,希望可以帮到你
回复 使用道具 举报
zzlin 发表于 2015-5-17 13:45
ABD
A. long test = 012:012属于八进制转换为十进制为10
B. float f = -412:自动向上转型为float

float f = -412:这个就没错?  float f=5+5.5这就错了!就因为要加F 有什么区别!   那float 和double 有什么区别?各用在什么情况下?    还有 你所说的向上转型什么意思?又没有父类接口的!!转什么?
回复 使用道具 举报
zzlin 发表于 2015-5-17 13:45
ABD
A. long test = 012:012属于八进制转换为十进制为10
B. float f = -412:自动向上转型为float

Integer i = new Integer("0x10"):string转换不了数值型格式,需要去除0x10的双引号
Integer i = new Integer("7"):   括号里面不都是字符串吗?双引号。   string转换不了数值型格式,需要去除0x10的双引号这句话不是很明白!!
   
回复 使用道具 举报
zzlin 中级黑马 2015-5-17 15:15:10
7#
521123270 发表于 2015-5-17 14:36
Integer i = new Integer("0x10"):string转换不了数值型格式,需要去除0x10的双引号
Integer i = new Int ...

不好意思,表述不正确。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);
回复 使用道具 举报
zzlin 发表于 2015-5-17 15:15
不好意思,表述不正确。Integer i = new Integer("0x10"):string转换不了数值型格式,需要去除0x10的双引 ...

Integer i = new Integer("0x10")  其他进制的字符串不可以转吗?一定是十进制的?
回复 使用道具 举报
zzlin 发表于 2015-5-17 15:15
不好意思,表述不正确。Integer i = new Integer("0x10"):string转换不了数值型格式,需要去除0x10的双引 ...

float f = -412:自动向上转型为float  怎么自动向上转型啊?

点评

系统默认转型, 顺序 byte short char int long float double ,另外boolean不参与转换  发表于 2015-5-23 05:56
回复 使用道具 举报
zzlin 中级黑马 2015-5-17 18:25:13
10#
521123270 发表于 2015-5-17 15:28
Integer i = new Integer("0x10")  其他进制的字符串不可以转吗?一定是十进制的?

你可以查一下API
回复 使用道具 举报
zzlin 中级黑马 2015-5-17 18:26:27
11#
521123270 发表于 2015-5-17 15:30
float f = -412:自动向上转型为float  怎么自动向上转型啊?

float f1 = 410  int->float 410->410.0 不是自动向上转型吗?
float f2 = 5.5  f表示该数字是float型的,如果不写默认是double型。5.5是double类型的需要强制转换为float float f2 = (float)5.5
回复 使用道具 举报
1、D
2、B
3、E
回复 使用道具 举报
1、D
2、B
3、E
回复 使用道具 举报

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,

回复 使用道具 举报
已经有问题的解题答案了,请选择最佳答案。
回复 使用道具 举报
桂翔 发表于 2015-5-17 13:45
1.      下面哪些赋值语句是正确的?(A )
A. long test = 012;        012虽然是8进制的数 ,但依然是int类型的数。 ...

第一题中的B选项....浮点类型可以有负数吧  亲测: float f=-5.0f;   System.out.println(f);  //打出-5.0
第二题漏了一个B项
回复 使用道具 举报
521123270 发表于 2015-5-17 15:28
Integer i = new Integer("0x10")  其他进制的字符串不可以转吗?一定是十进制的?

查看Integer这个类的API构造方法中的第二个 传一个字符串的构造函数,里面声明 这个字符串所表示的数字对基数要是10,应该就是要传十进制的吧.:lol
回复 使用道具 举报
521123270 发表于 2015-5-17 14:32
float f = -412:这个就没错?  float f=5+5.5这就错了!就因为要加F 有什么区别!   那float 和double  ...

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  这里的向上转型 说的应该是数据间的向上向下吧  高类型转低类型 向下转型  低类型转高类型 向上转型   

评分

参与人数 1黑马币 +1 收起 理由
521123270 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马