qwdqwefwf 2022-10-03 10:50 采纳率: 100%
浏览 52
已结题

java中的方法调用——直接调用和类名调用的区别

java中的方法调用——直接调用和类名调用的区别


     public static void main(String[] args)//static必须带上
     {Date d1 =new Date(2022,10,1);
      Date d2 =new Date(2020,3,4);
      Date.dateCompare(d1, d2);
      //dateCompare(d1, d2);     
      dateDifference(d1,d2);
      //Date.dateDifference(d1,d2);
     }

直接调用 dateDifference(d1,d2)和类名调用Date.dateDifference(d1,d2);有何区别(都可以运行)

public class Date {
    //成员变量
    int year;
    int mouth;
    int day;
    //构造方法
    Date(int a,int b,int c)
        {year=a;
         mouth=b;
         day=c;}
    //判断闰年,0是润,1是平
    public int LeapYearJudgment(int a)
        {
            if(a%400==0) return 0;
            if(a%4==0&&a%100!=0)return 0;
            return 1;
         }
    public int LeapYearJudgment()
    {int a=year;
        if(a%400==0) return 0;
        if(a%4==0&&a%100!=0)return 0;
        return 1;
     }
    public int MouthJudgment(int b)
        {switch(b)
                {case 1: case 3:case 5:case 7:case 8:case 10:case 12: return 0;
                 case 4:case 6:case 9:case 11:  return 1;
                 case 2: {int a=LeapYearJudgment();
                             if(a==0)  return 2;
                            if(a!=0)  return 3;
                          }
                 default:return 4;
                }
        }
    int convert()
        {int a=year-1;
         int sum=0;
         int b=mouth-1;
         for(int i=a;i>0;i--) 
             {
             if(LeapYearJudgment(i)==0)   sum+=366; 
              if(LeapYearJudgment(i)==1)   sum+=365;
             }
        
         for(int j=b;j>0;j--)
             {
             if(MouthJudgment(j)==0) sum+=31;
                if(MouthJudgment(j)==1) sum+=30;
                if(MouthJudgment(j)==2) sum+=29;
                if(MouthJudgment(j)==3) sum+=28;
               }
         sum+=day;
        return sum;
        }
    static void  dateCompare(Date m,Date n)
         {int a=m.convert();
          int b=n.convert();
          if(a>b)
              System.out.println(m.year+"年"+m.mouth+"月"+m.day+"日"+"大于"+n.year+"年"+n.mouth+"月"+n.day+"日");
         if(a<b)
             System.out.println(m.year+"年"+m.mouth+"月"+m.day+"日"+"小于"+n.year+"年"+n.mouth+"月"+n.day+"日");
         if(a==b)
             System.out.println(m.year+"年"+m.mouth+"月"+m.day+"日"+"等于"+n.year+"年"+n.mouth+"月"+n.day+"日");
         }
    static void dateDifference(Date m,Date n)
        {int a=m.convert();
          int b=n.convert();
         int c=Math.abs(a-b);
         System.out.println("相差"+c+"天");
        }
     public static void main(String[] args)//static必须带上
     {Date d1 =new Date(2022,10,1);
      Date d2 =new Date(2020,3,4);
      Date.dateCompare(d1, d2);
      //dateCompare(d1, d2);     
      dateDifference(d1,d2);
      //Date.dateDifference(d1,d2);
     }
}

以上是全部源码

  • 写回答

3条回答 默认 最新

  • 心寒丶 全栈领域优质创作者 2022-10-03 10:53
    关注

    同一个类中都一样 ,不同类中需要实例化再调用非static方法,或者类名.static的方法

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 10月11日
  • 已采纳回答 10月3日
  • 创建了问题 10月3日

悬赏问题

  • ¥20 收一个快手协议下单算法
  • ¥15 求一个图片中的成交量选股公式
  • ¥15 已知正方形内随机生成坐标matlab
  • ¥30 关于#python#的问题:我想要的是这79个大特征对于房屋售价的最大的影响前十名(相关搜索:随机森林)
  • ¥15 使用matlab计算自定义特殊函数的二重积分,改变积分顺序所得的结果不同的问题?
  • ¥15 mysql做碎片化处理老是报错怎么办
  • ¥15 如何正确在vs2010中初始化map对象
  • ¥30 mmdet3d模型部署问题
  • ¥15 comsol仿真反射率、吸收率时峰值位置和深度不对!
  • ¥30 Visual Studio找不到sdk,如何解决?