重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章主要介绍“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对象、操作符、控制执行流程分析”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!