对象

  • 名称唯一
  • 属性、数据区(值)
  • 方法、功能

  • 在软件中,类是一个模板,定义了一类事物的状态和行为
  • 类是一种抽象的复合数据类型

类与对象的关系,这个跟JS也差不多

  • 类和对象之间是抽象和具体的关系。

    类是创建对象的模板,对象是类的具体实例
  • 类(class)是总称,对象是个体,因此对象(object)也叫实例(instance)。
  • 需求中提取类,即抽象的过程。
  • 创建一个类就是创建一个新的数据类型,实例化一个类,就得到一个对象。
  • 类的构成分别是成员变量和成员方法
  • 类的成员变量可以是基本类型、复合数据类型、数组、集合等
  • 类的成员方法用于处理该类的数据

类的定义

  • 格式

  • 关键字class表示类定义的开始
  • 修饰符分为访问控制符、类型说明符

    1.类的类型说明符:final、abstract

    2.类的访问控制符:public、默认(没有访问控制符)

    公共类能被其它所有的类访问和引用。

    一个Java源程序中只能有一个public类,这个类一般含有main方法

    不用public定义的类,只能被同一个包中定义的类访问和引用

对象的生成、使用、内存释放

构造函数(Constructor) 是一类特殊的成员方法 ,用new 初始化 新创建对象

  • 类名 对象名 = new 构造函数(实际参数)
  • 从形式上来讲,它有以下特点:

    与类同名

    没有任何返回值;

    在语法结构上与一般方法相同
  • new关键字的作用

    为对象分配内存空间

    引起对象构造方法的调用。

    为对象返回一个引用(地址)
  • 类的默认构造函数

    Object就是默认的父类

    如果类中没有定义构造函数,编译器会自动创建一个默认的不带参数的构造函数

    为类定义了构造函数,就不会出现被默认创建的情况了

    如果类中提供的构造函数都不是无参数构造函数,却调用无参数构造函数初始化此类的对象,编译时会产生语法错误

对象的创建及使用

Person p1=new Person(“flower”,”pink”,23)
Person p2=p1;// 此时p2拿到的是个引用的地址哦,这个跟JS一样

Java内存释放

判断一个存储单元是否是垃圾的依据是:该存储单元所对应的对象是否仍被程序所用。

判断一个对象是否仍为程序所用的依据是:是否有引用指向该对象。

  • 自动回收机制。

    Java虚拟机后台线程负责内存的回收
  • 强制回收机制

    System.gc() 强制立即回收垃圾,但系统并不保证会立即进行垃圾回收

    Java的垃圾收集器自动扫描对象动态内存区,对引用对象标记,把没有引用的对象收集并释放

    java虚拟机可自动判断并收集到“垃圾”, 但一般不会立即释放

    Java系统自己定义了一套垃圾回收算法,用来提高垃圾回收效率

    Java内存强制回收没有提供析构方法,但提供了一个类似的方法:protected void finalize()

    Java虚拟机在回收对象存储单元之前先调用该对象的finalize方法,如果该对象没有定义finalize方法, 先调用该对象默认的finalize方法。

这是我作为一名前端,第一次学习JAVA,如果本文有错误,欢迎路过的小哥哥小姐姐们帮助我纠正错误哦~~

最新文章

  1. C#多线程之基础篇1
  2. 关于页面里没有id属性的Javascript上的解决办法
  3. document.readyState等属性
  4. python爬虫爬取全球机场信息
  5. Unable to resolve target 'android-8'类似错误的解决办法
  6. 今天碰到的angular 中的一个小坑
  7. NOIP2010-普及组复赛模拟试题-第二题-数字积木
  8. JavaWeb总结(七)—JSTL标签库
  9. Java核心技术 卷I chapter05 继承
  10. faster-rcnn 笔记
  11. 单片机与android手机通信(控制LED小灯亮灭)
  12. 内核知识第六讲,内核编写规范,以及获取GDT表
  13. TZOJ 4325 RMQ with Shifts(线段树查询最小,暴力更新)
  14. python爬虫----XPath
  15. gvim配置文件
  16. DevExpress WPF入门指南:Smart Tag扩展功能
  17. oc 中的.m和.mm文件区别
  18. mysql8.0 安装 修改密码 允许远程连接
  19. 记录一下学习Android的小知识
  20. 基于linux内核包过滤技术的应用网关

热门文章

  1. markdown第一天学习
  2. 题解 AT2361 [AGC012A] AtCoder Group Contest
  3. vue-axios更改操作
  4. GY91(MPU9250 + BMP280)惯性传感器开发指南
  5. Jupyter基本使用
  6. 2022春每日一题:Day 8
  7. xmind下载安装破解版激活教程思维导图软件获取
  8. mindxdl--common--head_handler.go
  9. 基于python的数学建模---图论模型(Dijkstra)
  10. JavaScript笔记之面向对象