原文链接http://zhhll.icu/2020/04/26/java%E5%9F%BA%E7%A1%80/%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1/java%E5%9F%BA%E7%A1%80%E4%B9%8B%E5%AF%B9%E8%B1%A1/

操作对象

所有编程语言都会操作内存中的元素,java通过对象的引用来操作对象

创建一个String引用,代码示例:

String s;

上面的代码只是创建了一个String对象的引用,变量s没有进行初始化,并没有指向任何对象。java中使用new来创建对象,代码示例:

String s = new String("abc");

基本数据类型

boolean、char、byte、short、int、long、float、double这些都是基本数据类型,基本数据类型不需要使用new关键字来创建对象,直接存储值,存储在栈内存内。java直接确定了每种基本类型的内存占用大小。

基本类型 大小 范围
boolean
char 16bits 0~2^16 -1
byte 8bits -27~27-1
short 16bits -215~215-1
int 32bits -231~231-1
long 64bits -263~263-1
float 32bits -231~231-1
double 64bits -263~263-1

数据存储

内存分配

  • 寄存器 位于CPU内部,最快的存储区域
  • 栈内存 存在于RAM(随机访问存储器)内存区域内,可通过栈指针获得处理器的直接支持。栈指针下移分配内存,上移释放内存,速度仅次于寄存器。创建程序时,java系统必须准确地知道栈内保存的所有项的生命周期。对象引用存储在栈内存中,但对象保存在堆内存中。占中存储方法帧和局部变量。栈比堆小,也不会在多个线程之间共享,而堆被整个JVM的所有线程共享
  • 堆内存 也存在RAM(随机访问存储器),所有java对象都存在其中。与栈内存不同,编译器不需要知道对象必须在堆内存上停留多长时间。创建一个对象时,只需new关键字实例化对象,执行代码时,会自动在堆中进行内存分配。代价是:分配和清理堆内存要比栈内存需要更多的时间。
  • 常量存储 常量值直接放在程序代码中,因为他们永远不会改变
  • 非RAM存储 数据完全存在于程序之外,在程序未运行以及脱离程序控制后依然存在

    两个示例:

    • 序列化对象:对象被转换为字节流,通常被发送到另一台机器
    • 持久化对象:对象被放置在磁盘上,即使程序终止,数据依然存在。这些存储的方式是将对象转存于另一个介质中,并在需要时恢复成常规的、基于RAM的对象。Java为轻量级持久化提供了支持。

创建类

使用class关键字来描述一种新的对象。在class关键字的后面紧跟类的名称。

class MyClass {

}

上例中,引入了一个新的类型,我们可以通过new关键字来创建一个这种类型的对象。

MyClass myClass = new MyClass();

在方法中可以存在两种元素:方法和字段

多态

实现多态的机制是父类或接口定义的引用变量可以指向子类或具体实现类的实例变量,而程序调用的方法是在运行期才动态绑定的

多态主要分为引用多态和方法多态

  • 引用多态:父类引用指向子类对象,也可以指向本类对象

  • 方法多态:创建本类对象时,方法调用为本类方法;创建子类对象时,方法调用为子类重写的方法或者子类继承的方法

多态的必要条件:继承,重写

由于本身的博客百度没有收录,博客地址http://zhhll.icu

java对象的更多相关文章

  1. Java对象序列化剖析

    对象序列化的目的 1)希望将Java对象持久化在文件中 2)将Java对象用于网络传输 实现方式 如果希望一个类的对象可以被序列化/反序列化,那该类必须实现java.io.Serializable接口 ...

  2. 通过JAXB完成Java对象与XML之间的转换

    Java对象转换XML的过程叫marshal. XML转换到Java对象的过程叫unmarshal. 一.Java对象转化为XML 这里省略getter和setter方法 通过标注@XMLRootEl ...

  3. json相关类库,java对象与json相互转换

    有效选择七个关于Java的JSON开源类库 转自:http://www.open-open.com/lib/view/open1397870197828.html 翻译: (英语原文:http://w ...

  4. Hibernate 系列 07 - Hibernate中Java对象的三种状态

    引导目录: Hibernate 系列教程 目录 1. Java对象的三种状态 当应用通过调用Hibernate API与框架发生交互时,需要从持久化的角度关注应用对象的生命周期. 持久化声明周期是Hi ...

  5. 理解Java对象序列化

    http://www.blogjava.net/jiangshachina/archive/2012/02/13/369898.html 1. 什么是Java对象序列化 Java平台允许我们在内存中创 ...

  6. java对象与XML相互转化

    起因 最近在公司做了一次webservice相关的任务,其中我最敢兴趣的就是webservice接受到XML对应的流以后是如何方便的转化成java对象,而java对象又是如何生成对应的XML的. 目的 ...

  7. java 对象序列化与反序列化

    Java序列化与反序列化是什么? 为什么需要序列化与反序列化? 如何实现Java序列化与反序列化? 本文围绕这些问题进行了探讨. 1.Java序列化与反序列化  Java序列化是指把Java对象转换为 ...

  8. Java对象大小计算

    这篇说说如何计算Java对象大小的方法.之前在聊聊高并发(四)Java对象的表示模型和运行时内存表示 这篇中已经说了Java对象的内存表示模型是Oop-Klass模型. 普通对象的结构如下,按64位机 ...

  9. Java基础学习总结——Java对象的序列化和反序列化

    一.序列化和反序列化的概念 把对象转换为字节序列的过程称为对象的序列化. 把字节序列恢复为对象的过程称为对象的反序列化. 对象的序列化主要有两种用途: 1) 把对象的字节序列永久地保存到硬盘上,通常存 ...

  10. java对象与json串互转

    1:java对象与json串转换: java对象—json串: JSONObject JSONStr = JSONObject.fromObject(object); String str = JSO ...

随机推荐

  1. 在.Net中所有可序列化的类都被标记为_

    [Serializable] 这个叫Attribute写在类.属性.字段的上面,比如 [Serializable] class A { ... }

  2. LeetCode初级算法之数组:350 两个数组的交集 II

    两个数组的交集 II 题目地址:https://leetcode-cn.com/problems/intersection-of-two-arrays-ii/ 给定两个数组,编写一个函数来计算它们的交 ...

  3. 介质访问控制子层-Medium Access Control Sublayer:多路访问协议、以太网、无线局域网

    第四章 介质访问控制子层-Medium Access Control Sub-layer 4.1介质访问控制子层概述 MAC子层不属于之前提到的OSI或TCP/IP架构的任何一层,这也是为什么这一层被 ...

  4. 【学习笔记】最小直径生成树(MDST)

    简介 无向图中某一点(可以在顶点上或边上),这个点到所有点的最短距离的最大值最小,那么这个点就是 图的绝对中心. 无向图所有生成树中,直径最小的一个,被称为 最小直径生成树. 图的绝对中心的求法 下文 ...

  5. Typora快捷使用方式

    快捷使用: 1.一级标题 # + 空格 + 内容 2.六级标题 # + 空格 + 内容 3.有序序号 1. + 空格 + 内容 4.无序序号 -+ 空格.*+空格.++空格 5.代码块 ```pyth ...

  6. Map、Debug追踪

    Map集合   概述   现实生活中,我们常会看到这样一种集合:IP地址和主机名,身份证号和个人,系统用户名与系统用户对象等,这种一一对应的关系,我们把它称之为映射.Java当中提供了专门的集合类用来 ...

  7. 【涂鸦物联网足迹】用煲仔饭来说明IaaS/PaaS/SaaS的区别

    最近在准备一些科普性的知识内容,发现大家对于一些基础性的知识概念还是有点模糊.今天先来简单介绍一下IaaS/PaaS/SaaS的区别~ 其实还有一个On-Premises(本地部署)的概念,也可以一并 ...

  8. 群晖DS218+部署Harbor(1.10.3)

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  9. Nebula Graph 在微众银行数据治理业务的实践

    本文为微众银行大数据平台:周可在 nMeetup 深圳场的演讲这里文字稿,演讲视频参见:B站 自我介绍下,我是微众银行大数据平台的工程师:周可,今天给大家分享一下 Nebula Graph 在微众银行 ...

  10. Python十大装B语法!你会几种?

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理 Python 是一种代表简单思想的语言,其语法相对简单,很容易上手.不过,如果就此小视 Python ...