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);
}
}
以上是全部源码