java 的变量声明和运算怎么不对了?

直接代码了 \n
int a = 1, b = 2 * a ;
for(a=1;a<10;a++){ //把b=2a放在这里就是
// 2 4 6 8.等
System.out.println(b)//这里输出全是2
} //我在前面不是已经声明了b=2
a了呀。为什么在for里面不能直接呀😞😞

因为a b 都是基本类型, b = 2 * a ;直接就是计算出结果的,下面再改a的值,是不会影响到b的。
你想要的效果应该是那种随着一个变化而变化,那要用引用类型,比如下面这样

public class Test {
    public static void main(String[] args) {
        A a = new A();
        B b = new B(a, 2);
        for (a.num = 1; a.num < 5; a.num++) {
            System.out.println(b);
        }
    }
}

class A {
    int num = 1;
}

class B {
    A a;
    int n;

    public B(A a, int n) {
        this.a = a;
        this.n = n;
    }

    @Override
    public String toString() {
        int num = a.num * n;
        return num + "";
    }
}


int a = 1, b = 2 * a ;
for(a=1;a<10;a++){ 
b=2a
// 2 4 6 8.等
System.out.println(b)//这里输出全是2
} 

你的代码注掉了

代码是从上往下执行的,所以会出现这种情况

前面定义了,只执行一次;
然后for循环里面,你没有再次用它,只是单纯的a的变量增加,然后输出了这么多遍b的值
b的值在上面执行完之后是 2 了
所以最后结果输出全是 2
想要值有所改变 那你放在里面吧 或者定义一个函数 再调用函数