Java Day10(对象的创建和内存分析1)

本文探讨了面向对象和面向过程的区别,强调了面向对象的封装、继承和多态优势,以及在Java中的应用,包括类的概念、对象创建过程和内存管理。通过实例展示了如何在Java中创建和使用对象,以及栈内存和堆内存的角色。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.面向对象和面向过程的区别

  • 面向过程:主要关注点是实现的具体过程,因果关系
    • 优点:对于业务逻辑比较简单的程序,可以达到快速开发,前期投入成本低
    • 缺点:很难解决非常复杂的业务逻辑,另外面向过程的方式倒是软件元素之间的耦合度非常高,只要其中一项出了问题,整个系统都会受到影响,导致最终的软件扩展力差。由于没有独立体的概念,无法达到组件复用
  • 面向对象:主要关注点是对象【独立体】能完成哪些功能【独立显卡的的开发思路】
    • 优点:耦合度低,扩展能力强。更容易解决现实世界当中更复杂的业务逻辑。组件复用性强
    • 缺点:前期投入成本较高,需要进行独立体的抽取
  • c语言是纯面向过程的,c++是半面向对象,java是纯面向对象的
  • 面向对象更符合人的思维方式
  • 面向对象的三大特征(所以面向对象的语言都有这三大特征)
    • 封装
    • 继承
    • 多态
  • 采用面向对象的方式开发的一个软件,生命周期当中:
    • 面向对象的分析:OOA
    • 面向对象的设计:OOD
    • 面向对象的编程:OOP

2. 面向对象

  • 类的概念
    • 类在现实世界是不存在的,是一个模板,是一个概念,是人类大脑思考抽象的结果
    • 类代表了一类事物
    • 在现实世界当中,对象A与对象B之间具有共同的特征,进行抽象总结出一个模板,这个模板被称为类
  • 对象的概念:对象是实际存在的个体。现实世界当中实际存在
  • 类–【实例化】–>对象
  • 对象又被称为实例
  • 对象—【抽象】–>类
  • 一个类主要描述的信息:状态+动作
  • java语言中所有的class都属于引用数据类型

3.对象的创建与使用

  • 举个例子
public class Student
{
	int no;//学号

	String name;//姓名

	int age;//年龄
}
import Student;

public class OOTest01
{
	public static void main(String[] args)
	{
		//new是java语言中的一个运算符
		//new运算符的作用是创建对象,在JVM堆内存中开辟新的内存空间
		//方法区内存:在类加载的时候,class字节码代码片段被加载到该内存空间当中
		//栈内存:方法代码片段执行的时候,会给该方法分配内存空间,在栈内存中压栈
		//堆内存:new的对象在堆内存中存储
		int i=10;
		//Student是一个引用数据类型,s是变量名,new Student()是一个学生对象
		//s是一个局部变量,局部变量存储在栈内存
		//什么是对象?new运算符在堆内存中开辟的内存空间称为对象
		//什么是引用?引用是一个变量,只不过这个变量中保存了其指向的对象的内存地址
		//java语言中。程序员不能直接操作堆内存,java没有指针,不像c语言
		//java语言当中,程序员只能通过引用去访问堆内存当中对象的实例变量
		Student s=new Student();
		int stuno=s.no;
		int stuage=s.age;
		String stuname=s.name;
		//输出:学生的学号为0,年龄是0,姓名是null
		System.out.println("学生的学号是:"+stuno+",年龄是:"+",姓名是:"+stuname);

		s.no=101;       
		s.age=19;     
		s.name="jack";
		//输出:学生的学号为101,年龄是19,姓名是jack
		System.out.println("学生的学号是:"+stuno+",年龄是:"+"姓名是:"+stuname);
}

  • 上述代码内存图在这里插入图片描述

  • 局部变量在栈内存中存储,成员变量中的实例变量在堆内存的Java对象内部存储

  • 实例变量是一个对象一份,100个对象就有100份

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值