Tag: 变量赋值

在Java中,是一个可赋值给声明的变量iff的表达式。 它可以作为使用相同类型声明的参数传递吗?

这个问题的灵感来自Java 8:是否可以为变量分配方法引用? 。 正如我目前所理解的那样(可能不完全正确),调用fooMethod(FooType ft)作为fooMethod(myFooInstance)会导致fooMethod(myFooInstance)隐式赋值给myFooInstance的局部变量,其名称为ft ,并且其类型声明为FooType 。 显然,在这种情况下,我还可以将myFooInstance分配给类型为FooType的字段或局部变量,例如,在具有声明字段private FooType fooField ,使用this.fooField = myFooInstance; 。 但是,扫描JLS 8.4.1时,在处理方法参数时没有提及赋值。 类似地,JLS 5.3没有提到可分配性,至少对该部分的初始读数是这样。 那么,变量类型的规则是在严格调用和赋值上下文中使用相同的吗? (或者, 当且仅当它可以赋值给具有相同声明的字段/局部变量时,它是否可赋值给方法参数?) (相同的声明意味着字段/本地/参数不是最终的,并且出于此问题的目的不考虑字段的可见性/可访问性) 编辑: FooType不一定是具体的类,而是一个表达我的问题的工具。 它可以是function接口,普通旧接口,代理类,原语等。 要清楚地改写一下,是否有一个值(或函数调用/语言结构返回值的返回值),可以分配给: FooType ft; 或传递给 myMethod(FooType ft){ … 但对于FooType的某种类型选择(这将作为反例并使答案为“否”) 并非两者兼而有之 。

使用嵌套赋值更新表达式中的引用

看一下类似这个问题的示例代码: public class A { public static void main(String args[]){ A a = new A(); System.out.println(a.equals((a = null))); } } 这打印错误。 为什么它不会因NullPointerException而失败? 在equals方法可以运行之前必须处理赋值,但是在评估整行之前,不会以某种方式影响equals的引用? 我没有看到它描述的Java语言规范在哪里,我在某个地方想念它吗?

Java赋值问题 – 这是primefaces的吗?

我对Java的分配有一些疑问。 字符串 我有一节课: public class Test { private String s; public synchronized void setS(String str){ s = s + ” – ” + str; } public String getS(){ return s; } } 我在我的setter中使用“synchronized”,并在我的getter中避免它,因为在我的应用程序中,有大量的数据获取,并且设置很少。 必须同步设置以避免不一致。 我的问题是:获取和设置变量primefaces? 我的意思是,在multithreading环境中,Thread1即将设置变量s,而Thread2即将获得“s”。 有没有办法getter方法可以得到一些不同于s的旧值或s的新值(假设我们只有两个线程)? 在我的应用程序中获取新值并不是一个问题,并且获取旧值不是问题。 但我能得到别的东西吗? HashMap的获取和推送怎么样? 考虑到这个: public class Test { private Map map = Collections.synchronizedMap(new HashMap()); public synchronized void setMapElement(Integer […]

复合inheritance:如何在子类构造函数中分配一个最终字段,该字段取决于’this’值(向后引用)?

我使用复合类来分组function。 但是,A类(具有复合A1)由B(具有复合B1)inheritance,并且A1处存在的行为将在B1处被调整,但是最终a1必须是B1实例才能使其工作。 Obs。:我有办法确保复合实例化正确发生(仅由其复合伙伴)。 无法将B1对象分配给a1 final字段: class finalFieldTestFails{ class A1{ A1(A a){} } class A{ protected final A1 a1; A(){ this.a1 = new A1(this); } A(A1 a1){ this.a1 = a1; } } class B1 extends A1{ B1(B b){ super(b); } } class B extends A{ //B(){ super.a1=new B1(this); } //FAIL: cant change final value //B(){super(new B1(this));} […]

这里发生了什么? java分配问题OCJP

两段代码,一块有效,另一块没有,但两者似乎做同样的事情 这很有效 short s=7; 但事实并非如此。 这给出了错误,无法将int赋值为short。 我默认知道一个整数的字面值是int但是如果它可以直接在上面分配,那么为什么不传递给方法呢? class Demo1{ public static void main(String[] args){ new Demo1().go(7); } void go(short s){System.out.println(“short”);} }

Java – 将数组值分配给各个变量的快速方法

我有一个方法将返回一个数组中的两个字符串,精确split(str, “:”, 2) 。 在java中是否有更快的方法将数组中的两个值分配给字符串变量 String[] strings = str.split(“:”, 2); String string1 = strings[0]; String string2 = strings[1]; 例如,有一个类似的语法 String = str.split(“:”, 2); 提前致谢。

Java构造函数引用赋值与新创建的对象赋值

我在代码中遇到了我们的项目: MyInterface var = MyClass::new; 有没有区别 MyInterface var = new MyClass(); 懒?

Java – 用于循环声明的逗号运算符

我知道我可以像这样使用逗号运算符 for (int i = 1, j = 15; j>10; i++, j–) { // do something neat } 但是有些文章似乎暗示逗号运算符可以在for循环声明之外使用,例如 int j = 2, k = 4 ; int x ; // Assignment statement with comma operator x = j + 1, k ; 来源: http : //www.cs.umd.edu/~clin/MoreJava/ControlFlow/comma.html 要么 int x = (expression) ? (i++,2) : […]

Java程序使用4D数组

我是第一年的计算机工程专业的学生,​​我在这里很新。 在过去的三个半月里,我一直在学习Java,在此之前我已经学习了六个月的C ++。 我对Java的了解仅限于定义和使用自己的方法,面向对象编程的绝对基础知识,如使用静态数据成员和成员可见性。 今天下午,我的计算机编程教授教我们Java中的多维数组。 关于多维数组只是数组的数组,依此类推。 他提到,在名义教育编程中,几乎从不使用超过2维的数组。 甚至3Darrays也仅在绝对必要的地方使用,例如执行科学function。 这使得4Darrays零使用,因为使用它们显示“我使用错误的数据类型”,在我的教授的话。 但是,我想编写一个程序,其中使用任何数据类型(原始或其他)的4D数组是合理的。 该程序不能像打印数组元素那样简单。 我不知道从哪里开始,这就是我在这里发布的原因。 我想要你的建议。 还欢迎相关的问题陈述,算法和代码片段。 谢谢。 编辑:忘记提及,我完全不知道在Java中使用GUI,所以请不要发布实现GUI的想法。

Java数组赋值(多个值)

我已经定义了一个Java数组,例如 float[] values = new float[3]; 我想在代码中进一步做这样的事情: values = {0.1f, 0.2f, 0.3f}; 但这给了我一个编译错误。 是否有更好的方法一次定义多个值,而不是这样做?: values[0] = 0.1f; values[1] = 0.2f; values[2] = 0.3f; 谢谢!