Tag: 变量赋值

Java为参数分配新值,这被认为是一种不好的做法吗?

我在这里已经阅读了这个问题: 为方法参数赋值是否有问题? 。 然而,我不清楚是否做了类似的事情: public void myMethod(Object obj) { doSomething(obj); obj = getNewObj(); } 要么: public void anotherMethod(Object obj) { obj = doSomething(obj): } 这基本上只是为了避免声明一个新的局部变量,这值得吗?,这被视为一种不好的做法吗?

Java中有“this”这个名字吗?

Eclipse会给出一个错误,“赋值的左侧必须是一个变量”,当我尝试类似的东西时: public class Thing{ String a1; int a2; public void meth(){ Thing A = new Thing(); this = A; } } 我必须分配每个变量( this.a1 = A.a1; this.a2 = A.a2; )作为解决方法。 是否有其他方法可以在不通过每个变量字段的情况下执行此操作 如果this不是一个变量,它叫什么?

Java对象分配

我是Java新手,关于对象分配我有一些问题。 例如, Test t1 = new Test(); Test t2 = t1; t1.i=1; 假设变量i是在Test类中定义的,我是否正确假设t1和t2都指向同一个对象,其中修改t1.i=1影响t1和t2 ? 实际上我测试了它,看起来我是对的。 但是当我在String上尝试相同的操作时,修改仅发生在另一侧不受影响的一侧。 这背后的原因是什么? 编辑:我尝试使用String的情况。 String s1 = “0”; String s2 = s1; s1 = “1”; System.out.println(s1); System.out.println(s2); 我通过测试String上的案例来实现我的错误,因为它是不可变的。 我认为s1=”1″修改字符串的情况实际上是将参数“1”返回给s1。 不过,我的问题仍然存在。 Test t2 = t1; 因为t2和t1都指向同一个对象,或者现在每个都有自己的对象? 这种情况是否适用于Java上的所有对象?

在Java中使用“this”

如果我写下面的课程: public class Example { int j; int k; public Example(int j, int k) { j = j; k = k; } public static void main(String[] args) { Example exm = new Example(1,2); System.out.println(exm.j); System.out.println(exm.k); } } 程序编译,但是当我运行程序时,main方法将打印出两个0。 我知道为了说我想在构造函数中初始化实例变量,我必须写: this.j = j; this.k = k; 但是如果我不写它,那么在构造函数中(在表达式的左侧和写入侧)评估(或考虑)哪个变量? 是参数还是实例变量? 这有什么不同吗? 是否有其他情况需要使用thisfunction?

Java运算符:| =按位OR并指定示例

我只是通过有人编写的代码,我看到了|=使用,查看Java运算符,它建议按位或分配操作,任何人都可以解释并给我一个例子吗? 这是读取它的代码: for (String search : textSearch.getValue()) matches |= field.contains(search);

为什么java中不允许赋值给’this’?

我从编译器得到的错误是“赋值的左侧必须是变量”。 我的用例是深度复制,但并不真正相关。 在C ++中,可以分配给*this 。 问题不在于如何规避this分配。 这很简单,但更确切地说,决定不将其变为变量的理由是什么。 原因是技术性的还是概念性的? 我的猜测到目前为止 – 以随机方法重建Object的可能性容易出错(概念性),但技术上可行。 编辑请限制“因为java规范如此说”的变化。 我想知道决定的原因

Java – 操作顺序 – 在单行中使用两个赋值运算符

在一行中使用两个赋值运算符时的操作顺序是什么? public static void main(String[] args){ int i = 0; int[] a = {3, 6}; a[i] = i = 9; // this line in particular System.out.println(i + ” ” + a[0] + ” ” + a[1]); } 编辑:感谢您的post。 我得到了=从右边获取值,但是当我编译它时,我得到: 9 9 6 我认为它本来是和ArrayOutOfBoundsexception,但它在它移动到9 之前分配’a [i]’它是否只是为数组执行此操作?