我开始学习Java已经3天了.我有这个程序,我不理解main方法++和--运算符中的代码.我甚至不知道该怎么称呼它们(这些操作员的名字)任何人都可以解释我的全部内容.
class Example {
public static void main(String[] args) {
x=0;
x++;
System.out.println(x);
y=1;
y--;
System.out.println(y);
z=3;
++z;
System.out.println(z);
}
}
Run Code Online (Sandbox Code Playgroud) 这个问题绝对不是重复的,因为我不是指一般的 post/precrement 评估,而是专门指 lambda 表达式中增量的使用,这可证明是不同的。每个人都可以自由确认代码只会在您通常期望变量值增加的地方返回零。对此没有任何答复。
我很清楚后缀和前缀增量的不同评估和增量时刻。尽管如此,我还是不明白为什么这仅返回零:
Stream.iterate(0, e -> e++)
.limit(10)
.forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)
检查时,我看到 e 在第一次迭代期间被初始化为 0,然后递增。所以第二次迭代应该产生 e = 1,但显然它没有。我错过了什么?
此外,如果我反转增量,它会按预期工作,列出从 0 到 9 的所有数字:
Stream.iterate(0, e -> ++e)
.limit(10)
.forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud) 在 Java 中,什么是++int?它有什么作用?这是什么意思?
(抱歉,上次我没有正确提问。)
int z = 1;
System.out.println(z++ == ++z);
System.out.println(++z == z++);
Run Code Online (Sandbox Code Playgroud)
输出将是:
false
true
Run Code Online (Sandbox Code Playgroud)
我不明白为什么,请向我解释一下.
我是 Java 新手。刚刚发现在表达式中,
y=x++, y 假设 x 的值,x 变为 +1。如果我听起来很愚蠢,请原谅我,但根据优先级的顺序,赋值运算符在最后。所以 x++ 不应该先发生,然后是赋值。提前致谢。
我遇到了这段代码:
int a = 1;
int k = ++a + a++ + + 1;
System.out.println(k);
Run Code Online (Sandbox Code Playgroud)
我认为编译器会给出错误,但结果是5?最后一个'+'(加号)符号的目的是什么?是否标志1不是负面或是?为什么Java允许这个作为有效的声明?
考虑:
int[] aryNums=new int[5];
for (int i=0; i<=5; i++)
{
aryNums[i] = i++;
System.out.println(aryNums[i]);
}
Run Code Online (Sandbox Code Playgroud)
为什么不给我数组中的值为1,2,3,4,5?相反,它会给出一个像0,0和错误的异常.
如果我改变了
aryNums[i] = i++; \to
aryNums[i] = i+1;
Run Code Online (Sandbox Code Playgroud)
我在数组中得到值{1,2,3,4,5}.i ++和i + 1之间的区别是什么?
public void length() {
System.out.println(length(head, 0));
}
public int length(Node he, int count) {
if(he!=null) {
// System.out.println(he.data +" "+count++);
// count++;
// return length(he.next, count);
return length(he.next, count++);
}
return count;
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,我必须找到链表的长度.如果我运行相同的代码,我得到的长度为0.但是,当我使用注释代码,我得到正确的长度.为什么会这样?
我明白如果我有以下任务
arr[i++] = 1
相当于
arr[i] = 1;
i++;
Run Code Online (Sandbox Code Playgroud)
但确实
arr1[i++] = arr2[j++]
相当于
arr1[i] = arr2[j];
i++;
j++;
Run Code Online (Sandbox Code Playgroud)
关于什么
int i = 0;
while(i++ < 5){
// do something...
}
Run Code Online (Sandbox Code Playgroud)
机器是否执行 //do something一个然后增加 1 然后评估 i 当前是否 < 5?
有人可以帮我理解这一点吗?
示例代码在这里:
static class stack
{
int top=-1;
char items[] = new char[100];
void push(char x)
{
if (top == 99)
System.out.println("Stack full");
else
items[++top] = x;
}
}
Run Code Online (Sandbox Code Playgroud)
当 items[++top] 出现时到底发生了什么?
public class Class1 {
public static void main(String[] args) {
int myFirstNumber =20;
int mySecondNumber=10;
System.out.println(myFirstNumber+++mySecondNumber);
}
}
Run Code Online (Sandbox Code Playgroud)
mySecondNumber应该增加到11,从而得到总和31
在下面的代码中,在(j = i + 1 ...)和(j = ++ i ...)的内部for循环中得到不同的结果.请问任何人都可以解释在初始化过程中for循环中会发生什么?
public class DuplicateElementsInArray {
public static void main(String[] args) {
String[] names = {"Java", "Python", "C++", "JavaScript", "Java", "Ruby", "C"};
//This is a worst Solution
for(int i = 0; i < names.length; i++) {
//for(int j = i++; j < names.length; j++) {
//for(int j = ++i; j < names.length; j++) {
for(int j = i + 1; j < names.length; j++) {
//System.out.println("j: " + j);
if(names[i].equals(names[j]))
System.out.println("duplicate element: …Run Code Online (Sandbox Code Playgroud) 我执行了代码,输出是19,但我不明白为什么.
public static void main(String[] args)
{
int x = 0;
x = (x = 1) + (x = 2) * (++x) * (x++);
System.out.println(x);
}
Run Code Online (Sandbox Code Playgroud)