Javase学习笔记7

引入类与对象(OOP),根本原因是现有的技术不能完美的解决新的需求

对象由属性和行为组成 

猫类(自定义数据类型,抽象)有属性和行为 -------->猫对象(具体的猫  对象实列)

class Cat -------->Cat cat1 = new Cat()//把创建的猫赋给cat1,cat1就是一个对象

创建对象的两种方式:1先声明再创建Cat cat1//空间还没分配cat1为空;cat1 = new Cat()

                                     2直接创建  Cat cat1 = new Cat()

当创建猫对象时,会把类的信息加载到方法区  包含属性信息和行为(方法)

class Cat类中定义了属性/成员变量/field(字段)  eg: string name;属性可以是基本数据类型,也可以时引用类型。

属性可以加上访问修饰符(控制属性的访问范围) protected/public/private/默认

属性如果不赋值,有默认值,规则和数组一样

cat1.name = "小白" //赋值

-------->(创建/实例化一个对象)

java最大的特点就是面向对象

对象在内存中存在形式: 对象也是引用类型,和数组一样  有几个属性,就在堆里建立几个空间,怎么存放数据根据存放的数据类型决定,如果为字符串(引用类型),那堆里存放的是个地址,按照JVM规则,会把字符串放在方法区的常量池空间中,也对应一个地址(只要是数据,都对应一个地址),  如果为基本数据类型,那就直接存放在堆中。 真正的对象在堆和方法区中,栈中只是对象引用/对象名,它指向堆和方法区中真正的对象

类与对象内存分配机制:cat1赋值给了cat2,那cat2指向和cat1一样在堆中的地址

栈:一般存放基本数据类型(局部变量)

堆:存放对象(Cat cat,数组)

方法区:常量池(常量,字符串),类加载信息

Person p=new Person();

p.name = "jack";

1先加载Person类信息(属性和方法信息,只会加载一次)

2在堆中分配空间,进行默认初始化(看规则)

3把地址赋给p,p就指向对象

4进行指定初始化,比如p.name=''jack'

成员方法(行为)

方法定义使用细节:

public/private/protected/默认(访问修饰符) 返回函数类型 方法名(形参列表){(方法体)

语句;

return 返回值;}

方法写在类里,在main里先创建对象,再用对象.方法进行调用

返回函数类型 void 表示没有返回值  return语句不是必须的  或者只写return;

一个方法最多有一个返回值,如果想返回多个结果,可以返回数组

形参列表中允许多个参数,可以为任意类型,基本和引用

方法调用时的传入参数称为实参,方法定义时的成为形参

形参和实参的数据类型要一致或者兼容,个数,顺序都要相同

方法体里不能再定义方法

方法调用使用细节:

同一个类中的方法可以直接调用

跨类的方法需要通过对象名调用  列如A的m1方法要调用B的hi方法  和访问修饰符还有关系

A:public void m1(){

B b = new B();

b.hi()

}

方法的调用机制:

1当程序执行到方法时,就会开辟一个独立的空间(栈空间)

2当方法执行完毕,或者执行到return语句时,就会返回

3返回到调用方法的地方

4返回后,继续执行方法后面的代码

5当main方法(栈)执行完毕,整个程序退出

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值