尝试使用Charat()尝试将对象击落对象后,没有获得第一个角色;

  • 本文关键字:对象 角色 第一个 Charat java
  • 更新时间 :
  • 英文 :


我试图在试图击落对象后从对象中获取第一个字符,但是我的代码似乎缺少我不知道有什么问题的东西。

String name = "Mike";

如果我尝试使用上述代码,它可以正常工作。

name.charAt(0);

给我们" M"。对吗?

我试图降低(不确定这是正确的术语(,对象说:

Object obj = (String) name;
obj ==> "Mike"; // is what we get

,但是如果我使用该方法:

obj.charAt(0);

我期望相同的结果" m",但它给了我一个错误。我想念什么吗?

您的问题是,通过将String name分配给Object obj您隐藏obj引用的任何内容是String

当然,您可以使用

obj铸造为String
(String)obj

因为基础引用是对String类型对象的引用。

您必须考虑,因为objObject,它可能是您的语言支持的任何类型(是Java吗?(,所以这就是为什么您在执行obj.chatAt(0)时会遇到错误。

如果基本参考是例如,您期望它会返回什么整数?

这就是为什么要使用charAt(),您必须将其扔回String

String str = (String)obj;
char ch = str.charAt(0);

或更简单:

char ch = ((String)obj).charAt(0);

请记住,如果obj的参考同时更改为例如一些整数,您不会成功地施放其他错误/异常。

P.S。示例代码假设您的语言使用char作为包含单个字符的类型。

obj是 Object而不是 String,因此它没有charAt()方法。如果您已经知道您的对象是字符串类型,则可以将其施放((String) obj).charAt(0),也可以使用:obj.toString().charAt(0)

好, casting 表示将一种特定类型的对象和将其变成另一个对象类型。

降低是指将对象施加到更特定的对象类型中。例如:

Object obj = "This is an object";
String s = (String)obj;

现在,您可以 Indoke String中的方法 String s对象上的类。但不是相反。因此,您无法调用直接的实例上类对象

直接在Object obj上使用上述示例中的方法charAt(int index),您需要首先要 downcast 首先您可以继续:

((String)obj).charAt(0); // it will give "T";

此外,如果我这样做:

obj.charAt(0);

当我尝试编译时,它给了我这个错误:

The method charAt(int) is undefined for the type Object

基本上意味着Object类中不存在该方法。

最新更新