继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

【Java核心技术卷】深入理解Java数据类型、变量 (扩展讲解,结合其他语言特拥有的数据类型)

沉晓Jeffery
关注TA
已关注
手记 31
粉丝 12
获赞 52

一,数据类型

Java程序的执行无非就是

1)生成数据结构:

  • 栈数据结构由操作系统建立
  • 类的数据结构由JVM决定
  • 基本类型的数据结构由JVM决定
  • 引用类型的实例结构在程序运行时生成,由类定义决定

这个不多解释

2)获取数据结构的入口地址

注意这点很重要,尤其是字符串,
Java中的String类型是不可改变字符串,所谓的不可改变就是,一旦你对它赋值以后,它的值就不会再发生变化。
例:
String a= “abc”;//a = "abc"
a = a+“def”;// a = “abcdef"吗???
你以为a的值已经发生了改变,但其实不是这样的,实际上Java虚拟机是重新开辟了一个内存,用来存储字符串"abcdef”,这时候a指向了新生成的字符串,其中a是获取这个数据结构的入口地址,而"abc"在内存中还是存在的,这就是不可改变的含义,这个字符串一旦生成,它的值就不会发生变化。
想要改变a指向的值?不可能但是却有别的方法,比如:
在这里插入图片描述
这里对"lalala"这个字符串 取了前四位lala,然后与"houhou"字符串拼接在一起,将a的引用指向新的字符串 a就能访问它了

3)获取数据结构中的成员
4)操作数据结构中的字段成员(数据)

3 和 4 在2中的例子都有体现

5)调用数据结构中的成员方法

这个与类相关 很好理解


二,基元数据类型 和 非基元数据类型

语言中的数据类型本质上是定义了一种数据结构 : 数据类型 ------〉数据结构

基元数据类型 和 JVM的核心数据类型 屏蔽了与硬件相关的物理实现。

在程序设计时,一定要选择数据结构。
程序设计者一定要具有选择数据结构的能力。

这也是学好数据结构的关键组成部分

选择数据结构的因素:
image
这些都很基础,都要很清晰的认识!

数据类型分类:
image

补充:C和Java中很重要的基元类型是 数组 和浮点型

Java数据类型:
image
这张图融合了所有编程语言的数据类型,对号是Java拥有的 叉号是Java没有的 可以思考一下

这里有PDF版本的:链接:https://pan.baidu.com/s/1aVObBAKLxBP15EejRWM6OQ 提取码:4b26

值类型和引用类型的选择:
a、存储空间
b、修改效率

值类型就是基本数据类型(如int ,double 等),而引用类型,是指除了基本的变量类型之外的所有类型(如通过 class 定义的类型)。
所有的类型在内存中都会分配一定的存储空间(形参在使用的时候也会分配存储空间,方法调用完成之后,这块存储空间自动消失), 基本的变量类型只有一块存储空间(分配在stack中), 而引用类型有两块存储空间(一块在stack中,一块在heap中)
在这里插入图片描述

由于栈空间很小,容易栈溢出,值类型的实例一般存放在栈中;
而且方法修改的是值类型数据副本,需要拷贝,影响效率;
所以值类型的设计不能太大(一般<= 16字节)。
引用类型也是在栈中哦! 注意引用类型可以引用堆中的实例
堆空间比较大,内存不容易溢出,引用类型的实例一定存放在堆中;
方法修改引用类型的实例不必需要副本,可以直接修改堆中的实例,效率较高;
所以引用类型的实例可以设计的较大。

对于Java来说 二维数组都是引用型数组,没有矩阵数组,在这方面没有选择的余地,虽然降低了灵活性,但是提高了访问与操作的效率.

三,变量

同样的错误:
变量未初始化
对于c语言好Java语言有所不同
C语言逻辑错误
Java语言语法错误
记住 变量名都要大写呀!!!

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP