想搞清Java各种方法的区别

最近几天学了有关方法的内容,但是我发现方法有好多种,搞得脑子有点乱,以下是方法的内容,请各位指点迷津,让我理清这些方法的名称和区别,如果有别的我没提到的方法,也可以补充一下,谢谢大家
public static void a()
Public static a()
Void a()
Public a()
Public void a()

public static void a() public表示是公开方法,任何地方都能访问,static表示是静态方法,void无返回值
Public static a() 编译报错,不能这么写,有返回值写返回类型,没有返回值写void
Void a() 没写修饰符就是默认当前包可访问,没写static就是非静态方法,
Public a() 编译报错,不能这么写,有返回值写返回类型,没有返回值写void
Public void a() 没写static就是非静态方法,void无返回值

public static void a() 静态空类型的a类(公共的)
Public static a() 这个应该是a方法(公共的),静态的
Void a() 这个是空类型的a类(非公共的)
Public a() a方法(公共的)
Public void a()空类型的a类(公共的)

有没有void 是有无return
void a 是emplements接口 前面public static省略