栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

关于数据类型、位运算、数据结构的一些总结和思考

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

关于数据类型、位运算、数据结构的一些总结和思考

1、首先要说的是java的8大数据类型:

整数类型byte(1个字节)
short(2个字节)
int(4个字节)
long(8个字节)
字符类型char(2个字节)
浮点类型float(4个字节)
double(8个字节)
布尔类型boolean(单个出现4个字节,当作int类型;在boolean数组中被当作byte,占1个字节)

String类型具体所占字节,要根据其内容决定,一般英文字母或符号算一个字节,汉字算3个字节(utf-8编码),在Unicode码中汉字只占2个字节,其实最开始只有ACSII码,该码用8位来表示所有的英文字母和符号,后来各国纷纷推出自己的编码表,用来表示自己的文字符号,最后为了在国际上统一,提出了Unicode码,共有16位,2个字节,但是如果都用Unicode来传输数据,那么对于那些英文字符的信息,就白白浪费了一半的带宽,所以基于Unicode,又有了utf-8,而utf-8是什么呢,具体可见下方博客:字符集之在UTF-8中,一个汉字为什么需要三个字节? - 苦涩的茶 - 博客园

2、位的运算

数在计算机中都是以补码形式存在,而正数的原码、反码、补码都是一样的,负数的补码则是等于其原码取反后加1,正数和负数做加法运算时,先求出负数的补码,然后与正数做位运算,最后如果最高符号位为1,说明结果为负,需要对结果先-1再取反得到原码形式的结果,如果最高符号位为0,则说明结果为正数,不用再进行转换

3、为什么8位有符号的数取值范围为-128~127

我认为由于计算机存储的都是数的补码,而正数的补码和原码又是相同的,所以0~127就是0000 0000~0111 1111,而负数则是1111 1111(补码)~1000 0000,正好就是-1~-128

4、java是怎么实现栈和队列的

看了下ArrayQueue的源码,其内部是通过一个数组和两个索引(head和tail,初始值都为0)来实现队列和栈的,下面介绍其中个关键代码:

往队尾加元素,add(E e),e不能为null:

elements[tail]=e; 

if((tail=tail+1&elements.length-1)==head){

//容量已满,扩容

doubleXXx();

}

从队首移出元素,pop():

E e=elements[head];

if(e!=null){

elements[head]=null;

head=head+1&elements.length-1;

}

从队首添加元素,addFirst(E e):

elements[head=head-1&elements.length-1]=e;

if(head==tail){

//容量已满,扩容

doubleXXx();

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/571906.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号