Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于android开发中使用的java语法的问题_Java_Android_Syntax - Fatal编程技术网

关于android开发中使用的java语法的问题

关于android开发中使用的java语法的问题,java,android,syntax,Java,Android,Syntax,我正在阅读一篇关于android开发的初学者教程,其中的代码中有这样一行: TextView fortune = (TextView) findViewById(R.id.fortune_text); 我对Java相当陌生,但我了解创建变量的基础知识。因此,创建一个新的int变量: int-someInt=4 看起来和上面发生的事情有点不同。我猜我们是在创建TextView对象的实例,然后从TextView类调用findViewById方法?但是为什么会出现(文本视图)位呢?我们告诉jav

我正在阅读一篇关于android开发的初学者教程,其中的代码中有这样一行:

TextView fortune = (TextView) findViewById(R.id.fortune_text);  
我对Java相当陌生,但我了解创建变量的基础知识。因此,创建一个新的int变量:

int-someInt=4


看起来和上面发生的事情有点不同。我猜我们是在创建TextView对象的实例,然后从TextView类调用findViewById方法?但是为什么会出现(文本视图)位呢?我们告诉java在这里做什么?

findViewbyId()
返回一个
视图
TextView
View
的一个子类,它使用
(TextView)
部分将其强制转换为
TextView

findViewbyId()
返回一个
视图
TextView
View
的一个子类,它使用
(TextView)
部分将其强制转换为
TextView

基本上,语句的左半部分是您分配的内容-右半部分(在=)是值/对象的来源:

TextView fortune = (TextView) findViewById(R.id.fortune_text); 
上面的一行声明了TextView类型的对象变量,并将其分配给方法
findViewById(String)
的返回。
(TextView)
部分确保方法返回被强制转换为TextView对象。要复制对象,可以编写:

TextView someFortune = fortune;
这与下一行的语法更接近(因为您正在分配相同/兼容的类型)

下一行:

int someInt = 4;
声明一个
int
,并只分配其值(无方法调用)。因为“4”是一个
int
,所以不需要显式强制转换它的类型(反正它是原语)

更新:

对象类型转换的说明:


基本上,语句的左半部分是您分配的内容-右半部分(在=)是值/对象的来源:

TextView fortune = (TextView) findViewById(R.id.fortune_text); 
上面的一行声明了TextView类型的对象变量,并将其分配给方法
findViewById(String)
的返回。
(TextView)
部分确保方法返回被强制转换为TextView对象。要复制对象,可以编写:

TextView someFortune = fortune;
这与下一行的语法更接近(因为您正在分配相同/兼容的类型)

下一行:

int someInt = 4;
声明一个
int
,并只分配其值(无方法调用)。因为“4”是一个
int
,所以不需要显式强制转换它的类型(反正它是原语)

更新:

对象类型转换的说明:

我猜我们是在创建TextView对象的实例,然后从TextView类调用findViewById方法

TextView fortune
部分没有创建任何内容,只是声明了一个
TextView
类型的变量

findViewById()
方法返回一个
View
实例,它是所有小部件的父类。要将其用作
文本视图
,必须先将其强制转换

我猜我们是在创建TextView对象的实例,然后从TextView类调用findViewById方法

TextView fortune
部分没有创建任何内容,只是声明了一个
TextView
类型的变量


findViewById()
方法返回一个
View
实例,它是所有小部件的父类。要将其用作
文本视图
,必须首先强制转换它。

示例中的强制转换与继承有关。方法
findViewById
返回类
View
的实例/对象,即返回视图/小部件
TextView
View
的一个子类,是您想要访问的对象类型。转换位——
(TextView)
——是通知编译器您的意图的方式,即您希望访问
TextView
提供的扩展方法集,而不仅仅是任何
视图


可能值得检查更多细节。

示例中的强制转换与继承有关。方法
findViewById
返回类
View
的实例/对象,即返回视图/小部件
TextView
View
的一个子类,是您想要访问的对象类型。转换位——
(TextView)
——是通知编译器您的意图的方式,即您希望访问
TextView
提供的扩展方法集,而不仅仅是任何
视图


可能值得查看更多详细信息。

查看geek_ji在这里发布的答案,以获得一个非常基本的理解。

查看geek_ji在这里发布的答案,以获得一个非常基本的理解。

当你说它将其转换为TextView时,这意味着什么?当你说它将其转换为TextView时,这意味着什么?啊,现在,这就更有意义了。但为什么要将其声明为TextView的变量类型呢?这对变量有什么影响?为什么不告诉java:objectfortune=blablabla?如果你写的是
objectfortune=blablabla
,那么你就不能使用
TextView
类的任何方法,只能使用
Object
类的方法(在这种情况下没有那么有用)。啊,这现在更有意义了。但为什么要将其声明为TextView的变量类型呢?这对变量有什么影响?为什么不告诉java:objectfortune=blablabla?如果你写的是
objectfortune=blablabla
,那么你就不能使用
TextView
类的任何方法,只能使用
Object
类的方法(在这种情况下不是很有用)。你能告诉我为什么我们需要强制转换吗?当我们刚开始编写“TextView Fortune=”时,java不应该知道这一点吗?这是因为您感到沮丧