Java基础-对象和方法

一、对象
对象实例化过程:

Dog d1 = new Dog();
1.在栈内存中建立指向新对象的引用变量d1
2.在堆内存中分配用于存储对象d1所需要的内存空间
3.将堆内存空间的参考地址赋值给d1

匿名对象:

只开辟了堆内存空间,而没有栈内存指向的对象
特点
1.没有栈内存指向
2.只能使用一次,就会变成无法寻找的垃圾对象,会被GC回收

对象的比较
  • ==:比较两个对象的内存地址值(引用地址)是否相同
  • equals():比较两个对象的内容是否一致
堆内存和栈内存的区别

栈(stack) 是由编译器自动分配的和释放的一块内存区域

  • 优:存取速度比较快,仅次于寄存器,栈中的数据可以共享
  • 缺:存在栈中的数据大小与生存周期是固定的,缺乏灵活性
  • stack overflow(堆栈溢出)

堆(heap) 是一个程序在运行动态分配的内存区域

  • 优:动态地分配内存大小,可以“按需分配”,不需要提前告诉编译器,使用完毕后,GC会自动回收这些不再使用的内存块,
  • 缺:需要运行时才能动态分配,存取速度相对于栈内存较慢
  • 内存碎片(不可用的非连续的小块内存)
二、方法

方法的签名:名称+参数列表(参数类型和参数个数)

方法的重载

使用方法名相同但参数列表不同的方法签名机制

  • 方法名称相同
  • 参数列表不同(个数,顺序,类型,至少一样不同)
  • 返回类型和修饰符不做要求
构造方法Constructor

用于构造对象时初始化成员变量,在创建对象时自动“隐式”执行。
特点:

  1. 构造方法名称必须和所属的类名保持一致
  2. 构造方法没有返回值,也不可以使用void
  3. 构造方法可以被重载
  4. 构造方法不能被static和final修饰
  5. 不能被继承,子类使用父类的构造方法需要使用super关键字

如果类中没有声明任何构造方法的话,编译器会自动为该类添加一个无参构造方法。程序中一旦显式声明了构造方法,那么默认的“隐式的”构造方法就不会被编译器生成,需要手动声明一个无参构造方法。

构造方法私有化

实例化对象只能在私有化构造方法所属类中产生。通过这种方式可以确保了一个类只能创建一个实例化对象,用于单例设计模式

代码块

使用{}将多行代码封装在一起,形成一个独立的代码区域,这就构成了代码块。
代码块不能独立运行,须依赖其他配置。

  • 普通代码块 ——方法名后或者方法体内使用{} 括起来的代码块,不能独立存在类中,需要跟在方法名后,通过方法调用。
  • 构造代码块 ——直接在类中定义,和构造方法一起在对象生成的时候调用,调用时机早于构造方法,可以用来初始化不同构造方法共有的成员变量,提高代码复用性。
  • 静态代码块 ——使用static修饰,用来初始化静态成员变量,类加载时就会执行,是最早执行的代码块,优于构造代码块,优于main方法,执行级别最高
  • 同步代码块
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值