《JAVA编程思想》笔记-对象导论一切都是对象

2023-10-06 22:48

本文主要是介绍《JAVA编程思想》笔记-对象导论一切都是对象,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

虽说一直在看书,喜欢往深了去研究,却发现java知识有点生疏,遂决定重新看一遍《java编程思想》。我是个喜欢在书上涂涂改改做笔记的人,以方便日后重拾该书时能迅速找到重点难点,并助于融会贯通。但是大部分书也就是看过一遍便仍在那儿便不再动它了,其实怪可惜的,如果真能养成整理笔记的习惯的话,那么温故的效率应该可以高出很多。

对象导论这一章要讲的东西也不多,很多东西都可以忽略掉(尤其对于已经学过OOP的同学),很多特性会在以后章节具体讲述。

面向对象的三大特点

  • 继承
  • 封装
  • 多态

java区别于C++,是一种单根继承结构的编程语言,这种单继承的实现方式是前缀技术,即表现为父类域在内存中排在子类新域的前面。

对象的创建与生命周期

  • java语言有自己的垃圾回收机制(区别于C++需要人为地写析构函数,控制内存的释放),具体内容可见我的一篇文章垃圾收集
  • 对象数据的分布,这一点会在JVM(java virtual machine)中重点讲到。JAVA**运行时数据区**包括:
    • 方法区 方法区主要存储一些静态数据
    • 引用所指向的数据放在堆中
    • 虚拟机栈 通常我们认为引用(类似C++中的指针)存放在栈(虚拟机栈)
    • 本地方法栈 对应native方法
    • 程序计数器 类似计算机中的程序计数器,用于记录字节码指令

补充

java号称“编写一次,处处运行”。
我们知道C++是编译语言,而python则属于解释型语言,java比较特殊,它先将java代码翻译成字节码(会得到.class文件),这个过程属于编译的过程,而字节码的运行则位解释的过程。

类型

java是一种面向对象的语言,但并不是一切皆类,有如下几种基本类型(存储于栈区):

  • boolean
  • char
  • byte
  • short
  • int
  • long
  • float
  • double
  • void
    以上类型大小同C语言大致相同,且遵循32位机器4字节对齐的规则,唯一区别在于char类型在java中占2字节而C语言中char为一字节,所以java中改用byte类型来表示一字节数据,在对字节流的操作中,byte类型非常实用。

大数问题的处理:java非常幸运地能使用BigIntegerBigDecimal类来表示任意精度的整数和定点数,不需要像C++一样自己编写大数问题的支持类/方法了。

类成员变量自动初始化
对局部变量不适用
- boolean: false
- char:“\u0000”null
- byte:(byte)0
- short: (short)0
- int: 0
- long: 0L
- float: 0.0f
- double: 0.00d

static关键字:和C++中的static类似,在类中表明为类所拥有,而不属于某一特定对象(只初始化一次)

这篇关于《JAVA编程思想》笔记-对象导论一切都是对象的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/154379

相关文章

SpringBoot利用树形结构优化查询速度

《SpringBoot利用树形结构优化查询速度》这篇文章主要为大家详细介绍了SpringBoot利用树形结构优化查询速度,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一个真实的性能灾难传统方案为什么这么慢N+1查询灾难性能测试数据对比核心解决方案:一次查询 + O(n)算法解决

SpringBoot实现虚拟线程的方案

《SpringBoot实现虚拟线程的方案》Java19引入虚拟线程,本文就来介绍一下SpringBoot实现虚拟线程的方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录什么是虚拟线程虚拟线程和普通线程的区别SpringBoot使用虚拟线程配置@Async性能对比H

javaSE类和对象进阶用法举例详解

《javaSE类和对象进阶用法举例详解》JavaSE的面向对象编程是软件开发中的基石,它通过类和对象的概念,实现了代码的模块化、可复用性和灵活性,:本文主要介绍javaSE类和对象进阶用法的相关资... 目录前言一、封装1.访问限定符2.包2.1包的概念2.2导入包2.3自定义包2.4常见的包二、stati

SpringBoot结合Knife4j进行API分组授权管理配置详解

《SpringBoot结合Knife4j进行API分组授权管理配置详解》在现代的微服务架构中,API文档和授权管理是不可或缺的一部分,本文将介绍如何在SpringBoot应用中集成Knife4j,并进... 目录环境准备配置 Swagger配置 Swagger OpenAPI自定义 Swagger UI 底

解决hive启动时java.net.ConnectException:拒绝连接的问题

《解决hive启动时java.net.ConnectException:拒绝连接的问题》Hadoop集群连接被拒,需检查集群是否启动、关闭防火墙/SELinux、确认安全模式退出,若问题仍存,查看日志... 目录错误发生原因解决方式1.关闭防火墙2.关闭selinux3.启动集群4.检查集群是否正常启动5.

SpringBoot集成EasyExcel实现百万级别的数据导入导出实践指南

《SpringBoot集成EasyExcel实现百万级别的数据导入导出实践指南》本文将基于开源项目springboot-easyexcel-batch进行解析与扩展,手把手教大家如何在SpringBo... 目录项目结构概览核心依赖百万级导出实战场景核心代码效果百万级导入实战场景监听器和Service(核心

idea Maven Springboot多模块项目打包时90%的问题及解决方案

《ideaMavenSpringboot多模块项目打包时90%的问题及解决方案》:本文主要介绍ideaMavenSpringboot多模块项目打包时90%的问题及解决方案,具有很好的参考价值,... 目录1. 前言2. 问题3. 解决办法4. jar 包冲突总结1. 前言之所以写这篇文章是因为在使用Mav

C# async await 异步编程实现机制详解

《C#asyncawait异步编程实现机制详解》async/await是C#5.0引入的语法糖,它基于**状态机(StateMachine)**模式实现,将异步方法转换为编译器生成的状态机类,本... 目录一、async/await 异步编程实现机制1.1 核心概念1.2 编译器转换过程1.3 关键组件解析

Spring Security6.3.x的使用指南与注意事项

《SpringSecurity6.3.x的使用指南与注意事项》SpringSecurity6.3.1基于现代化架构,提供简洁配置、增强默认安全性和OAuth2.1/OIDC支持,采用Lambda... 目录介绍基础配置 (Servlet 应用 - 使用 Lambda DSL)关键配置详解(Lambda DS

Java Stream 的 Collectors.toMap高级应用与最佳实践

《JavaStream的Collectors.toMap高级应用与最佳实践》文章讲解JavaStreamAPI中Collectors.toMap的使用,涵盖基础语法、键冲突处理、自定义Map... 目录一、基础用法回顾二、处理键冲突三、自定义 Map 实现类型四、处理 null 值五、复杂值类型转换六、处理