Java表达式类型

Java表达式类型,java,types,expression,Java,Types,Expression,鉴于以下陈述。“0”+“123”.字符(5); 表达式本身的类型是什么?它是字符串还是异常导致它没有类型 我预计会出现编译错误 现在问题已经编辑好了,我想说表达式的“类型”是String,执行表达式的结果是java.lang.StringIndexOutOfBoundsException 我怀疑最初的问题是检查你对这个问题的理解 您可能有兴趣注意到这段代码中的差异,这段代码可以成功编译: String s = "0" + "123".charAt(5); char c = ("0" + "12

鉴于以下陈述。“0”+“123”.字符(5);
表达式本身的类型是什么?它是字符串还是异常导致它没有类型

我预计会出现编译错误


现在问题已经编辑好了,我想说表达式的“类型”是
String
,执行表达式的结果是
java.lang.StringIndexOutOfBoundsException

我怀疑最初的问题是检查你对这个问题的理解

您可能有兴趣注意到这段代码中的差异,这段代码可以成功编译:

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

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

有几个问题,我猜您想归档什么,所以:

我猜你指的是字符串“0+123”和函数charAt(int-index)。该函数返回一个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”,它仍然是相同的异常


希望对您有所帮助

。“charAt
是一个语法错误。@immibis nooo他应该先猜一猜!”请先更正语法并编译以查看输出。然后,如果您遇到任何问题,请将其张贴在此处,让OP猜测原因,因为这似乎是一个评估问题,而不是实际的编程问题:)当然。他可能是想把它编译出来的。。。你认为他现在在考试吗?什么样的评估会问这样的问题?嗯,这可能是Oracle认证之一。我有这些类型:主题是并发,向您展示了一些代码,问题是“结果如何?”。答:它无法编译,因为缺少分号;)这是几天前的一道考试题。其中的解决方案是将类型设置为字符串。但是我不同意,我认为这种类型是个例外。我知道这将是一个编译错误,所以我想在这里问一下,如果有人问你们这个问题,表达式的类型是什么,你们有什么建议吗?现在编辑这个问题,并写上“0”。“123”。字符(5);这是几天前的一道考试题。其中的解决方案是将类型设置为字符串。但是我不同意,我认为这种类型是个例外。我知道这将是一个编译错误,所以我想在这里问一下,如果有人问您表达式的类型是什么,您是否有任何建议您不能将java字符串与
连接,但是即使字符串与“+”连接,仍然会有一个例外。charAt()的返回类型仍然是char。所以字符串是绝对错误的。见: