public class A { int a1 = 10;
public void Set1(){
a1 = a1++;
}
public static void main(String[] args) {
Set1();
System.out.println(a1);
}}
目的:我想让a1的值改变一下,然后打印出来。
IDE 告诉我需要声明为 static 的变量和方法 ?
请问:1、如果我不将它们声明为 static ,如何达到目的?以下我声明了 static 变量 和 方法
public class A { static int a1 = 10;
public static void Set1(){
a1 = a1++;
}
public static void main(String[] args) {
Set1();
System.out.println(a1);
}}
请问:2、为什么打印出来的值还是 10
public void Set1(){
a1 = a1++;
}
public static void main(String[] args) {
Set1();
System.out.println(a1);
}}
目的:我想让a1的值改变一下,然后打印出来。
IDE 告诉我需要声明为 static 的变量和方法 ?
请问:1、如果我不将它们声明为 static ,如何达到目的?以下我声明了 static 变量 和 方法
public class A { static int a1 = 10;
public static void Set1(){
a1 = a1++;
}
public static void main(String[] args) {
Set1();
System.out.println(a1);
}}
请问:2、为什么打印出来的值还是 10
解决方案 »
- Swing的一个问题:JLabel中如何设置ImageIcon为自动缩放啊?
- 想用Java做一个小软件,将web页面嵌入软件面板中
- Failed to setAutoCommit to true for pool connection
- redhad下tomcat 不往数据库写数据
- JAVA下包编译的问题,我在 D:\sample 目录下 有几个JAVA文件要编译,其中一个需要调用另外一个CLASS。但是总是提示这些错误。。。。
- java如何解压rar压缩文件
- javaIO问题
- 如何用Java 的socket 来实现服务器和客户端的图象交互传输,急盼!!!
- java中如何检索指定路径下包含特定字符的所有字文件夹和文件
- 如何让客户端知道服务器接收多少数据?获取as3吗?
- 大家看看这个类哪儿错了?
- 【新手提问】鼠标事件问题.为什么非得重写父类的方法才能实现单击事件?
int a1 = 10; public void Set1() {
a1 = a1++;
} public static void main(String[] args) {
A a = new A(); // 得到一个实例即可,这个是最简单,也是最标准的方法
a.Set1();
System.out.println(a.a1);
}
}至于为什么是10
因为你用的是
a1 = a1++;
++在后面,是先把a1 赋值给a1(等同于没有变)
如果你想变,可以用
a1 = ++a1;
a1++;
a1 = a1+1;
a1 +=1;任何一种都可以
int b1;
public B(){
b1= 20;
}
public void Set1(){
b1=b1++;
}
}现在我有一个类 B , 我需要在类 A 中执行以下操作:public class A {
static int a1 = 10;
B b = new B();
public static void Set1(){
a1 = a1++;
}
public void Set2(){
b.Set1();
}
public static void main(String[] args) {
Set2();
System.out.println("b.b1="+b.b1);
}}问题: 3、该如何更改b.b1, 并打印?现在 我需要在类 B 中改变 类 A 的 a1 ,在类 B 中添加(其中:a 是类 A 的实例 )
public void Set2(){
a.a1 = b1 + a1;
}并在类 A 中打印
public static void main(String[] args) {
System.out.println("a.a1="+a.a1);
}问题:4、该如何实现。请朋友们给出完整代码!急盼!谢谢!
a1 = a1++;
和
int a2 = a1++;第一种, a1++执行完毕的结果为11, 但因为语法问题,返回的是++前的结果,也就是10,结果又把11给赋值回去了!这是++在后面的语法决定的
第二种,a1++执行完毕后为11, 赋值给了a2,并不影响a1,所以执行完毕后,a1==11了。
public class A {
int a1 = 10; B b = new B(); public void Set1() {
a1 = a1++;
} public void Set2() {
b.Set1();
} public static void main(String[] args) {
A a = new A(); // 这里
a.Set2(); // 访问实例的方法
System.out.println("b.b1=" + a.b.b1); // 访问实例的属性的属性
}
}class B {
int b1; public B() {
b1 = 20;
} public void Set1() {
b1 = b1++;
}
}
public class A {
int a1 = 10; B b = new B(this); public static void main(String[] args) {
A a = new A();
a.b.Set2();
System.out.println("a.a1=" + a.a1);
}
}class B {
int b1; A a; public B(A a) {
this.a = a;
b1 = 20;
} public void Set1() {
b1 = b1++;
} public void Set2() {
a.a1 = b1 + a.a1;
}
}
如果 a1 = new JList();
我要在 B 中更改 a1 的背景色,也是是这样吗?
A 如果需要使用 B, 则必须有B的一个实例,除非B里面的方法是 static 的,就像你前面提到的。反过来 你要在 B 里面使用 A 也一样的处理。
那循环当中 for(int i=0; i<10; i++) i 的值被改变了吗?