数据类型的常见问题【学习笔记】

(一)

在这里插入图片描述整数在内存中是怎么表示的?

  • 补码表示。
  • 为什么要用补码表示?有什么好处?

浮点数在内存中是怎么表示的?

  • 相当于科学计数法的做法。
  • 浮点数表示数的范围特别大,但精度有限

(二)

在这里插入图片描述
是“整数在内存中是怎么表示的”更加底层的概念
**假设:**一个整数有4个字节,内存中分4个字节大小的块

问:

  • 高位放在高地址还是高位放在地地址?(衍生出2中不同的顺序) Big-ending/Little-ending
  • 什么是对齐?
  • 数据在内存中需要对齐

比如说:C++有一个结构体,里面有个char类型(1Byte),还有一个int类型(4Byte),问这个结构体是不是5Byte?

  • 不是,5Byte在内存里放着不舒服,
  • 把int类型对齐,
  • 很有可能char类型后面会补上3个Byte,一共就8Byte(放一个整数和char)

(三)

在这里插入图片描述
注意:通过结构化说明
Java

  • 先说Primitive type和object
  • 再说Primitive type有些什么(不一定要说全)?
  • 再说object

C++

  • 系统自己的类型
  • 自定义类型(class,联合(Union),struct)

Python(动态类型的语言)


(四)

在这里插入图片描述

  • Primitive type之间:值传递
  • Object:全是引用传递
  • C++可以控制:想值传递or引用传递(自己说了算)

(五)

在这里插入图片描述

  • 前面有讲

(六)

在这里插入图片描述
创建了2个对象

  • “test”:创建一个String
  • New String():创建一个String

解释New String(“test”):

  • New String()创建了一个String,参数是“test”创建的String

解释String s = new String(“test”):

  • Java都是引用传递
  • s是个String类型的引用,指向等号右边New String()
  • =:不产生新的对象

思考:在C++里也这样写一句话,是创建多少个对象?


(七)

在这里插入图片描述

  • hashCode相等是equals相等的必要条件
  • hashCode相等不一定是equals相等
  • equals相等,hashCode一定相等

(八)

在这里插入图片描述

  • 对象平时是在内存中,有时候想把它存在硬盘里,或者当做字节流通过网络发给对方——序列化(把内存中的东西斩成字节流)
  • 反序列化:读到/收到一个字节流之后,把原来的对象还原出来放进内存里
    序列化和反序列化通过什么来做的?
  • 实现Serializable接口(启用其序列化功能的接口)
  • 实用性不大

通常:

  • 序列化不会序列化到一个硬盘上,一般是写成数据库的形式。
  • 不用Serializable接口
  • 直接用Hibernate核心思想—ORM机制 进行 数据库序列化
    如果通过网络,也不是传一个字节流,会把它序列化成一个JSON对象传到网络上,反序列化从JSON文档去反序列化成一个内存中的对象。(这些做法都有相应的库)

问:如何设计

  • 数怎么进行序列化
  • 怎样把一个内存中复杂的结构转化成字节流,或者转化成字符串,让他们反过来能把对象构造出来

欢迎各路大佬们开启头脑风暴,探讨本文提出的问题~❤

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值