JavaSE:类的成员:成员方法

1.类的第二个成员:成员方法

1.一个方法代表一个独立的可复用的功能。

2.如何声明方法

要求:必须再类中,方法的外面,和成员变量是平级的

语法格式:

【修饰符】class类{

【修饰符】 数据类型 成员变量名;

【修饰符】返回值 方法名【形参列表】{

方法体语句块;//实现方法的功能

}

}

返回值的类型:

(1)void 表示没有返回值,这个方法运行结束之后不会返回结果

(2)其他Java数据类型,包括基本数据类型和引用数据类型:表示有返回值,这个方法运行结束之后有结果返回,
调用者在调用这个方法之后,可以接收和处理结果

方法名:

(1)见名知意

(2)第二个单词首字母大写

形参列表

再调用方法时,用来接受参数/数据时用的,这个数据时用于辅助完成功能。

3.如何调用方法

强调:方法调用一次执行一次,不调用,不会执行。

1.格式:

(1)在其它类中:

非静态的方法:

(1)先new这个类的对象

(2)通过对象.调用方法

静态的方法:

直接:类名.方法

在本类中:

静态方法中用静态方法:直接使用

非静态方法中使用非静态方法:直接使用

非静态方法中使用静态方法:直接使用

静态方法中使用非静态方法:不能直接使用,除非有对象

形参与实参

形参:在定义方法是()中参数类型

实参:在调用方法时()中的参数值

形参与实参的关系:

(1)实参时给形参传值用的

(2)实参的类型、个数、顺序与形参列表要一一对应

返回值

如果被调用的方法是void,调用时不能接收返回值,也不能打印返回值
如果被调用的方法是其他类型,调用时可以(但不是必须)用变量接收返回值,或直接打印返回值,或者让返回参与表达式计算

方法调用的内存分析:

(1)方法区: 储存加载的类信息,包括静态变量、常量等

(2)堆:new 出来的对象

(3)栈
java虚拟机栈:运行java代码写的方法

本地方法栈:运行c语言实现的方法

(4)程序计数器:记录每一个线程吓一跳指令等基本信息

栈的特点:先进后出

每一个方法每一次运行/调用时,会在栈中开辟一块独立的内存空间,成为”入栈“

在这个方法的栈空间中,会分配一些内存给该方法的局部变量来存储值。
方法运行结束之后,释放它在栈中的内存,称为“出栈”

(1)先在栈中开辟main空间
(2)出现调用sum方法,再开辟sum空间,sum运行完之后,释放sum内存
(3)出现调用println方法,在开辟println空间,println运行完之后,释放println内存
(4)main后面没有代码了,释放main的空间,程序结束

方法的参数传递机制:

1.传递的什么东西?

(1)基本数据类型的形参:实参–>形参,数据值,copy一份

(2)引用数据类型的形参:实参–>形参。地址值,相同的地址值意味着指向同一个对象

2.在方法体中,对形参做修改,会不会反过来影响实参?

(1)基本数据类型的形参

形参的修改和实参完全无关。因为实参时copy了一份数据值给形参,他俩的内存也没关系。

(2)引用数据类型的形参

修改了形参对象的成员变量值,会影响实参对象的成员变量的值,因为此时形参和实参就是指向同一个对对象。

特别注意:如果形参指向了”新对象“,那么就和实参对象无关了。

1)String是引用数据类型
(2)String类型的对象非常特殊,它是属于不可变对象。
每一次修改都会产生新对象

public class TestPassParam {
//swap交换
static void swap(int a, int b){
int temp = a;
a = b;
b = temp;
}

public static void main(String[] args) {
    int x = 1;
    int y = 2;

    swap(x, y);

    System.out.println("x = " + x);
    System.out.println("y = " + y);
}

}

主题:可变参数

参数:形参和实参
可变:个数

1、什么情况下需要用到可变参数?
举例:
要找出多个整数中的最大值,但是整数的个数不知道,这个时候就可以使用可变参数。

如果没有可变参数的概念,如何解决以上问题呢?找出多个整数中的最大值
int max(int[] arr){
    ....
}

使用可变参数,可以简化原来用数组来解决的部分问题。

2、声明语法格式
【修饰符】 返回值类型 方法名(【其他形参,】 数据类型… 可变参数名){
}

3、如何使用可变参数
(1)在声明它的方法中,如何使用?
当成数组使用
(2)在调用它的时候,如何使用?
A:当成数组一样用也可以
B:可以传入0到n个对应类型的实参值

4、要求/注意点
(1)一个方法最多只能有一个可变参数
(2)可变参数必须是在形参列表的最后一个

变量:

(1)变量的作用:存储数据

(2)变量的本质:代表一块内存区域

(3)变量的三要素:数据类型、变量名、变量值

  1. 变量的分类

    (1)根据数据类型:

    基本数据类型的变量:储存的是数据值

    引用数据类型的变量:储存的地址值,储存的是对象的首地址(包括数组)

    (2)根据变量声明的位置不同划分:

    成员变量:

    在类中,方法和代码块外面

    局部变量:

    在方法,或代码块里面

    包括形参

    5.成员变量和局部变量的区别

    (1)声明位置不同

    (2)内存中的位置不同

    成员变量:

    静态变量:方法区

    实例变量:堆

    局部变量:栈

    (3)是否有默认值

    成员变量:有

    局部变量:没有,必须手动初始化

    (4)作用域

    成员变量:

    (1)静态变量:在本类中任意位置使用,在其他类中,通过“类名.”和对象名.都可以用。

    (2)实例变量:在本类中只能在非静态的方法和代码块中可以使用,在其他类中,通过“对象名.”可以使用

    局部变量:有作用域

    从声明它的位置开始,到它所属的}结束。

    (5)声明周期

    成员变量:

    静态变量和类一样

    实例变量和对象一样,每一个对象都是独立的

    局部变量:每一个调用都是独立的,而且旨在作用域范围内有效

    (6)修饰符不同

    成员变量:很多,例如:static,public等

    局部变量:只能有一个修饰符final

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值