java面向对象

类的组成

  • 成员变量
  • 构造方法(有参构造方法/无参构造方法)
  • 成员方法
    根据返回值(void类型/非void类型)
    形式参数(空参方法/非空参方法)

1. 成员变量和局部变量的区别**

  • 类中的位置不同
    成员变量:类中方法外
    局部变量:在方法定义中或者方法声明上

  • 在内存中的位置不同
    成员变量:在堆内存
    局部变量:在栈内存

  • 生命周期不同
    成员变量:随着对象的创建而存在,随着对象的消失而消失
    局部变量:随着方法的调用而存在,随着方法的调用完毕而消失

  • 初始值不同
    成员变量:有默认初始值
    局部变量:没有默认初始值,必须定义,赋值之后才能使用
    【注】初始值不同取决于其内存位置的不同 ;
    局部变量名称可能与成员变量名称一致,方法中使用时注意要采用就近原则 在这里插入图片描述

2.形式参数的问题

基本类型:形参的改变不影响实际参数
引用类型:(比如类)形参的改变直接影响实际参数

3.this关键字

this关键字是当前类的对象引用,简单的说,this代指当前类的一个对象
注意:谁调用这个方法,在该方法内部的this就代表谁。
this的场景:解决局部变量隐藏成员变量。

4.构造方法

赋值的方法有两种,setter方法构造方法

5.static关键字

针对多个对象有共同的成员变量值时,java提出了static关键字来修饰,避免每次创建对象都要在堆内存中开辟新的空间。

5.1static的特点****:

A.随着类的加载而加载(回想main方法)
B.优先于对象存在(static修饰的是与类相关的类成员)
C.被类的所有对象所共享
eg.咱们班级的学生应该公用一个班级编号
使用静态的场景:如果某一个成员变量是被所有对象共享,那么该成员变量应该被共享。
eg.饮水机(用静态修饰) 水杯(不能用静态修饰)
D.可以通过类名调用
其实也可以通过对象名来调用(本质是成员变量),推荐使用类名调用。
因为静态修饰的内容我们一般称之为:与类相关的,类成员

5.2 static的内存图解

5.3 static关键字(静态方法)注意事项

  • 在静态方法中是没有this关键字的
    理解:静态是随着类的加载而加载,this是随着对象的创建而存在。静态比对象先存在,只能后存在的去调用先存在的,而不能先存在去调用后存在的。
  • 静态方法只能访问静态的成员变量和静态的成员方法
    静态方法–调用:
    —成员变量:只能访问静态成员变量
    —成员方法:只能访问静态成员方法
    非静态方法–调用:
    —成员变量:可以是静态变量也可以非静态变量
    —成员方法:可以是静态的成员方法也可以非静态的成员方法
    【总结】静态只能访问静态的,而非静态可以访问一切(静态和非静态)

5.4 静态变量和成员变量的区别

A.所属不同

  • 静态变量属于类,所以也称之为类变量
  • 成员变量属于对象,所以也称之为对象变量(实例变量)

B.内存中的位置不同

  • 静态变量存储于方法区的静态区
  • 成员变量存储于堆内存

C.内存出现的时间不同

  • 静态变量随着类的加载而加载,随着类的消失而消失
  • 成员变量随着对象的创建而存在,随着对象的消失而消失

D.调用不同

  • 静态变量可以通过类名调用,也可以通过对象调用
  • 成员变量只能通过对象名调用

5.5 main方法的格式详解

public static void main(String[] args){}

  • public : 由于main方法是要被jvm调用,所以访问权限必须足够大
  • static :静态的,不需要创建对象,通过类名就可以,方便JVM调用
  • void:方法的返回值是返回给调用者的,而main方法是被jvm调用,返回内容给jvm没有意义
  • main:是一个常见的方法入口,语言基本上都是以main作为入口的
  • String[] args:以前用于键盘录入的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值