方法只有声明和调用,方法里只能调用其它方法;方法外,只能声明方法(这和接口里的方法定义还不同,是两件事,接口里的方法没有方法体,但要有形参列表;而方法的调用没有形参列表,是传入实参)。
调用方法时参数顺序不能颠倒。
同一个类里的方法可以直接调用或访问其他方法或属性,包括静态方法或静态属性;
但静态方法例外,静态方法只能直接调用或访问其他的静态方法或静态属性;
要想在静态方法中调用非静态方法或非静态属性,可以利用对象调用或访问。
原因:
画图分析
// 本程序没错,可以通过编译 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语句等都必须写在方法里面,必须要用方法包起来。