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

一,数据类型

Java程序的执行无非就是

1)生成数据结构:

栈数据结构由操作系统建立

类的数据结构由JVM决定

基本类型的数据结构由JVM决定

引用类型的实例结构在程序运行时生成,由类定义决定

这个不多解释

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

注意这点很重要,尤其是字符串,

Java中的String类型是不可改变字符串,所谓的不可改变就是,一旦你对它赋值以后,它的值就不会再发生变化。

例:

String a= “abc”;//a = "abc"

a = a+“def”;// a = “abcdef"吗???

你以为a的值已经发生了改变,但其实不是这样的,实际上Java虚拟机是重新开辟了一个内存,用来存储字符串"abcdef”,这时候a指向了新生成的字符串,其中a是获取这个数据结构的入口地址,而"abc"在内存中还是存在的,这就是不可改变的含义,这个字符串一旦生成,它的值就不会发生变化。

想要改变a指向的值?不可能但是却有别的方法,比如:

AAffA0nNPuCLAAAAAElFTkSuQmCC

这里对"lalala"这个字符串 取了前四位lala,然后与"houhou"字符串拼接在一起,将a的引用指向新的字符串 a就能访问它了

3)获取数据结构中的成员

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

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

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

这个与类相关 很好理解

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

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

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

在程序设计时,一定要选择数据结构。

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

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

选择数据结构的因素:

AAffA0nNPuCLAAAAAElFTkSuQmCC

这些都很基础,都要很清晰的认识!

数据类型分类:

AAffA0nNPuCLAAAAAElFTkSuQmCC

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

Java数据类型:

AAffA0nNPuCLAAAAAElFTkSuQmCC

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

值类型和引用类型的选择:

a、存储空间

b、修改效率

值类型就是基本数据类型(如int ,double 等),而引用类型,是指除了基本的变量类型之外的所有类型(如通过 class 定义的类型)。

所有的类型在内存中都会分配一定的存储空间(形参在使用的时候也会分配存储空间,方法调用完成之后,这块存储空间自动消失), 基本的变量类型只有一块存储空间(分配在stack中), 而引用类型有两块存储空间(一块在stack中,一块在heap中)

AAffA0nNPuCLAAAAAElFTkSuQmCC

由于栈空间很小,容易栈溢出,值类型的实例一般存放在栈中;

而且方法修改的是值类型数据副本,需要拷贝,影响效率;

所以值类型的设计不能太大(一般<= 16字节)。

引用类型也是在栈中哦! 注意引用类型可以引用堆中的实例

堆空间比较大,内存不容易溢出,引用类型的实例一定存放在堆中;

方法修改引用类型的实例不必需要副本,可以直接修改堆中的实例,效率较高;

所以引用类型的实例可以设计的较大。

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

三,变量

同样的错误:

变量未初始化

对于c语言好Java语言有所不同

C语言逻辑错误

Java语言语法错误

记住 变量名都要大写呀!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值