现在,如果我们说`i=9`,它将永远不会被打印,因为我们设置的条件是`i+2`,这将是一个递增的偶数。这意味着不满足条件,并且不执行`if`条件之后的下一步。因此,我们可以说,如果一个条件是真的,只有到那时它才会被执行;否则,将执行`else`块中的条件或语句。当你运行它时,你总是得到输出为`"I did not find"`
在`parentDemo`类中,添加一个名为`getData()`的方法,并在该方法内部给出一条打印语句来显示`"I am in parent class"`消息。如果我们想在`childDemo`类中执行`getData()`方法,我们就在`childDemo`类的`main`方法中写入`cd.getData()`。我们可以访问`getData()`,因为我们继承了`parentDemo`类的属性。如果我们运行`childDemo`类,我们将收到前面示例的输出以及我们在`parentDemo`类`I am in parent class`中添加的新句子。
在`childDemo`类中,我们将定义另一个与`parentDemo`类同名的方法,并添加一个 print 语句来显示`I am in child class`消息。如果我们运行`childDemo`类,我们将获得前面示例的输出,然后显示`I am in child class`。这是因为优先考虑了本地类,所以`childDemo`类中的`getData()`方法会覆盖`parentDemo`类中的`getData()`方法。
在`childDemo`类中,我们将定义另一个与`parentDemo`类同名的方法,并添加一个`print`语句来显示`I am in child class`消息。如果我们运行`childDemo`类,我们将获得前面示例的输出,然后显示`I am in child class`。这是因为优先考虑了本地类,所以`childDemo`类中的`getData()`方法会覆盖`parentDemo`类中的`getData()`方法。
现在,我们想在`childDemo`类中使用`parentDemo`类的`getData()`方法。要做到这一点,我们只需像对待变量那样:在`childDemo`类的`getData()`方法中添加`super.getData()`。当我们运行`childDemo()`类时,我们得到前面示例的输出,然后是`I am in parent class`和`I am in child class`。
`HashMap`允许一个空键和任意数量的空值,`HashTable`不允许`HashTable`对象中的空键和空值。假设您正在将员工记录输入数据库,并且在将员工详细信息上载到数据库时,您可能觉得您不知道他们的电话号码,但您在键值中输入了名为 phone number 的字段,此时索引值将保留为 null;您可以稍后更新它。这在`HashMap`中起作用,但当您使用`HashTable`时,它将不允许任何空键和空值。如果您觉得您的程序非常安全,并且希望阻止多个线程同时访问它,那么您应该使用`HashTable`。`HashTable`是线程安全的,在一个程序完成对`HashTable`的操作之前,它不会将其对象释放给另一个程序。
***原生 C/C++ 库**:该层包含用 C 和 C++编写的原生库,如用于高性能 2D 和 3D 图形处理的 OpenGL ES。
***原生 C/C++ 库**:该层包含用 C 和 C++编写的原生库,如用于高性能 2D 和 3D 图形处理的 OpenGL ES。
***Java API 框架**:Android 的整个功能集可以通过 Java 编写的 API 提供给开发者。这些 API 是创建 Android 应用程序的构建块,例如:视图系统(用于应用程序 UI)、资源管理器(用于 I18N、图形、布局)、通知管理器(用于状态栏中的自定义警报)、活动管理器(用于管理应用程序生命周期)或内容提供商(启用应用程序从其他应用程序(如联系人等)访问数据)。
***应用**:Android 自带一套核心应用,如手机、通讯录、浏览器等。此外,还可以从 Google Play(以前的 Android Market)下载和安装许多其他应用程序: