java学习笔记(对象的创建和使用)

本文深入探讨面向对象和面向过程编程的区别,分析两者在软件开发中的优缺点,阐述面向对象的三大特性,并讲解类与对象的概念,以及它们在Java语言中的应用。

面向对象和面向过程的区别:

  1. 面向过程:主要关注点是实现具体的过程,因果关系。
    优点:对于业务逻辑比较简单的程序,可以达到快速开发,前期投入成本较低
    缺点:采用面向过程的方式开发很难解决非常复杂的业务逻辑,另外面向过程的方式导致软件元素之间的“耦合度”非常高,只要其中一个环节出问题,整个系统受到影响,导致最终的软件“扩展力”差,另外,由于没有独立体的概念,所以无法达到组件复用。

  2. 面向对象:主要关注对象【独立体】能完成哪些功能。
    优点:耦合度低,扩展力强。更容易解决现实世界当中更复杂的业务逻辑,组件复用性强。
    缺点:前期投入成本较高,需要进行独立体的抽取,大量的系统分析与设计。

面向对象的三大特征:封装、继承、多态

采用面向对象的方式开发一个软件,生命周期中:
* 面向对象的分析:OOA
* 面向对象的设计:OOD
* 面向对象的编程:OOP

类和对象的概念:

  1. 什么是类?
    类在现实世界中是不存在的,是一个模板,是一个概念,是人类大脑思考抽象的结果
    类代表了一类事物
    在现实世界当中,对象A与对象B之间具有的共同特征,进行抽象总结出一个模板,这个模板称为类。
  2. 什么是对象?
    对象是实际存在的个体,现实世界中实际存在的。

类–【实例化】–>对象

对象又被称为实例/instance

对象–【抽象】–>类

  1. 重点
    类描述的是对象的共同特征。
  2. 一个类主要描述的是 状态+动作。
    状态–>一个类的属性
    动作–>一个类的方法
  3. 类{
    属性;//描述对象的状态信息
    方法;//描述对象的动作信息
    }
    注意:状态和动作当具体到某个对象上之后,发现最终的结果可能不一样。对象和对象之间有共同特征,但是具体到对象之后又数据的差异。

类的定义
语法结构:
[修饰符列表] class 类名{
}
属性通常采用变量的方式来定义。

Java语言包括两种数据类型:基本数据类型和引用数据类型
引用数据类型:(String,System,student,User,Product,Customer…)

java语言中所有的class都属于引用数据类型。

对象的创建和使用
通过一个类可以实例化N个对象
实例化对象的语法:new 类名();
new是java语言当中的一个运算符,new运算符的作用是创建对象,在JVM堆内存当中开辟新的内存空间。
方法区内存:在类加载的时候,class字节码代码片段被加载到该内存空间当中。
栈内存(局部变量):方法代码片段执行的时候,会给该方法分配内存空间,在栈内存中压栈。
堆内存:new的对象在堆内存中存储。

引用数据类型的默认值是null

什么是对象?
new运算符在堆内存中开辟的内存空间称为对象。
什么是引用?
引用是一个变量,只不过这个变量中保存了另一个java对象的内存地址。

访问实例变量的语法格式:
读取数据:引用.变量名;
修改数据:引用.变量名 = 值;

局部变量在栈内存中存储
成员变量中的实例变量在堆内存的java对象内部存储
实例变量是一个对象一份,100个对象100份

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  1. JVM主要包括三块内存空间,分别是:栈内存、堆内存、方法区内存
  2. 堆内存和方法区内存各有一个,一个线程一个栈内存
  3. 方法调用的时候,该方法所需要的内存空间在栈内存中分配,称为压栈;方法执行结束之后,该方法所属的内存空间释放,称为弹栈。
  4. 栈中主要存储的是方法体当中的局部变量
  5. 方法的砝码片段以及整个类的代码片段被存储到方法区当中,在类加载的时候这些代码片段会载入
  6. 在程序执行过程中使用new运算符创建的java对象,存储在堆内存中,对象内部有实例变量,所以实例变量存储在堆内存当中。
  7. 变量分类:
    • 局部变量【方法体中声明】
    • 成员变量【方法体外声明】
      * 实例变量【前边修饰符没有static】
      * 静态变量【前边修饰符中有static】
  8. 静态变量存储在方法区内存当中
  9. 三块内存中变化最频繁的是栈内存,最先有数据的是方法区内存,垃圾回收器主要针对的是堆内存。
  10. 垃圾回收器【自动垃圾回收机制,GC机制】什么时候回考虑将某个Java对象内存回收?
    * 当堆内存当中的java对象成为垃圾数据的时候,会被垃圾回收器回收
    * 什么时候内存当中的java对象会变成垃圾?
    没有更多的引用指向它的时候
    这个对象无法被访问,因为访问对象只能通过引用的方式访问。

空指针异常:java.lang.NullPointerExcertion
“实例”相关的数据表示:这个数据访问的时候必须有对象的参与,这种数据就是实例相关的数据。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值