我有以下代码片段:
class Phone {
String phoneNumber = "123456789";
void setNumber () {
String phoneNumber;
phoneNumber = "987654321";
}
}
class TestPhone {
public static void main(String[] args) {
Phone p1 = new Phone();
p1.setNumber();
System.out.println (p1.phoneNumber);
}
}
我期望结果为“ 987654321”,但是我得到“ 123456789”,就像方法setNumber没有任何效果,任何人都可以帮助我理解
您在方法内重新声明phoneNumber变量,使类中的字段处于阴影中,因此对局部变量所做的任何更改都不会在带阴影的类字段中显示。不要这样
摆脱重复变量声明,以便在字段中看到在方法内所做的更改。
例如,更改此:
void setNumber () {
String phoneNumber; // *** this is a local variable, visible ONLY in the method!
phoneNumber = "987654321"; // this has no effect on the field
}
对此:
void setNumber () {
// String phoneNumber;
phoneNumber = "987654321"; // this will change the field!
}
我想mock接受对象参数的方法。此对象参数是从动态创建的。不会返回预期的结果,尽管这两个对象具有相同的数据,但只是不同的哈希代码。 有没有什么方法来模拟方法,使它能够以预期的结果响应?
在学习Java线程的同步时,我写了两个线程对同一个int变量进行增加的例子来练习wait方法,却发现最终结果与预期结果不符,具体如下: 这是我的线程类NumPlus1,在线程中会循环输出当前线程名和变量i: 这是我的main方法,在main方法里启动了两个名字为“one”和“two”的线程: 按线程类中的while循环,预期结果是one线程和two线程打印信息中的i会按0,1,2,3,4走,但最终
问题内容: 我是新手。 我在下面编写了程序,以允许用户输入名称。 我运行了程序并输入了 尼克松的* 名字 * 为什么总是输出? 问题答案: func(* Reader)ReadString ReadString读取直到输入中第一次出现delim为止,并返回一个字符串,其中包含直到定界符(包括定界符)的数据。 终端输入包括尾随换行符。例如, 输出(Linux): 输出(Windows): 修剪尾随换
我有一个与mockMvc一起工作的JUnit测试,它会发生一些奇怪的事情。我的测试用例看起来像那样... 我希望它能起作用,但我收到了这条信息。 有人能帮我吗?在这种情况下,我用那些... 导入静态组织。汉克雷斯特。配对者*;
我有一个带有两个衰减函数(ES 2.4.4)的查询,我使用对查询项中的衰减函数得分求和。对于测试,我使用来防止任何其他分数(来自查询)影响我的分数(我想测试衰减函数)。 这些是我的衰减函数: 我的结果包括2篇不同日期的文章(2017-08-28,2009-05-08)具有相同的优先级(1000)和相同的分数!(13.122)怎么会这样?为什么没有获得更好的分数?所以我试图解释查询。 对于2017-
问题内容: 下面是一个简单的Java程序。它具有一个称为“ cnt”的计数器,该计数器递增,然后添加到名为“ monitor”的列表中。“ cnt”由多个线程递增,并且值由多个线程添加到“ monitor”。 在方法“ go()”的末尾,cnt和monitor.size()应该具有相同的值,但它们没有相同的值。monitor.size()确实具有正确的值。 如果通过取消注释已注释的同步块之一并注释