-------
android培训、
java培训、期待与您交流! ----------
根据函数在程序中调用方式的不同,可以氛围一下几类函数:
这里创建了HelloWorld类的对象实例hw,由它调用show()函数。
静态代码块会在本类被加载的时候就被运行一次,除非类再次被加载,否则不会再被运行。
函数
JAVA中的函数也叫做方法,是执行特定语句的代码块,有一定的格式和写法,基本格式如下:
权限修饰符 最终修饰符 静态修饰符 返回类型 函数名(形式参数类型 形式参数名){
需要执行的代码
//如果是无返回类型,则没有下面这行
return 返回值;
}
根据函数在程序中调用方式的不同,可以氛围一下几类函数:
1、动态函数
只要函数未被静态修饰符(static)修饰,就不是静态的,这种函数需要本类的对象实例才能调用。
public void show(){
System.out.println("HelloWorld");
}
public static void main(String[] args) {
HelloWorld hw = new HelloWorld();
hw.show();
}
这里创建了HelloWorld类的对象实例hw,由它调用show()函数。
2、静态函数
被静态修饰符(static)修饰的函数就是静态函数,调用静态函数时,使用 类名.函数名 的格式即可。
public static void show(){
System.out.println("HelloWorld");
}
public static void main(String[] args) {
HelloWorld.show();
}
因为是在本类的main方法中,所以也可以将本类名省去,使用隐含的this关键字来调用。
public static void show(){
System.out.println("HelloWorld");
}
public static void main(String[] args) {
show();
}
3、main函数
这是一个特定的函数,写法也是固定的
public static void main(String[] args) {
}
表示程序执行的入口。
4、构造函数
用于初始化本类对象的函数,没有返回值,所以也不要写返回值类型,同时函数名与类名一致。
如果不特地写构造函数,则程序会默认一个无参数也无具体动作的构造函数来初始化本类对象。
public HelloWorld() {
super();
}
类似这样,其中super()表示调用父类的构造函数,如果没有标明继承哪个父类,那该函数会调用Object类的构造函数来初始化对象。
super()也可以不写。
5、构造代码块
在对象被初始化时,早于对应的构造函数,先运行一次的代码块,格式是:
{
System.out.println("构造代码块");
}
public HelloWorld() {
super();
System.out.println("构造函数");
}
public static void main(String[] args) {
HelloWorld hw = new HelloWorld();
}
就是大括号中的东西,这个的执行结果是
构造代码块
构造函数
构造代码块中的语句会先执行。(这里绝不是因为构造代码块的语句在上面,构造函数的语句在下面)
6、静态代码块
看起来像是由静态修饰符修饰的构造代码块,因为是静态的,所以会比构造代码块更早运行。
static{
System.out.println("静态代码块");
}
{
System.out.println("构造代码块");
}
public HelloWorld() {
super();
System.out.println("构造函数");
}
public static void main(String[] args) {
HelloWorld hw = new HelloWorld();
HelloWorld hw1= new HelloWorld();
}
静态代码块会在本类被加载的时候就被运行一次,除非类再次被加载,否则不会再被运行。
这里的结果将会是
静态代码块
构造代码块
构造函数
构造代码块
构造函数
因为有两个对象,所以构造代码块和构造函数被运行了两次,但是静态代码块只会运行一次。
7、函数使用中的注意事项
1)一个函数不能被定义在另一个函数体内,但是可以被其它函数调用
2)函数的返回值必须跟它声明的返回值类型相匹配
3)返回值为void(无参数)的函数,不能被作为结果为print()函数打印
4)动态函数可以调用静态函数,但是静态函数无法调用动态函数。