类的成员:属性和方法(方法传递)

一、属性:

在这里插入图片描述

1、成员变量和局部变量的定义:

成员变量:又称属性、字段。是指在类体内,方法体外声明的变量。
局部变量:在方法体内声明的变量。

2、成员变量与局部变量的区别:

成员变量:
(1)定义在类中,在整个类中都可以被访问。
(2)实例成员变量存在堆内存中。
(3)成员变量可以不初始化,有默认值。

默认值规则:

  • 对于各种数字类型, 默认值为0.
  • 对于 boolean 类型, 默认值为 false。
  • 对于引用类型(String, Array, 以及自定制类), 默认值为null。

局部变量:
(1)局部变量只定义在局部范围内,如:方法内,代码块内。
(2)局部变量存在于栈内存中。
(3)局部变量没有默认初始化,每次必须显式初始化。
(4)局部变量作用范围结束,变量空间会自动施放。

3、字段初始化格式:
修饰符 类型 属性名=初值;
class Person {
public String name="zhangsan";
public int age=18;
}

修饰符:可以用来修饰变量,指明变量是公有的还是私有的。

public: 公有的,可以在本类中使用,也可以在类外部使用。
private:私有的,只能在当前类使用。
4、实例变量和类变量定义:

实例变量:又称对象变量,即没加static 的变量。
类变量: 静态变量,也就是在变量前加了static 的变量。

class Test{
public int a;               //实例变量
public static int count;    //类变量
}
5、实例变量与类变量的区别:

实例变量:

  • 类实例化对象之后才能使用,通过对象.属性这样的方式调用。
  • 属与对象私有,某一个对象将其值改变,不影响其他对象。

类变量:

  • 不需要类实例化对象就可以直接使用,通过类名.属性这样的方式直接调用。
  • 所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果。
public class People {
    public int a;             //实例变量
    public  static int b;     //类变量
}
public class Test {
    public static void main(String[] args) {
      People p1=new People();
         p1.a++;
         People.b++;
        System.out.println("p1.a="+p1.a);
        System.out.println("People.b="+People.b);

        People p2=new People();
          p2.a++;
          People.b++;
        System.out.println("p2.a="+p2.a );
        System.out.println("People.b="+People.b);
    }
}

在这里插入图片描述

二、方法:

1、方法用于描述一个对象的行为。
2、语法格式:
修饰符 返回值类型  方法名(参数列表){
   方法体语句;
}

修饰符:public,private,protected等。

public class Person5 {
    public int age=20;
    public String name="zhangsan";
    public void showInfo(){
        System.out.println(age);
        System.out.println(name);
    }
}
3、方法的参数传递:

形参:方法声明时的参数。
实参:方法调用时实际传给形参的参数值。

java里面的参数传递方式只有一种:值传递。

(1) 基本数据类型参数传递:
把实参的值传递到形参上。

public class Test {
    public static void swap(int i){
        System.out.println("swap方法中的参数i的值:" + i);
    }
    public static void main(String[] args) {
        int a =8;
        swap(a);
        System.out.println("main方法中的a的值:" + a);
    }
}

在这里插入图片描述
(2) 引用类型参数传递:
形参是对象,那么实参向形参传递过程中,也是把值传递给形参,这个值是实参在栈内存内存上的值,也就是引用对象在堆内存的地址。

public class Swap {
    public int a=6;
}
public class Test {
    public static void swap(Swap s1){
        s1.a = 8;
        System.out.println("在swap方法中,ds1.a的值是:" + s1.a);
    }
    public static void main(String[] args) {
        Swap  s= new Swap();
        System.out.println("调用swap方法之前,ds.a的值是:" + s.a);
        swap(s);
        System.out.println("调用swap方法之后,ds.a的值是:" + s.a);
    }
}

在这里插入图片描述
总结:基本数据类型,值保存在栈中;引用类型,值保存在堆中,栈中保存的是对象在堆中的地址

发布了75 篇原创文章 · 获赞 14 · 访问量 1917

猜你喜欢

转载自blog.csdn.net/qq_45328505/article/details/104310370