|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
我有个同学,他是搞Java的,他给我说“Java不是效率低,而是速度慢。”,我不是搞Java的,我实在想不透这句话的含义,难道执行速度不就是效率低吗?难道执行速度慢还成效率高了?编程|收集 1.C#撑持的数据范例有那些?与C++比拟有哪些特性?
【解答】
C#撑持的数据范例有:
(1)值范例
包含:复杂范例、布局范例、列举范例。个中,复杂范例又分为:整型、布尔型、字符型、浮点型、小数型。
(2)援用范例
包含:工具范例、类范例、接口、元数据、字符串范例、数组。
与C++比拟,C#的次要特性有:
1)C#言语自C/C++演化而来。可是,它是完整依照面向工具的头脑来计划的,并包管了范例的平安性。
2)C#简化了C++在类、称号空间、办法重载和非常处置等方面的利用。摒弃了C++的庞大性,使它更容易用、更少堕落。
3)C#削减了C++的一些特征,不再有宏、多重承继。出格对企业开辟者来讲,上述功效只会发生更多的贫苦而不是效益。
4)C#接纳严厉的范例平安、版本把持、渣滓搜集(garbagecollect)等等。一切的这些功效的方针都是对准了开辟面向组件的软件开辟。
5)C#中不再有“::”、“.”、和“->”操纵符,仅利用单个操纵符“.”。
6)C#利用一致的范例体系,摒弃了C++多变的范例体系。
7)在C#中,不克不及在类的内部界说全局函数、变量大概是常量等。一切的器材都必需封装在类中,包含实例成员或静态成员。从而使C#代码加倍易读且有助于削减潜伏的定名抵触。
8)在C#中,不克不及利用没有初始化的变量。从而制止了因为利用不经初始化的变量而招致的盘算了局毛病。
2.C#言语中,值范例和援用范例有何分歧?
【解答】
值范例和援用范例的区分在于,值范例的变量间接寄存实践的数据,而援用范例的变量寄存的则是数据的地点,即工具的援用。
值范例变量间接把变量的值保留在仓库中,援用范例的变量把实践数据的地点保留在仓库中,而实践数据则保留在堆中。注重,堆和仓库是两个分歧的观点,在内存中的存储地位也不不异,堆一样平常用于存储可变长度的数据,如字符串范例;而仓库则用于存储流动长度的数据,如整型范例的数据int(每一个int变量占用四个字节)。由数据存储的地位能够得知,当把一个值变量赋给另外一个值变量时,会在仓库中保留两个完整不异的值;而把一个援用变量赋给另外一个援用变量,则会在仓库中保留对统一个堆地位的两个援用,即在仓库中保留的是统一个堆的地点。在举行数据操纵时,关于值范例,因为每一个变量都有本人的值,因而对一个变量的操纵不会影响到别的变量;关于援用范例的变量,对一个变量的数据举行操纵就是对这个变量在堆中的数据举行操纵,假如两个援用范例的变量援用统一个工具,实践寄义就是它们在仓库中保留的堆的地点不异,因而对一个变量的操纵就会影响到援用统一个工具的另外一个变量。
3.布局和类的区分是甚么?
【解答】
1)布局是一个值范例,保留在栈上,而类是一个援用范例,保留在受控制的堆上。
2)对布局中的数据举行操纵比对类或工具中的数据举行操纵速率要快。
3)一样平常用布局存储多品种型的数据,当创立一个良多类或工具共用的小型工具时,利用布局效力更高。
4.C#中的数组范例有何特性?
【解答】
1)数组一样平常用于存储统一品种型的数据,包含Object范例。
2)数组是一种援用范例,而不是值范例。
3)C#中除能够有一维数组、多维数组外,另有交织型数组。
5.C#中分歧整型之间举行转换的准绳是甚么?
【解答】
在整型之间举行转换时,小局限范例能够隐式转换为年夜局限范例,但年夜局限范例转换为小局限范例时必要利用显式转换。
6.简述装箱和拆箱的历程。
【解答】
装箱是将值范例隐式地转换为object范例大概转换为由该值范例完成了的接口范例。装箱一个数值会为其分派一个工具实例,并把该数值拷贝到新工具中。拆箱是显式地把object范例转换成值范例,大概把值范例完成了的接口范例转换成该值范例。
7.以下写法哪些是毛病的?为何?
1)if(nMyValue1=5)i=1;
2)if(nMyValue2==1)i=1;
3)int[]myInt={1,2,3};
foreach(inttestinmyInt)
{
test++;
Console.WriteLine(temp);
}
4)int[]myInt1={1,2,3};
foreach(inttestinmyInt1)
{
Console>WriteLine(test);
}
【解答】
1)毛病。if中的前提表达式了局不是布尔型。
2)准确。
3)毛病一:temp没有界说。
毛病二:在foreach块内,test作为列举成员是只读的,不克不及利用test++修正其值。
4)毛病。Console后应当是点,而不该该是年夜于号。
8.毛病和非常有甚么区分,为何要举行非常处置,用于非常处置的语句有哪些?
【解答】
毛病是指在实行代码过程当中产生的事务,它中止或搅扰代码的一般流程并创立非常工具。当毛病中止流程时,该程序将实验寻觅非常处置程序(一段告知程序怎样对毛病做出呼应的代码),以匡助程序恢复流程。换句话说,毛病是一个事务,而非常是该事务创立的工具。
当利用短语“发生非常”时,暗示存在成绩的办法产生毛病,并创立非常工具(包括该毛病的信息及产生的工夫和地位)来呼应该毛病。招致呈现毛病和随后非常的要素包含用户毛病、资本失利和编程逻辑失利。这些毛病与代码完成特定义务的办法有关,而与该义务的目标有关。
假如不举行非常处置,即不合错误毛病做出呼应,程序的强健性就会年夜打扣头,乃至没法包管一般运转,以是必需要举行非常处置。
用于非常处置的语句有:try-catch语句、try-catch-finally语句、throw语句。
9.编写一个把持台使用程序,输入1到5的平方值,请求:
1)用for语句完成。
2)用while语句完成。
3)用do-while语句完成。
【解答】
<P> usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
namespaceoutputSquareValue
{
classProgram
{
staticvoidMain()
{
//用for语句完成
for(inti=1;i<=5;i++)
{
Console.WriteLine("{0}的平方值为{1}",i,i*i);
}
//用while语句完成
intj=0;
while(j++<5)
{
Console.WriteLine("{0}的平方值为{1}",j,j*j);
}
//用do-while语句完成
intk=1;
do
{
Console.WriteLine("{0}的平方值为{1}",k,k*k);
}while(k++<5);
Console.ReadLine();
}
}
}
10.编写一个把持台使用程序,请求用户输出5个年夜写字母,假如用户输出的信息不满意请求,提醒匡助信息并请求从头输出。
【解答】
<P> usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
namespaceinputCapitalLetter
{
classProgram
{
staticvoidMain()
{
boolok=false;
while(ok==false)
{
Console.Write("请输出5个年夜写字母:");
stringstr=Console.ReadLine();
if(str.Length!=5)
{
Console.WriteLine("你输出的字符个数不是5个,请从头输出。");
}
else
{
ok=true;
for(inti=0;i<5;i++)
{
charc=str;
if(c<A||c>Z)
{
Console.WriteLine("第{0}个字符“{1}”不是年夜写字母,请从头输出。",i+1,c);
ok=false;
break;
}
}
}
}
}
}
}
11.编写一个把持台使用程序,请求完成以下功效。
1)吸收一个整数n。
2)假如吸收的值n为负数,输入1到n间的全体整数。
3)假如吸收的值为负值,用break大概return加入程序。
4)转到(1)持续吸收下一个整数。
【解答】
<P> usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
namespacetestOutput
{
classProgram
{
staticvoidMain()
{
while(true)
{
Console.Write("请输出一个整数(负值停止):");
stringstr=Console.ReadLine();
try
{
inti=Int32.Parse(str);
if(i<0)break;
for(intj=1;j<=i;j++)Console.WriteLine(j);
}
catch
{
Console.WriteLine("你输出的不是数字或超越整数的暗示局限,请从头输出");
}
}
}
}
}
12.编写一个把持台使用程序,求1000以内的一切“完数”。所谓“完数”是指一个数刚好即是它的一切因子之和。比方,6是完数,由于6=1+2+3。
【解答】
<P> usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
namespacecompleteNumber
{
classProgram
{
staticvoidMain(string[]args)
{
for(inti=2;i<=1000;i++)
{
ints=1;
stringstr="1";
for(intj=2;j<=(int)Math.Sqrt(i);j++)
{
if(j*(i/j)==i)
{
if(j!=i/j)
{
s+=j+i/j;
str+=string.Format("+{0}+{1}",j,i/j);
}
else
{
s+=j;
str+=string.Format("+{0}",j);
}
}
}
if(s==i)Console.WriteLine("{0}={1}",i,str);
}
Console.ReadLine();
}
}
}
你所列的那些其实差不多都可以称为应用服务器(servlet应该说是一种语言更合适)java是开放的,相同的工具就会有很多公司在做,加上java已经发展了很多年了,因此这些工具就很多了。他们很多都是类似的。 |
|