1.方法的所属性
从语法角度来看,方法不能独立定义,必须定义在类中
方法所属性:
有 static 修饰的方法,属于类本身,而不属于实例
没有 static 修饰的方法,属于实例
方法调用: 方法不能独立执行,必须有主调对象(调用者)。
2.Javav方法的参数传递机制:只有一种值传递(副本传递)。
3.形参个数可变的方法
定义格式 type... 形参名
其本质可以理解为是数组
【注意】 -- 每个方法最多只能有一个形参个数可变的参数
-- 形参个数可变的的参数必须位于最后
Example:
// int... 代表可以传入0~N个 int 参数值
public void info(int... nums)
{
//在方法中, nums 相当于一个数组
for(int num :nums)
{
System.out.println("参数为" + num);
}
}
调用形式
对象名.info( 1,2 ,3,...);
或者
对象名.info(new int[] { 1,2,3,... });
// 形参个数可变的的参数(最多只能有一个)必须位于最后
public void info(String str,int... nums)
调用形式
对象名.info( "Hello",1,2 ,3,...);
或者
对象名.info( "Hello",new int[] { 1,2,3,... });
4.递归方法
递归方法其实质是方法里面包含了一个隐式的循环 -- 递归就是在某个方法中再次调用方法本身。
注意:递归一定保证在适合的时候结束调用自身,以免出现“死循环”,所以,递归时,一定要向“结束”端递归。
5.方法重载
方法重载可归纳为:二同,一不同
二同: 同一个类,同一个方法名
一不同 :形参列表不同
注意:
1) 方法重载与 返回值类型 没有任何关系,方法重载允许有不同的 返回值
2)方法重载与 是否有static 修饰 没有任何关系。
确定调用的重载方法:主调者、方法名、匹配实参所对应的类型
6.变量
↗ 没 static -- 实例变量,属于实例
成员变量(Field,在类里定义)
↘ 有 static -- 类变量,属于类
↗
变量
↘ ↗ 方法里面的局部变量,仅在该方法里有效
局部变量 → 代码块里的局部变量,仅在该代码块里有效
↘ 形参,在整个方法里面有效
代码块 -- 是指一个{ } 括起来的范围
=======
成员变量
实例变量 :从有实例开始,实例变量就存在;实例被销毁,实例变量就不存在,实例变量可以有多个,程序每创建一个实例,系统就会为该实例变量分配内存
类 变量 :从定义类开始,类变量就存在;一个JVM里,类信息只有一个,每个JVM最多只加载一个类一次
【注意】
1.系统会为成员变量执行 默认的初始化
2.当程序通过实例来访问 类变量 时,由于类变量本身不属于实例,因此底层实际上是委托为通过类来访问
=======
局部变量
局部变量存在相应的方法栈中
规则:
局部变量绝不允许同名
-- 形参、方法里面的局部变量、代码块里面的局部变量都应该互不相同,即使是变量类型不同,也不能同名;
-- 不同代码块里面的局部变量互不相干,可以同名;
【注意】局部变量必须由程序员赋值,系统不对其执行默认的初始化。