Tag: 运算符

Java值加变量++

请考虑以下代码 int val1 = 3; val1++; int val2 = val1++; System.out.println(val1); System.out.println(val2); Val1值= 5; Val2值= 4; 为什么Val1的值为“5”? 据我所知,它应该是4,因为:在第1行,它被赋值为3,在第2行上,通过val1 ++添加,这导致val1为4。 Val2是val1的值,因此4加1,即5 如果编译器给val1一个值为5,val2给一个值为4,我在这里不理解或缺少什么? 我意识到第二次使用val1 ++但它被分配给val2,并且不应该影响val1s值,或者我错了吗?

Java:使用颜色操作(加,减)? – 恒定类中的颜色

我正在使用java.awt.Color实例。 有没有办法对颜色进行算术运算? 像rgb(20, 20, 20) + rgb(10, 200, 170) = rgb(30, 220, 190) ? 我正在尝试做的事情:我有一个带有桌子的gui,如果用户点击一个单元格,其他单元格会根据它们与所选单元格的关系改变颜色。 我正在寻找一种方法来避免硬编码基色是什么,以及它们改变的颜色值。 因此,所选单元格可能是rgb(255, 0, 0) ,其他所有内容可能基于它们的值在rgb(0, 0, 0)和rgb(0, 255, 0) 。 我在想…枚举? import java.awt.Color; public enum ColorConstant { SELECTED (new rgb(255, 0, 0), “Red”), MAX_DISTANCE (new rgb(0, 255, 0), “Green”) private Color shade; private ??? whichColorToModify; }

比较字符串就好像它们是数字一样

我想知道是否有可能比较字符串就好像它们是数字一样。 比如有没有什么方法可以让”Cat” > “Dog”

Java int + =双语法惊喜

我遇到了以下令人惊讶的问题: int x = 7; x += 0.5; 显然是合法的语法! 在添加之后,x仍然是7,因此double被强制转换为int并向下舍入为0,但这在代码中没有任何显式强制转换的情况下完成。 有人对此感到惊讶吗? 这里的理由是什么? 编辑以澄清我的问题:任何人都可以给出这个决定的充分理由吗? 我觉得这是一个需要在其他地方进行显式投射的可怕决定,但是在你默默抛弃数据的语言中有这一点。 我错过了什么吗?

如果删除+和++运算符之间的空格会发生什么?

编辑1 免责声明: 我知道 +++ 不是真正的运算符,而是没有空格的+和++运算符。 我也知道没有理由使用它; 这个问题只是出于好奇。 所以,我很想知道Java中是否需要+和++var之间的空格。 这是我的测试代码: int i = 0; System.out.println(i); i = i +++i; System.out.println(i); 打印出: 0 1 这就像我期望的那样,就像第一个和第二个+之间有一个空格一样。 然后,我尝试使用字符串连接: String s1 = “s ” + ++i; System.out.println(s1); // String s2 = “s ” +++i; 打印出: s 2 但是如果第三行是未注释的,则代码不会编译,错误如下: Problem3.java:13: unexpected type required: variable found : value String s2 = “s […]

s = s + s和s + = s之间的差异与短

我做了一点测试来操纵一个short ,我遇到了一个编译问题。 以下代码编译: short s = 1; s += s; 虽然这个没有: short s = 1; s = s + s; //Cannot convert from int to short 我已经读过shorts被自动提升为int ,但这两个代码有什么区别?

C#==运算符详细说明了什么?

在c#中,当你在两个对象上与“==”运算符进行比较时,后台究竟会发生什么? 它只是比较地址? 或者它是否像Equals()或CompareTo()? PS:java中的“==”运算符怎么样? 它的行为是否相同?

为什么Java中有两个Right Shift运算符和一个Left Shift运算符?

我是java的新手,并且知道java >>和>>>中有两个Right Shift运算符,但只有一个左移运算符<< 。 为什么会这样?

有没有更优雅的方式来处理Java中的列表? (Python VS Java)

我喜欢用Python处理列表的方式。 它做任何递归解决方案看起来容易和干净。 例如,在Python中获取元素的所有排列的典型问题如下所示: def permutation_recursion(numbers,sol): if not numbers: print “this is a permutation”, sol for i in range(len(numbers)): permutation_recursion(numbers[:i] + numbers[i+1:], sol + [numbers[i]]) def get_permutations(numbers): permutation_recursion(numbers,list()) if __name__ == “__main__”: get_permutations([1,2,3]) 我喜欢通过像numbers[:i] + numbers[i+1:]或sol + [numbers[i]]这样简单地获取修改列表的新实例的方式 如果我尝试在Java中编写完全相同的代码,它看起来像: import java.util.ArrayList; import java.util.Arrays; class rec { static void permutation_recursion(ArrayList numbers, ArrayList sol) { if (numbers.size() == […]

为什么递减循环比递增循环运行得更快?

我正在通过递增/递减运算符 , 我遇到了如果我以递减forms运行循环,在这种情况下,它将以增量forms运行得比同一循环更快。 我期待两者都会花费相同的时间,因为将遵循相同数量的步骤。 我在网上搜索但是找不到令人信服的答案。 是否因为与递增运算符相比减量运算符花费的时间更少? for(int i = 100000; i > 0; i–) {} for(int i = 1; i < 100001; i++) {}