قله بلند
پنج شنبه 12 آذر 1388, 13:51 عصر
با سلام
تفاوت switch و if-else-if در دو قطعه کد زیر از منظر کامپایلر در چیست؟
در جایی نوشته بود که: کامپایلر جاوا هنگامیکه یک دستور switch را کامپایل می کند به هر یک از ثابت های case سرکشی نموده و یک جدول jump table می سازد. بنابراین اگر می خواهید از گروه بزرگی از مقادیر انتخاب نمایید، یک دستور switch نسبت به یک ترتیب از if-else ها که به صورت معادل و منطقی کدبندی شده باشد، بسیار سریعتر اجرا خواهد شد.
سوال: مگر تمامی دستورات یک برنامه توسط کامپایلر تفسیر و کد گذاری نمی شوند؟ مگر وجود این جدول نیز خود تفسیری برای کامپایلر نیست؟
public class MissingBreak
{
public static void main(String args[])
{
int i=3;
switch(i)
{
case 0:
System.out.println("i is 0");
break;
case 1:
System.out.println("i is 1");
break;
case 2:
System.out.println("i is 2");
break;
case 3:
System.out.println("i is 3");
break;
default:
System.out.println("Error");
}
}
}
public class MissingBreak
{
public static void main(String args[])
{
int i=3;
if(i==0)
System.out.println("i is 0");
else if(i==1)
System.out.println("i is 1");
else if(i==2)
System.out.println("i is 2");
else if(i==3)
System.out.println("i is 3");
else
System.out.println("Error");
}
}
تفاوت switch و if-else-if در دو قطعه کد زیر از منظر کامپایلر در چیست؟
در جایی نوشته بود که: کامپایلر جاوا هنگامیکه یک دستور switch را کامپایل می کند به هر یک از ثابت های case سرکشی نموده و یک جدول jump table می سازد. بنابراین اگر می خواهید از گروه بزرگی از مقادیر انتخاب نمایید، یک دستور switch نسبت به یک ترتیب از if-else ها که به صورت معادل و منطقی کدبندی شده باشد، بسیار سریعتر اجرا خواهد شد.
سوال: مگر تمامی دستورات یک برنامه توسط کامپایلر تفسیر و کد گذاری نمی شوند؟ مگر وجود این جدول نیز خود تفسیری برای کامپایلر نیست؟
public class MissingBreak
{
public static void main(String args[])
{
int i=3;
switch(i)
{
case 0:
System.out.println("i is 0");
break;
case 1:
System.out.println("i is 1");
break;
case 2:
System.out.println("i is 2");
break;
case 3:
System.out.println("i is 3");
break;
default:
System.out.println("Error");
}
}
}
public class MissingBreak
{
public static void main(String args[])
{
int i=3;
if(i==0)
System.out.println("i is 0");
else if(i==1)
System.out.println("i is 1");
else if(i==2)
System.out.println("i is 2");
else if(i==3)
System.out.println("i is 3");
else
System.out.println("Error");
}
}