2015-05-29 67 views
-1

给出以下声明。 “0”+“123”.charAt(5); 表达式本身的类型是什么?它会是一个字符串还是会导致它没有类型的异常?Java表达式类型

+0

'“charAt'是一个语法错误 – immibis

+1

@immibis NOOOO他应该首先猜测;。!) – Thomas

+0

请先纠正你的语法和编译看到output.Then,如果你面对任何问题发布在这里 – aa1992

回答

1

我期望编译错误。


现在的问题已经被编辑过,我会说,表达的“类型”是String,并执行表达式的结果将是一个java.lang.StringIndexOutOfBoundsException

我怀疑原来的问题是检查你对operator precedence的理解。

你可能有兴趣地注意到这个代码,编译成功的差异:

String s = "0" + "123".charAt(5); 
char c = ("0" + "123").charAt(5); 

注:如果单独执行,任何一行都会抛出StringIndexOutOfBoundsException

+3

请让OP猜测为什么,因为这似乎是一个评估问题,而不是一个实际的编程问题:) – Thomas

+0

当然,他可能试图通过编译它来实现它......你认为他是现在在考试中,什么样的评估提出这样的问题? – Armand

+0

嗯,它可能是Oracle认证之一。我有这些类型:主题是并发性的,你给出了一些代码,问题是“什么是结果呢?“答案:是的因为没有分号,所以没有编译;) – Thomas

1

有几个洛根。问题和我猜你喜欢archieve等什么:

我猜ü意味着字符串“0 + 123”和功能的charAt(INT指数)。该函数返回一个char对象。

,如果我错了你的意思表达,因为它是现在,也将是一个错误:

  • 字符串是不正确的封闭的双引号
  • 不能被解析为一个类型

尝试它就像你在eclipse中写的。

Object test = "0"+123."charAt(5); 

重构这样的:

static Object test = "0"+123;  
System.out.println(((String) test).charAt(5)); // would be still an exception: java.lang.StringIndexOutOfBoundsException: String index out of range: 5 

即使更改属性值设置为 “0 + 123”,它仍然是相同的异常。

希望它可以帮助

+0

编辑现在的问题,写下“0”。 123" .charAt(5); 这是几天前的考试问题。如果解决方案是该类型将是一个字符串。但我不同意,并认为这种类型将是一个例外。我知道这将是一个compilaton错误,所以我想我会问这里,看看你们是否有任何建议,如果你被问到这个问题是什么类型的表达式是 – Vegardh

+0

你不能连接Java字符串''' – Armand

+0

但是即使字符串与'+'串联在一起,也会有一个例外。 charAt()的返回类型仍然是char。所以字符串是错误的。请参阅:http://www.tutorialspoint.com/java/java_string_charat.htm – rmbl