没有idea main方法快捷键的情况下如何让程序运行

这个方法是所有程序员再熟悉不过的方法了,但这个方法又是最特殊的方法,它的名字必须是,它的参数必须是一个字符串数组,它的类型必须是,这么多必须让初学者对其充满充满了疑问却又无可奈何,现在让我们一点点的来分析一下方法!
是一个访问权限修饰符,与相对应的还有、默认(没有任何权限修饰符)、,四种修饰符如其名称所示,分别对应公有、受保护、缺省、私有四种访问级别。外部类仅能处于公有与缺省级别,而内部类、变量、方法可根据需要处于四种级别中任意一种。四种修饰符修饰的类、变量与方法的可见性表所示:
注:空白处均为不可访问
通常我们想要使用某个类的属性或方法时,我们需要创建一个类的对象,并用为该类分配数据空间。但当我们需要让所有对象共用一个属性时,或让某个属性方法不与包含它的类的任何对象关联在一起,能在没有创建对象时直接调用时,这种方法显然不再适用,而关键字却很好的解决了这一问题。让我们来看一段小程序
public class Test{
public static String s="这是一个静态变量";
public static void output(){
System.out.println(s);
接着我们在方法中执行
Test.s="静态变量被初始化了";
Test.output();
System.out.println("*************");
Test f01=new Test();
Test f02=new Test();
f01.s="第一次改变静态变量";
f01.output();
f02.s="第二次改变静态变量";
System.out.println(f01.s);程序运行后得到输出:
静态变量被初始化了
*************
第一次改变静态变量
第二次改变静态变量
从这段程序中可以看见,调用静态方法或变量有两种方法,第一种:通过类名与点运算符调用;第二种:通过对象与点运算符调用。但推荐使用第一种方法,它强调了静态变量与方法的静态性。另外对象f02对作了修改可以看见f01值也发生了改变,这对普通变量是不可理喻的,但在这里,静态变量只有一份存储空间,在加载类的过程完成静态变量的内存分配,因此任何一个对象对静态变量的修改,都可以反应到其他对象中。
基于静态方法可在没有创建对象时直接调用的特殊性,对其也有一些限制
静态方法不能调用非静态属性或方法
静态方法中不能引用、关键字
修饰方法时,该方法的没有返回值,注意:没有返回值与返回值为空()是不同的两个概念,返回值为空它有返回值,并且返回值为。
String[ ] arg
这是一个简单的字符串数组的定义,可根据自己的习惯写为或,其中为自己写的数组名。
说了这么多,大家对方法格式中出现的关键字应该都有了大致了解,现在我们回到方法上来看看为什么是()。
首先,方法是(虚拟机)自动调用,调用方法的位置自然不会在某个类中、或某个包中,因此只有当方法在公有级别上时,才对可见,所以方法需要修饰,同理,方法所在的类也需要修饰符。由于方法是所有程序的入口,也就是被调用时没有任何对象创建,不通过对象调用某一方法,只有将该方法定义为静态方法,所以方法是一个静态方法,既需要修饰。对于程序已经是最底层,由它调用的方法的返回值已经没有任何地方可去,因此,方法返回值为空,既需用修饰。至于方法的参数我们现在已经很少有机会去用它了,它用于在接受命令行传入的参数,试一下面的小程序吧:
public static void main(String[] arg){
System.out.println("输出在命令行接受的参数
for(int i=0;i&arg.i++){
System.out.println(arg[i]);
将其保存为文件然后在命令行转到该文件目录,并输入:
用空格隔开,运行结果:
输出在命令行接受的参数
虽然我们现在很少用到这个参数,但仍然只认有这个参数的为方法,写入其他参数则视为对方法的重载,自己试试吧!
终上所述,方法的格式必须是。
想一下没有方法的程序能不能运行呢?试着去掉方法,写上一个静态块:
在此写入你想要运行的代码
运行一下,看看效果吧!
浏览 16380
浏览: 25307 次
来自: 长沙
贾懂凯 写道是我们班的兄弟吧??有空多交流!
呵呵~!是的,有 ...
是我们班的兄弟吧??有空多交流!
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'android 没有main函数,怎么找到程序执行入口呢?以及activity主要生命周期的方法说明
android应用程序,由一到多个Activity组成.每个Activity没有很紧密的联系,因为我们可以在自己的程序中调用其它Activity,特别是调用自己的代码之外生成的Activity,比如android提供的发短信或者打电话的Activity.
Intent call = new Intent(Intent.ACTION_CALL,Uri.parse("tel:"+phonenumber);
startActivity(call);
Intent sms = new Intent(Intent.ACTION_SENDTO,Uri.parse("smsto:"+phonenumber);
startActivity(sms);
从这点上看,android应用程序实际上是由多个Activity按照一定的次序拼装起来的,只不过拼装的过程中,后台传递了一些数据,使得各个Activity之间能比较好的衔接起来.
扯了这么多,其实我的意思还是想说,android应用程序中,并没有像c++和java这样有main函数来作为应用程序的入口.android应用程序提供的是入口Activity,而非入口函数.
在eclipse中创建一个android应用程序的时候,默认会创建一个Activity.这个Activity实际上就是入口Activity了.从哪里定义它是Activity呢?Manifest.xml文件中定义了整个android应用所包含的Activity.默认生成的Activity的定义为:
action节点中的android.intent.action.MAIN表明它所在的Activity是整个应用程序的入口点.而category中的android.intent.category.LAUNCHER意思是把这个Activityg归属到加载器类,即把这个Activity标注为自动会加载和启动的Activity,这样程序启动时候就先加载这个Activity了.参考手册上是这么说的----"the LAUNCHER category says that this entry point should
be listed in the application launcher."意思和我理解的有出入.不过意思都是说这个Activity要被应用程序加载.
activity主要生命周期的方法说明:
onCreate(Bundle savedInstanceState):创建activity时调用。设置在该方法中,还以Bundle的形式提供对以前储存的任何状态的访问!
  onStart():activity变为在屏幕上对用户可见时调用。
  onResume():activity开始与用户交互时调用(无论是启动还是重新启动一个活动,该方法总是被调用的)。
onPause():activity被暂停或收回cpu和其他资源时调用,该方法用于保存活动状态的,也是保护现场,压栈吧!
  onStop():activity被停止并转为不可见阶段及后续的生命周期事件时调用。
  onRestart():重新启动activity时调用。该活动仍在栈中,而不是启动新的活动。> 问题详情
以下叙述中正确的是()。A.c语言规定必须用main作为主函数名,程序将从此开始执行B.可以在程序
悬赏:0&答案豆
提问人:匿名网友
发布时间:
以下叙述中正确的是()。A.c语言规定必须用main作为主函数名,程序将从此开始执行B.可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行C.c语言程序将从源程序中第一个函数开始执行、D.main的各种大小写拼写形式都可以作为主函数名,如MAIN,Main等请帮忙给出正确答案和分析,谢谢!
为您推荐的考试题库
您可能感兴趣的试题
1有以下程序:程序运行后的输出结果是(
)。A.let=4B.m=2C.m=6D.m=52对于一个正常运行的C程序,以下叙述中正确的是(
)。A.程序的执行总是从main函数开始,在程序的最后一个函数中结束B.程序的执行总是从程序的第一个函数开始,在main函数结束.C.程序的执行总是从main函数开始、D.程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束3下列选项中属于面向对象设计方法主要特征的是(
)。A.继承B.自顶向下C.模块化D.逐步求精4有以下程序:程序运行后的输出结果是(
)。A.1,2,3,0,0,0,0,0,0,0,B.1,2,3,1,2,3,0,0,0,0,C.123,0,0,0,0,123,0,0,0,0,D.1,2,3,0,0,1,2,3,0,0,
我有更好的答案
请先输入下方的验证码查看最佳答案
图形验证:
验证码提交中……
每天只需0.4元
选择支付方式
支付宝付款
郑重提醒:支付后,系统自动为您完成注册
请使用微信扫码支付(元)
支付后,系统自动为您完成注册
遇到问题请联系在线客服QQ:
微信扫一扫
体验上学吧搜题小程序
立即享有15次免费找答案
请您不要关闭此页面,支付完成后点击支付完成按钮
遇到问题请联系在线客服QQ:
恭喜您!升级VIP会员成功
提示:请截图保存您的账号信息,以方便日后登录使用。
常用邮箱:
用于找回密码
确认密码:建议0:不要让main函数返回void
本文所属图书&>&
本书是C++程序员进阶修炼的必读之作,包含的全部都是C++编码的最佳实践,从语法、编码规范和编程习惯、程序架构和设计思想等三大方面对C++程序和设计中的疑难问题给出了经验性的解决方案,为C++程序员编写更高质...&&
同C程序一样,每个C++程序都包含一个或多个函数,而且必须有一个函数命名为main,并且每个函数都由具有一定功能的语句序列组成。操作将main作为程序入口,调用main函数来执行程序;main函数执行其语句序列,并返回一个值给操作。在大多数系统中,main函数的返回值用于说明程序的退出状态。如果返回0,则代表main函数成功执行完毕,程序正常退出,否则代表程序异常退出。
然而在编写C++程序入口函数main的时候,很多程序员,特别是一些具有C基础的C++程序员时经常会写出如下格式的main函数:
void main()
&&& // some code ...
上述代码在VC++中是可以正确编译、链接、执行的。编译信息如下所示:
1&------ 已启动生成: 项目: MainCpp, 配置: Debug Win32 ------
1&& main.cpp
1&& MainCpp.xproj -& G:\MainCpp\Debug\MainCpp.exe
========== 生成: 成功1 个,失败 0& 个,最新 0& 个,跳过 0& 个==========
但是当你将代码放在环境下,采用GCC编译器进行编译时,你会吃惊地发现编译器抛出了如下的错误信息:
[develop@localhost ~]& g++ main.cpp
main.cpp:2: 错误 :'::main' 必须返回'int'
为什么同样的代码会出现两种不同的结果呢?这还是跨平台的C/C++语言吗?不要对C/C++的跨平台性产生质疑,之所以会这样,很大程度上要归结于市面上一些书的&误导&,以及微软对VC++编译器main返回值问题的过分纵容。
在C和C++中,不接收任何参数也不返回任何信息的函数原型为&voidf(void);&。所以很多人认为,不需要程序返回值时可以把main函数定义成voidmain(void),然而这种想法是非常错误的!
有一点你必须明确:在C/C++标准中从来没有定义过voidmain()这样的代码形式。C++之父BjarneStroustrup在他的主页FAQ中明确地写着这样一句话:
在C++中绝对没有出现过voidmain(){/*...*/}这样的函数定义,在C语言中也是。main函数的返回值应该定义为int类型,在C和C++标准中都是这样规定的。在C99标准中规定,只有以下两种定义方式是正确的:
int main( void )
int main( int argc, char *argv[] )
在C++03中也给出了如下两种main函数的定义方式:
int main()
int main( int argc, char *argv[] )
虽然在C和C++标准中并不支持voidmain(),但在部分编译器中voidmain()依旧是可以通过编译并执行的,比如微软的VC++。由于微软产品的市场占有率与影响力很大,因此在某种程度上加剧了这种不良习惯的蔓延。不过,并非所有的编译器都支持voidmain(),gcc就站在了VC++的对立面,它是这一不良习气的坚定抵制者,它会在编译时就明确地给出一个错误。
如果你坚持在某些编译器中使用voidmain()这种非标准形式的代码,那么当你把程序从一个编译器移植到另一个编译器时,你就要对可能出现的错误负责。
除了有voidmain()这样的不规范格式外,在C语言程序中,尤其是一些老版本的C代码中,你还会经常看到main()这样的代码形式。
一些老的C标准(诸如C90)是支持main()这样的形式的。之所以支持,是因为在第一版的C语言中只有int一种数据类型,并不存在char、long、float、double等这些内置数据类型。既然只有int一种类型,也就不必显式地为main函数标明返回类型了。在Brian W.Kernighan和Dennis M.Ritchie的经典巨著《The C Programming Language,Second Edition》中用的就是main()。后来,在C语言的改进版中数据类型得到了扩充,为了能兼容以前的代码,标准委员会就做出了如下规定:不明确标明返回值的,默认返回值为int。在C99标准中,则要求编译器对于main()这种用法至少要抛出一个警告。
main函数返回值的作用,可以采用下面的方法加以验证。
首先,编写main.cpp文件,文件内容如下所示:
int main()
&& return 0;
在环境下,采用命令:
g++ main.cpp
生成可执行文件a.out。然后,执行命令:
./a.out && ehco &success&
结果输出success。
修改上述程序:
int main()
&& return -1;
做同样测试,无输出。
命令A&&B中的&&类似于C++中的并操作(&&),如果A命令正确执行,接着就会执行命令B;如果A出现异常,则B不执行。通过以上分析可知,当main()返回0时,a.out正确执行并返回;但是如果返回-1,程序就不能正常返回了。
最后,还得说明一下C++标准中一个&好坏难定&的规定:
在main函数中,return语句的作用在于离开main函数(析构掉所有具有动态生存时间的对象),并将其返回值作为参数来调用exit函数。如果函数执行到结尾而没有遇到return语句,其效果等同于执行了return0。
也就是说,如果函数执行到main结束处时没有遇到return语句,编译器会隐式地为你加上return0;,效果与返回0相同。之所以说这条规定&好坏难定&,一方面是因为它让你省去了多敲几个字的麻烦;另一方面是因为这种便捷会让某些程序员忽视编译器代替他做的工作,而在思维中形成一种错误的认识:此函数可以无返回。
在应用这一规则时,你还得注意以下这两点:
main函数的返回类型是int,不是void或其他类型。
该规则仅仅对main函数适用。
按照以上标准得到了一个完全合乎C/C++标准的最小化的完整C++程序:
int main()& {& }
本人不推荐使用上述这条规则,建议加上return0;,杜绝那些不必要误解。
要想保证程序具有良好的可移植性能,就要标明main函数返回int,而不是void。强烈建议使用以下形式:
int main()
& // some processing codes
& return 0;
您对本文章有什么意见或着疑问吗?请到您的关注和建议是我们前行的参考和动力&&
您的浏览器不支持嵌入式框架,或者当前配置为不显示嵌入式框架。
文章下载读书

我要回帖

更多关于 main方法 的文章

 

随机推荐