温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java对象、操作符、控制执行流程分析

发布时间:2021-11-24 14:34:08 来源:亿速云 阅读:148 作者:iii 栏目:大数据

这篇文章主要介绍“Java对象、操作符、控制执行流程分析”,在日常操作中,相信很多人在Java对象、操作符、控制执行流程分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java对象、操作符、控制执行流程分析”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1.五个不同的地方可以存储数据

(1)寄存器:这是最快的存储区,它位于处理器内部,其数量及其有限,根据需求进行分配,你不能直接控制,也无法感知其存在(但C和C++运行向编译器建议寄存器的分配方式)。

(2)堆栈:位于通用RAM(随机访问存储器)中,但通过堆栈指针可以从处理器那里获得直接支持。堆栈指针向下移动,则分配新的内存,若向上移动,则释放内存。这是一种快速有效的分配存储方法,仅次于寄存器。Java系统必须知道存储在堆栈内所有项的生命周期(限制了灵活性),以便上下移动堆栈指针,Java对象的引用便存储于堆栈中

(3):是一种内存池(也位于RAM区),用于存放所有的Java对象,编译器不需要知道存储的数据在堆里的存活时间(体现了灵活性),new一个对象时,会自动在堆里进行存储分配,用堆进行存储分配和清理会比用堆栈花更多时间

(4)常量存储:常量值通常直接存放在程序代码内部,这样做是安全的,因为它们永远不会被改变。

(5)非RAM存储:如果数据完全存活于程序之外,那么它可以不受程序的任何控制,在程序没有运行时也可以存在。如流对象和持久化对象,在流对象中,对象转化成字节流,在持久化对象中,对象被存放于磁盘上,程序终止后,它们仍可以保持自己的状态。

2.对于一些基本类型,特别是小的、简单的变量,Java采用和C、C++相同的方法,不用new来创建变量,而是创建一个并非是引用的“自动”变量,这个变量直接存储“值”,并置于堆栈中,因此更加高效。但这些基本类型通常也具有相应的包装器类,并可以反向转换(将包装器类的数据转为简单变量存储)。

3.高精度计算类BigInteger支持任意精度的整数,BigDecimal支持任意精度的定点数。它们以牺牲运算速度为代价,换取了精度

4.Java对象不具备和基本类型一样的声明周期,当用new创建一个Java对象时,它可以存活于作用域之外:

{
   
   
   String s = new String("a string");}

引用s在作用域终点就消失了,然而s指向的String对象实体却仍继续占据内存空间,但我们无法在这个作用域之后访问这个对象,因为对它唯一的引用已经超出了作用域的范围。当Java的垃圾回收器监测到这些不会再被引用的对象时,就会释放这些对象的内存空间,以便供其他新的对象使用。

5.调用方法的行为通常被称为:发送消息给对象

int x = a.f();

消息是f(),对象是a。

6.Java中为什么没有sizeof()?
在C和C++中,需要使用sizeof()的最大原因是为了“移植”,不同数据类型在不同机器上可能有不同的大小;Java由于建设于JRE之上,所有在所有机器上数据类型的大小都相同,无需用sizeof()。

7.移位操作符:

(1)左移位操作符(<<):按照操作符右侧指定的位数将操作符左边的操作数向左移动(在低位补0)—[高位舍弃,低位补0]

(2)“有符号”右移操作符(>>):按照操作符右侧指定的位数将操作符左边的操作数向右移动(符号为正:在高位插入0; 为负:在高位插入1)

(3)“无符号”右移操作符(>>>):…在高位插入0

注:
移位+等号,指定移动的位数,例如:k >>>= 10
5 << 2:00000101 —> 00010100 由5变为20
>>:扩大2^k
<<:缩小2^k

到此,关于“Java对象、操作符、控制执行流程分析”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI