java - dName 应该显示“Beta”,但由于某种原因它显示“kamran2”,为什么?
问题描述
我正在练习静态类和数据成员。我创建了一个静态字符串(名称)并以 2 种不同的方法为其赋值。一个是行走(非静态),另一个是说话(静态)。现在在我调用“dName”的主方法中,它应该给我在“说话”方法中启动的值,但它没有给我那个值。
class Human{
int age;
double height;
static String name;
public void walking(){
System.out.println("This person can walk");
name = "Alpha";
}
public static void talking(){
System.out.println("This person can talk");
name = "Beta";
}
}
public class MyClass {
public static void main(String args[]) {
Human kamran = new Human();
Human adnan = new Human();
kamran.name = "kamran";
adnan.name = "kamran2";
String dName = kamran.name;
kamran.walking();
kamran.talking();
System.out.println(adnan.name);
System.out.println(dName);
}
}
解决方案
不,因为您在执行方法之前分配了值。
public static void main(String args[]) {
Human kamran = new Human();
Human adnan = new Human();
kamran.name = "kamran";
adnan.name = "kamran2";
String dName = kamran.name;
kamran.walking();
kamran.talking();
System.out.println(adnan.name);
System.out.println(dName);
}
推荐阅读
- php - Cookie 在 PHP 中的过期日期之前被删除
- electron - 电子。正在渲染一个空白屏幕
- python - 从列表中读取行时的for循环
- bash - 向zabbix发送数据时cron作业不起作用
- php - 浏览器返回后 Textarea 未重置
- python - Pandas 与重复键合并 - 删除重复行或阻止其创建
- selenium - 如何选择 XPath 不固定且有标签的动态 HTML 表的复选框?
- angularjs - 在输入ng-modal中使用数字格式时,angularjs抛出错误
- java - crnk-client 不加载相关资源
- aws-cognito - 使用 AWS Cognito 进行身份验证和授权时如何识别 AWS IoT 中的用户?