当我看到以下代码无法按预期工作时,我有些困惑。
我认为Java总是通过引用将变量传递给函数。因此,为什么函数不能重新分配变量?
public static void main(String[] args) {
String nullTest = null;
setNotNull(nullTest);
System.out.println(nullTest);
}
private static void setNotNull(String s) {
s = "not null!";
}
该程序输出null
。
对对象的引用是通过Java中的 值
传递的,因此在方法内部分配给局部变量不会更改原始变量。仅局部变量s
指向新字符串。稍微了解一下ASCII艺术可能会更容易理解。
最初,您有:
------------
| nullTest |
------------
|
null
首次输入方法setNotNull时,您 将在中 获得nullTest 值 的副本s
。在这种情况下,nullTest的值为空引用:
------------ ------------
| nullTest | | s |
------------ ------------
| |
null null
然后重新分配s:
------------ ------------
| nullTest | | s |
------------ ------------
| |
null "not null!"
然后离开方法:
------------
| nullTest |
------------
|
null
我试图在我的程序中实现加密,但在方法上遇到了一些困难。我有一个未加密的数组,它应该保持未加密,另一个数组我想加密。然而,当我调用这个方法时,它会加密两个数组。 我无法发现问题,因为在我的理解中,我返回加密数据并将其分配给另一个数组,但由于某种原因,我传递的数组也发生了变化。 这是输出 提前感谢您的帮助!
我正在迭代Java 7循环和Java 8 循环中的列表。Java 8 循环希望其中的变量不会更改。例如: 有人能解释一下为什么吗?是Java 8的弊端吗?
基本上,我试图用一个名为“a”的变量设置数组的长度,并将其声明为3和int。当我试图用for循环查看所有元素时,我不会将“null”作为元素。到现在为止,一直都还不错。然而,当有人想向该数组中添加一个元素时,我会向提到的变量“a”中添加1,从而延长该数组的长度,并允许我向该数组中再添加一个元素。但它不起作用。以下是代码: }
问题内容: 为什么此代码无法编译? 为什么我不能将类变量传递给? 问题答案: 该操作符对引用类型,像,而不是对象,如。您可能想要类似 旁注:如果编写,您的代码将更加简洁 但是,我不确定是否需要某种方法。
问题内容: 我尝试设置复选框背景颜色的样式,但是无论做什么都不会改变。我正在使用最新的Firefox 29。 CSS中是否有一些规则更改,或者可能在浏览器中? CSS: 问题答案: 复选框无法设置样式。您将需要一个第三方js插件,这里有很多可用的插件。 如果要自己执行此操作,则基本上涉及隐藏复选框以创建一个元素并对其进行样式设置,然后将其click事件绑定到两个函数,一个用于更改其外观,另一个用于
问题内容: 我定义了一个Java函数: 一种调用方式是这样的: 为什么不能通过显式传递泛型类型参数来调用它?: 我从编译器得到错误。 问题答案: 当Java编译器无法自行推断静态方法的参数类型时,您始终可以使用完整的合格方法名称Class来传递它。<类型> method();