对象

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

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

类与对象的关系,这个跟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,如果本文有错误,欢迎路过的小哥哥小姐姐们帮助我纠正错误哦~~

Java基础学习笔记-类与对象的更多相关文章

  1. 《python基础教程(第二版)》学习笔记 类和对象(第7章)

    <python基础教程(第二版)>学习笔记 类和对象(第7章) 定义类class Person:    def setName(self,name):        self.name=n ...

  2. 尚学堂JAVA基础学习笔记

    目录 尚学堂JAVA基础学习笔记 写在前面 第1章 JAVA入门 第2章 数据类型和运算符 第3章 控制语句 第4章 Java面向对象基础 1. 面向对象基础 2. 面向对象的内存分析 3. 构造方法 ...

  3. Java基础学习笔记总结

    Java基础学习笔记一 Java介绍 Java基础学习笔记二 Java基础语法之变量.数据类型 Java基础学习笔记三 Java基础语法之流程控制语句.循环 Java基础学习笔记四 Java基础语法之 ...

  4. Java基础学习笔记(一)

    Java基础学习笔记(一) Hello World 基础代码学习 代码编写基础结构 class :类,一个类即一个java代码,形成一个class文件,写于每个代码的前端(注意无大写字母) XxxYy ...

  5. java基础学习笔记五(抽象类)

    java基础学习总结——抽象类 抽象类介绍

  6. Java基础学习笔记十二 类、抽象类、接口作为方法参数和返回值以及常用API

    不同修饰符使用细节 常用来修饰类.方法.变量的修饰符 public 权限修饰符,公共访问, 类,方法,成员变量 protected 权限修饰符,受保护访问, 方法,成员变量 默认什么也不写 也是一种权 ...

  7. Java学习笔记--类和对象

    1.介绍面向对象的编程          面向对象是现在主流的编程样例,它替代了以前C语言使用时的“结构体”,Java是一门面向对象的语言,所以需要熟悉面向对象的概念.面向对象的程序由很多对象组成,每 ...

  8. Java基础学习笔记: 多线程,线程池,同步锁(Lock,synchronized )(Thread类,ExecutorService ,Future类)(卖火车票案例)

    多线程介绍 学习多线程之前,我们先要了解几个关于多线程有关的概念.进程:进程指正在运行的程序.确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序,并且具有一定独立功能. 线 ...

  9. Java基础学习笔记之:System类;Math类;Arrays类BigInteger,BigDecimal

    System类 在API中System类介绍的比较简单,我们给出定义,System中代表程序所在系统,提供了对应的一些系统属性信息,和系统操作.System类不能手动创建对象,因为构造方法被priva ...

  10. Java基础学习笔记七 Java基础语法之继承和抽象类

    继承 继承的概念 在现实生活中,继承一般指的是子女继承父辈的财产.在程序中,继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系. 例如公司中的研发部员工和维护部员工都属于员工, ...

随机推荐

  1. LcdTools如何自定义读写PX01 SSD2828寄存器

    LcdToos打开相应的工程文件,连接PX01并开启点亮屏使LcdTools开关处于开启状态. 切到"测试设置"栏,在"Bridge控制"栏,在"Ad ...

  2. Linux系统命令基础

    Linux系统命令基础 前面咱们已经成功安装了Linux系统--centos7,那么现在奔向Linux命令行的世界. Linux命令格式 1.一般情况下,[参数]是可选的,一些情况下[文件或路径]也是 ...

  3. The Google File System 翻译和理解

    The Google File System 摘要 GFS 是一个可扩展的分布式文件系统,用于大型分布式数据密集型应用上.它可以运行在便宜的普通硬件上,提供了高性能和一定的容错性. 1. 分布式文件系 ...

  4. 【笔记】区间DP

    记录一些基础的区间 \(\text{DP}\) 题. 0x00 AT_dp_n N - Slimes 最板的区间 \(\text{DP}\) . 记 \(f[i][j]\) 表示合并 \(i\sim ...

  5. HTTPS 基础知识(密钥、对称加密、非对称加密、数字签名、数字证书)

    HTTPS 概述 对称加密 非对称加密 非对称加密改良方案 非对称加密 + 对称加密 中间人攻击 数字证书 数字签名 HTTPS 工作原理 HTTPS 概述 HTTPS(全称:Hyper Text T ...

  6. Android开发之应用更新或软件下载

    Android开发之应用更新或软件下载 本文章学习前提:okHttp3或以上,EventBus或其它事件总线工具,四大组件的Activity和Service,安卓通知基础知识 新建项目文件 目录结构如 ...

  7. 2流高手速成记(之九):基于SpringCloudGateway实现服务网关功能

    咱们接上回 上一节我们基于Sentinel实现了微服务体系下的限流和熔断,使得整个微服务架构的安全性和稳定性上升了一个台阶 篇尾我们引出了一个问题,众多的微服务节点,我们如何部署才能满足客户端简洁高效 ...

  8. 2. 第一个PyQt5 程序 Helloword!

    专栏地址 ʅ(‾◡◝)ʃ 第一个 PyQt5 程序 2.1 import sys from PyQt5.QtWidgets import QApplication,QWidget app = QApp ...

  9. ArcObjects SDK开发 005 ArcObjects SDK中的插件式架构

    1.什么是插件式架构 插件式架构设计中主要包括三个重要部分,宿主.插件协议以及插件实现.宿主是指使用插件的部分,该模块可以是一个类,也可以是多个接口和类组成的模块.插件协议是指宿主与插件之间的协议,宿 ...

  10. python-面向过程与函数式

    面向过程与函数式 面向过程 "面向过程"核心是"过程"二字,"过程"指的是解决问题的步骤,即先干什么再干什么......,基于面向过程开发程 ...