Java 非常简单的基础问题!求助!

zing21cn 2008-01-30 05:43:59
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
...全文
141 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zing21cn 2008-01-30
  • 打赏
  • 举报
回复
那我就不问了!谢谢未来斑竹!
老紫竹 2008-01-30
  • 打赏
  • 举报
回复
请看3楼的第一种解释,不再重复解释!
zing21cn 2008-01-30
  • 打赏
  • 举报
回复
你刚才说 a1 = a1++; 没有改变 a1 值,
那循环当中 for(int i=0; i<10; i++) i 的值被改变了吗?
老紫竹 2008-01-30
  • 打赏
  • 举报
回复
做好类之间的关系。
A 如果需要使用 B, 则必须有B的一个实例,除非B里面的方法是 static 的,就像你前面提到的。

反过来 你要在 B 里面使用 A 也一样的处理。
zing21cn 2008-01-30
  • 打赏
  • 举报
回复
如果 A extends JFrame 也可以这么用吗?
如果 a1 = new JList();
我要在 B 中更改 a1 的背景色,也是是这样吗?
老紫竹 2008-01-30
  • 打赏
  • 举报
回复
想在B中使用A,必须传一个A的实例过去,请参考!
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;
}
}
老紫竹 2008-01-30
  • 打赏
  • 举报
回复
我先声明一下,你为何非得用static来访问呢?这不是一个正确的使用普通类的方法。

你new一个A的实例,所有问题都解决了!
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++;
}
}
老紫竹 2008-01-30
  • 打赏
  • 举报
回复
请注意看下面2个代码的不同结果
a1 = a1++;

int a2 = a1++;

第一种, a1++执行完毕的结果为11, 但因为语法问题,返回的是++前的结果,也就是10,结果又把11给赋值回去了!这是++在后面的语法决定的
第二种,a1++执行完毕后为11, 赋值给了a2,并不影响a1,所以执行完毕后,a1==11了。
zing21cn 2008-01-30
  • 打赏
  • 举报
回复
public class B {
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、该如何实现。

请朋友们给出完整代码!急盼!谢谢!

老紫竹 2008-01-30
  • 打赏
  • 举报
回复
public class A {
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;

任何一种都可以
内容概要:本文档为《Java Web应用程序开发》大作业,主要介绍了一个商品管理系统的设计与实现过程,系统使用JSP、Gradle构建工具、HSQLDB轻量级数据库进行开发。具体实现步骤涵盖了从登录验证到商品管理和图片上传的一系列功能点,其中包括:登录验证、分类管理(创建/修改/删除)、商品展示与新增、以及商品图片上传等操作,所有这些操作的数据存储均通过与后台数据库交互来完成。整个项目强调不引入额外的技术栈和复杂的样式表。 适合人群:适用于已经掌握了基本Java和Web开发概念,正在深入学习Java Web相关技术的大专及以上层次的学生和技术爱好者。 使用场景及目标:旨在让学生能够通过实际动手操作来加深对Java Web开发流程的理解,尤其是掌握JSP动态网页技术的应用、Servlet作为服务器端处理器的工作机制、以及与数据库交互的基础技巧。 阅读建议:为了更好地理解和实施这个项目,建议学生不仅要关注具体的编码细节,还要注重整个项目的架构设计思想。同时,利用好课件提供的指导材料和其他在线学习资源来补充知识点不足的地方。另外,可以通过参与小组讨论或者向老师求助的方式解决遇到的问题

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧