java 此程序为啥有着这种结果呢?求大神们解释下。谢谢

问题描述

java 此程序为啥有着这种结果呢?求大神们解释下。谢谢

public class AccessProperty
{
static int i = 47; // 定义静态成员变量

public void call()
    { // 定义成员方法
    System.out.println("调用call()方法");
    for (i = 0; i < 3; i++)
        {
        System.out.print(i + " ");
        if (i == 2)
            {
            System.out.println("n");
            }
        }
     }

public AccessProperty()

    { // 定义构造方法
   }

public static void main(String[] args) { // 定义主方法
    AccessProperty t1 = new AccessProperty(); // 创建一个对象
    AccessProperty t2 = new AccessProperty(); // 创建另一个对象
    t2.i = 60; // 将类成员变量赋值为60
    // 使用第一个对象调用类成员变量
    System.out.println("第一个实例对象调用变量i的结果:" + t1.i++);
    t1.call(); // 使用第一个对象调用类成员方法
    // 使用第二个对象调用类成员变量
    System.out.println("第二个实例对象调用变量i的结果:" + t2.i);
    t2.call(); // 使用第二个对象调用类成员方法
}

}

问题:
1.其中t1.i++ 是否等价于 t1.i +1;
2. 为啥结果中t2.i=3?
第一个实例对象调用变量i的结果:60
调用call()方法
0 1 2

第二个实例对象调用变量i的结果:3
调用call()方法
0 1 2

解决方案

其中t1.i++ 是否等价于 t1.i +1;
对于当前行,是这样的,但是不同于 t1.i +1,这会使得t1.i自己也增加一。相当于 t1.i = t1.i +1

static int i = 47;
因此i是在t1 t2共享的,你调用了call或者t2.i t1.i++等都会导致它被更改。

解决方案二:

只是想纠正一下,如果观点不同的话也请忽略。。。
1.其中t1.i++ 是否等价于 t1.i +1; //在此题中t1.i=i;因为是先调用,后自增,不然结果就是61了;
2. 为啥结果中t2.i=3?//原因是调用了call()方法,for循环中将i初始化为0,然后递增到3跳出循环,便就是t2.i=3了
第一个实例对象调用变量i的结果:60
调用call()方法
0 1 2
第二个实例对象调用变量i的结果:3
调用call()方法
0 1 2

时间: 2024-10-28 03:18:38

java 此程序为啥有着这种结果呢?求大神们解释下。谢谢的相关文章

java后台逻辑问题-求大神帮忙解释下这段代码。

问题描述 求大神帮忙解释下这段代码. 这是一个从表添加页面的代码.currentx是当前页数.我想问下 st st1 st2 st3是什么意思,就是split(:):这个方法我不是很清楚什么意思,还有下面的!ss.equals("t") t是什么. 传参什么的我晓得. @RequestMapping("/addProcess.do") public String addProcessMaintenance(String currentx, String ids, S

用java实现这个计算器为什么不能用(点击按钮为啥没反应),求大神解答??

问题描述 用java实现这个计算器为什么不能用(点击按钮为啥没反应),求大神解答?? import java.awt.BorderLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JP

新手求解答一下-关于一个JAVA初级问题。我是新手啊。求大神给代码

问题描述 关于一个JAVA初级问题.我是新手啊.求大神给代码 1:小明左右手分别拿两张纸牌:黑桃10和红心8,现在交换手中的牌.用程序模拟这一过程:两个整数分别保存在两个变量中,将这两个变量的值互换,并打印输出互换后的结果. 输出互换前手中的纸牌: 左手中的纸牌: 10 右手中的纸牌: 8 输出互换后手中的纸牌: 左手中的纸牌: 8 右手中的纸牌: 10 解决方案 int a; int leftHand = 10; int rightHand = 8; a = leftHand; leftHan

java-最简单的struts2程序,总是提示404,求大神指点

问题描述 最简单的struts2程序,总是提示404,求大神指点 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd&qu

c++-初学C++ 一个小程序 求大神帮忙看下

问题描述 初学C++ 一个小程序 求大神帮忙看下 //分秒显示函数 #include using namespace std; //全局引用std命名空间 void showTime(int ,int); int main() { int hours =0 , mins = 0;//定义且初始化分 和秒 cout << "Input the hour "; cin >> hours; cout << "Input the mins &quo

c语言-求大神帮忙读下qt程序

问题描述 求大神帮忙读下qt程序 rebuff.append(c); if(c=='Z' && rebuff.find('!',0)>=0) rebuff=""; if(c=='Z' && rebuff.find('!',0)>=0) rebuff=""; if(c=='Z' && rebuff.find("RFID ID",0)>=0) 这是什么意思?rebuff.append(

c++-关于C++字符串流程序在vc6和vs2005下运行不一致问题,求大神给解释!!!

问题描述 关于C++字符串流程序在vc6和vs2005下运行不一致问题,求大神给解释!!! string input; cin>>input; int len = 0; string strtmp; istringstream strstream(input); strstream>>len>>strtmp; 以上程序在vc6和vs2005运行不一致,不知道是小弟机器原因还是什么问题,很困惑,同样的程序怎么运行不一样呢, 难道是vc6编译器和vs2005编译器差别???

代码分析-JAVA 求大神帮看下这段代码 怎么修改 救命啊

问题描述 JAVA 求大神帮看下这段代码 怎么修改 救命啊 真心看不懂 public static char[] a(char[] paramArrayOfChar) { char[] arrayOfChar1 = new char[12]; char[] arrayOfChar2 = new char[12]; arrayOfChar2[0] = '?'; arrayOfChar2[1] = '?'; arrayOfChar2[2] = 'o'; arrayOfChar2[3] = '/';

计算程序用时-程序运行用时的计算,求大神帮忙

问题描述 程序运行用时的计算,求大神帮忙 在多线程并行处理的程序下如何确定总程序的用时?我通过在main函数刚进入和最后退出时分别尝试加入了clock函数和QueryPerformanceFrequency函数,但执行结果都没有对处理时间的显示,为什么呢?是因为处理线程在最后都被释放了吗?那应该怎样求这个总时间呢?