java主函数为什么不能调用函数?java Main函数怎么调用其他函数。 其他类。
大家好,今天小编来为大家解答java主函数为什么不能调用函数这个问题,java Main函数怎么调用其他函数。 其他类。很多人还不知道,现在让我们一起来看看吧!
java中一个程序是否只能有一个主函数
不一定的。
在java程序编写的时候,经常会因为要测试本类中是否能到达目的而进行测试,
并最后保留这些测试代码。
所以整个工程结束后,可能代码中存在大量的main()方法。
但是在java中,每个class类中只能有一个main()方法,也可以没有。
最后,整个工程结束的时候,会找到一个能引导整个程序运行的main()方法来作为程序的入口。
所以说,一个完整的java程序中,可能存在多个main()方法,
但是作为程序入口的只能选其中一个。
java Main函数怎么调用其他函数。 其他类。
主函数main前必须有static修饰符,static表示是静态。
一般,在静态的方法中,若要|-直接-|调用其他方法,那么被调用的也必须是静态。
你的程序中包含两个部分
方法getInt()和主函数main其中主函数是静态(main必须是静态)。
那么要在main中直接调用getInt()是不可以了,因为getInt没有用static修饰,也就是说getInt不是静态。
将public void getInt()修改成 public static void getInt(),追加静态修饰符static后可直接调用。
主函数main修改为
public static void main(String[] args)
{
getInt();//这里调用了上面的方法
System.out.println("总共有括号对数:");
}
返回值:
有些方法是带有返回值的,取决于你的用途。能不能带返回值取决于void修饰符
普通方法,无返回值void修饰。如 public void fangfa()这是无返回值的
public int fangfa()这个是有返回值的,而且返回值必须是int
举个例子
public int getPlayercounts()
{
int playercount= 0;//一般先初始化一个相应的变量待用(重要)
for(int i= 0; i< 99; i++)//一些相关的计算和方法开始..
playercount++;
return playercount;//返回一个int值(重要,而且是必须)
}
当你的方法不是用void修饰而是用其他数据类型修饰,均是要有返回值的,也就是说在方法的结束为止至少要有一个return+相应的数据类型的变量来结束。
那么返回值究竟有什么意义呢?
看下面这个例子、
public static int getPlayercounts()//注意我用了static这是一个静态方法
{
int playercount= 0;//一般先初始化一个相应的变量待用(重要)
for(int i= 0; i< 99; i++)//一些相关的计算和方法开始..
playercount++;
return playercount;//返回一个int值(重要,而且是必须)
}
public static voin main(String[] args)
{
System.out.println("一共有"+getPlayercounts()+"个玩家");
}
看出来了吧,getPlayercounts()执行后会获得执行时得到的int数,在一些需要最后得到某个结果的方法中,用含有返回值的方法是非常方便的。
==============================================
你的代码完全修改后如下,因为你需要的是得到括号数,所以将你的原有方法改成一个返回int值得方法。
public class java
{
public static int getInt()//原来是 public void getInt(),修改后增加了static修饰, int替换了void
{
String strChar="a(bc)()()dnn()()j";
int iX=0;
int iY=0;
for(int p=0; p<strChar.length();p++)
{
String getstr=strChar.substring(p,p+1);
if(getstr.equals("(")){iX++;}
if(getstr.equals(")")){iY++;}
}
return Math.min(iY, iX);//取两者之间的最小值(即括号对数)作为返回值
}
public static void main(String[] args)
{
System.out.println("总共有括号对数:"+getInt());
}
}
郁闷写了半天发现你已经认可了。。
java怎样在主函数里定义函数
main函数是一个程序的入口,也是出口,main函数其实就是类里的一个方法,方法只能在类里声明了,所以maion函数必须声明在一个类里,一个程序里只有一个main函数,因为类与类之间是相与调用的。一个程序从开始运行就会先找main函数,然后再一步一步的执行,如果有多个main那么程序就会报错,因为他不知道该从那个门口(main函数)进,然而类为什么可以有多个呢,你还记的JAVA的三大基本特征么,即封装,继承,多态。而封装就是我们所说的类,他是把所有相同的属性,方法归纳到一起,即组成一个类。这样给你打个比方吧
main函数所在的一个类就相当于一个城市,而main函数就是城市的一个入口,并且只有一个入口,也可是出口,而城市中又有许多小区,我们叫他为类吧,而小区里的房子又基本相同,这也就验证了我们把同一类物品归为一类,即封装在一个类里,而每个小区又不同,这又验证了每一个类的实现功能是不同的,而类与类这间的调用则是用NEW关键字,这个你应该会吧,继承,多态我就不用说
主函数的一般写法如下:
public static void main(String[] args){…}
下面分别解释这些关键字的作用:
(1)public关键字,这个好理解,声明主函数为public就是告诉其他的类可以访问这个函数。
(2)static关键字,告知编译器main函数是一个静态函数。也就是说main函数中的代码是存储在静态存储区的,即当定义了类以后这段代码就已经存在了。如果main()方法没有使用static修饰符,那么编译不会出错,但是如果你试图执行该程序将会报错,提示main()方法不存在。因为包含main()的类并没有实例化(即没有这个类的对象),所以其main()方法也不会存。而使用static修饰符则表示该方法是静态的,不需要实例化即可使用。
(3)void关键字表明main()的返回值是无类型。
**(4)参数String[] args,这是本文的重点。
第一、程序使用者可以在命令行状态下向某个类传递参数。看下面的例子:
public class ArgsDemo{
public static void main(String[] args){
String str= new String();
for(int i= 0; i< args.length; i++){
System.out.println(args[i]);
str+= args[i];
}
System.out.println(str);
}
}
使用javac ArgsDemo.java命令生成ArgsDemo.class文件;然后使用“java ArgsDemo参数一参数二参数三…”的格式向ArgsDemo类传递参数。该示例程序将首先输出参数,然后输出所有参数的和。比如java ArgsDemo a b c,将得到这样的输出:
a
b
c
abc
需要注意的是,如果这里的循环条件不是i<5,则在命令行中输入的参数必须是5个,否则将会报错,错误类型为:
Exception in thread“main” java.lang.ArrayIndexOutOfBoundException:3
at ArgsDemo.main(ArgsDemo.java:5)
第二、可以在另一个类中向包含main()的类传递参数,如下例:
public class A{
public static void main(String[] args)
{
for(int i=0;i
System.out.println(args[i]);
}
}
public class B{
public static void main(String[] args)
{
c= new A();
String[] b={"111","222","333"};
c.main(b);
}
}
首先定义一个class A,在A中定义一个main()函数,在该函数中输出参数args。然后定义一个classB,在B中初始化一个A的实例c,然后向c传递参数,并且调用c的main方法打印出传入的参数值。输出结果如下:
111
222
333
由于main()函数是静态函数,即不需要实例化也能使用,所以B使用下面的写法也能完成相同的功能:
public class B{
public static void main(String[] args)
{
//A c= new A();
String[] b={"111","222","333"};
A.main(b);
}
}
总结:参数args的主要作用是为程序使用者在命令行状态下与程序交互提供了一种手段。此外在其他类中直接使用main()函数,并传递参数也是可行的,虽然这种方法不太常用,但毕竟为我们提供了一种选择。
(以上观点均系个人理解,不准确的地方欢迎批评指正。实例程序均调试通过)
对static的理解还有问题。main方法的代码是存在方法区的。方法不管是否为static的,都存在方法区。
好了,文章到此结束,希望可以帮助到大家。