java数据类型浅析(一)

关于作者的更多博客请访问

云里云外开源社区

非java方向的小伙伴们刚开始学习可能会遇到一些问题,我就把我刚开始学的时候遇到的问题总结一下,大家可以互相讨论。

java数据类型浅析(二)

数据类型分为

数据类型.png
除了字符型和布尔型,其他的基本数据类型都是有符号的。而且Java中的基本数据类型所占存储空间固定,不随操作系统的变化而变化。
这使得java具有可移植性和平台无关性。(我们在网课上也学到了跨平台性,我认为这就是一种具体体现)
这里在推荐大家记一下每个类型大小

名称 表示 字节(Byte) 位(Bit)
字节型 byte 1B 8b
短整形 short 2B 16b
整形 int 4B 32b
长整形 long 8B 64b
单精度浮点型 float 4B 32b
单精度浮点型 double 8B 64b
字符型 char 2B 16b
布尔型 boolean 1B 8b

虽然一般情况下这个好像用不到,但在随堂测验中是出现过的,开学以后老师肯定也会讲到,提前把它们记住也没什么坏处。

具体到基本数据类型我认为大家至少应该注意一下几点

1、String不属于基本数据类型,而是引用数据类型。
2、浮点型在使用时最好在值的后面加上具体的区分。
Eg.

float  s = 2.5F;
float  s1 = 2.5f;

这里具体原因是,Java中默认浮点数为double类型,所以将任意一个小数赋值给float,这里是大转小,没有强制装换自然会报错。或者
float s = (float)2.5;这样也是可以的。
3、布尔型的值只能为true或false。

引用数据类型就较复杂一些,我也把我了解到的总结一下

• Java内存区域划分:

1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制.
2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中。)
3. 堆:存放所有new出来的对象。
4. 静态域:存放静态成员(static定义的)
5. 常量池:存放字符串常量和基本类型常量(public static final)。
6. 非RAM存储:硬盘等永久存储空间

以上我也不是很懂,期待和大家一起弄懂它……
但是我们先了解堆和栈吧
栈.png

首先从基本数据类型开始

int a=1;
int b=1;

程序首先在栈中创建一个名字为“a”的引用,然后在栈中寻找是否有存储值为1的一个地址。
若无;则在栈中开辟一个存储值为1的空间,最后将引用a指向这个地址。
若有;则直接将引用a指向这个地址。
接着创建一个名字为“b”的引用,因为栈中已经存在这么一个存储值为1的空间了,所以b直接指向这个地址。
最后a和b都指向同一块空间
常量
public static final int INT1=9;
首先在栈中创建一个名字为“INT1”的引用,然后在常量池中寻找是否有存储值为9的一个地址。
若无;则在常量池中开辟一个存储值为9的空间,最后将引用INT1指向这个地址。
若有;则直接将引用INT1指向这个地址。

然后是引用数据类型

这里有两种格式
1 、创建对象形式

String s= new String("china");

先去常量池中找是否有China
若无;则在池中创建一个"china"对象,再去堆中创建一个常量池中的此对象的拷贝对象,再去栈中开辟名为“s”的空间,存放此对象的链接地址。
若有;去堆中创建一个常量池中的此对象的拷贝对象,再去栈中开辟名为“s”的空间,存放此对象的链接地址。

2、

String d= "china";

先去常量池中找是否有China
若无;则在池中创建一个"china"对象,再去栈中开辟名为“d”的空间,存放此对象的链接地址。
若有;去栈中开辟名为“d”的空间,存放此对象的链接地址。

所以我们说字符串的不变性
修改一个字符串
String d=“china”;
d=“shanxi”;
System.out.println(d);实际上是重新指向了一个地址

这只是个人见解,不代表真理啊,如果有错误希望同学们可以积极指正!!!
第二篇
参考文章

发布了5 篇原创文章 · 获赞 3 · 访问量 140

猜你喜欢

转载自blog.csdn.net/L1142456160/article/details/104979843
今日推荐