方法的声明和调用

方法只有声明和调用,方法里只能调用其它方法;方法外,只能声明方法(这和接口里的方法定义还不同,是两件事,接口里的方法没有方法体,但要有形参列表;而方法的调用没有形参列表,是传入实参)。
 
调用方法时参数顺序不能颠倒。
 
同一个类里的方法可以直接调用或访问其他方法或属性,包括静态方法或静态属性;
但静态方法例外,静态方法只能直接调用或访问其他的静态方法或静态属性;
要想在静态方法中调用非静态方法或非静态属性,可以利用对象调用或访问。
原因:
画图分析
// 本程序没错,可以通过编译
public class Person {
    private int id;
    private String name;
    private int age;
    
    public static void saiHi(Person _p) {
        _p.id = 7;
        _p.saiHello();
        Person p = new Person();
        p.id = 5;
        p.saiHello();
    }
    public void saiHello() {
        id = 10;
    }
}
代码示例


构造方法不能被继承;
构造方法不能被static 和fianl修饰。???


只有静态的成员变量和成员方法;没有静态的局部变量,因为成员变量保存在堆空间,静态的成员变量保存在数据区,局部变量在方法里,在方法区,这三种不同的变量保存在不同的区域,成员变量静态化后,就不在堆空间了,而局部变量如果也可以静态化,也保存在数据区,那么它就属于类了,就变为了静态的成员变量,静态的成员变量普通方法可以直接访问,那还不如直接声明为静态方法;还有既然静态化了,那么这变量就不再属于这个方法了,也意味着别的方法也可以调用它,那么它还本质上还是静态的成员变量。
public class Test {
    private static int i = 8;
    public static void main(String[] arr) {
        System.out.println(i);
    }
}
static 修饰的属性、方法保存在内存中的datasegment。
 
for循环、switch语句等都必须写在方法里面,必须要用方法包起来。
原文地址:https://www.cnblogs.com/Mike_Chang/p/7050907.html