对Java中引用、对象、基本类型等的理解
来源:互联网 发布:php网站内容管理系统 编辑:程序博客网 时间:2024/05/21 12:44
一、java中一切都被视为对象,但是操纵的标识符实际上是对象的一个“引用"(reference),可以想象成:遥控器(引用)操纵电视机(对象),若在房间里四处走动的同时能调控电 视机,那么只需要携带遥控器(引用)而不是电视机(对象)。即使没有电视机(对象),遥控器(引用)也可独立存在,所以,引用并不一定与一个对象关联,创建String 引用如下:
String s;//只是创建引用。并不是创建对象。
//若此时向 s发送一个消息,就会返回一个运行时错误,因为此时 引用 s 没有与任何事物相关联。
安全的做法:
创建一个引用的同时对其初始化:
String s="abc";
二、有5个不同的地方存放数据:
1.寄存器:不能直接控制,最快存储区。
2.堆栈:位于通用的RAM中,栈的指针向下移动(低地址),则分配新的内存;栈的指针向上移动(高地址),则释放内存。
3.堆:一种通用的内存池(也位于RAM中),用于存放所有的java对象。new生成一个对象,则在堆里进行存储分配。堆有很大的灵活性,但是用堆存储分配和清理可 能比栈需要更多时间。
4.常量存储
5.非RAM存储:数据存活于程序之外,在程序没有运行时也可以存在,例如:流对象和持久化对象。
三、Java不用new来创建基本类型的变量,而是创建一个 并非是引用 的 “自动”变量。这个变量直接存储“值”,并置于 堆栈 中。Java中基本类型所占的存储空间的大小是固定的,并不是像其他语言一样随硬件架构变化而变化,这种存储空间的不变性是 Java程序更具有 可移植性的原因之一。
基本类型具有的包装器类,使得可以在堆中创建一个非基本对象,对来表示一个基本的类型,例: Character ch= new Character('x');
四、数组错误在Java中可以避免的原因:
Java中创建一个数组对象时,实际上就是创建了一个数组引用,并且每个引用都会自动被初始化为一个特定值,该值有自己的关键字null。一旦Java看到null,就知道这个引用还没有指向某个对象。在使用任何引用前必须为其指定对象;若 试图使用一个还是null的引用,在运行时会报错。
五、Java 对象不具备和基本类型一样的生命周期。new创建的一个Java对象,可以存活于作用域之外,例如:
{
String s = new String("a string");
}
引用 s 在作用域终点就消失了。然而 s指向的String对象仍然占据着 内存空间。Java有一个垃圾回收器,用来监视new创建的所有对象,并辨别和清理那些不会再被引用的对象。
六、若类的某个成员是基本数据类型,即使没有初始化,Java也会确保它获得一个默认值。当变量作为类的成员使用时,Java才确保给定其默认值。
然而上述确保初始化的方法并不适用于”局部“变量(即并非某个类的字段),因此,如果在某个方法定义中有:
int x ;
那么变量x可能为任意值,不会被自动初始化,所以在使用x前,应先对其赋值,若没有赋值,则 Java会在编译时 返回错误(Java优于C++的地方)。
- 对Java中引用、对象、基本类型等的理解
- Java中This ,Static,对象,对象的引用 等关键字的理解
- Java 中对象引用的类型
- Java对象的4中引用类型
- Java中final关键字对基本类型和引用的差别
- java中对象和引用的理解
- Java中对象与引用的理解
- Java中对象和引用的理解
- Java中对象和引用的理解
- java基本数据类型,String、Integer等类型,Class三种对象引用的箭头,即箭头是怎么指的?
- java中基本数据类型与对象引用类型的默认初始化值学习
- Java中基本类型与引用类型的区别
- Java 中基本类型 和 引用类型 变量的区别
- Java中基本类型和引用类型的传递
- java中基本类型与引用类型
- [Java学习] 对Java的面对对象编程中对象和引用以及内部类的理解
- Java中引用类型vs值类型&对引用类型所做的GC操作简介
- 对引用类型 dynamic 的理解
- 请求表单
- *(leetcode) Binary Tree Level Order Traversal (tree)
- SQLite3数据库操作入门
- UVAOJ 401 ——Palindromes 模拟
- oracle 判断某一个存储是否存在
- 对Java中引用、对象、基本类型等的理解
- java学习--多线程发生死锁的一个例子
- 第⼗六讲:网络编程
- 深入理解Asterisk体系架构
- 最新最全的iPhone6/6 Plus适配详解
- Android获取屏幕高度、标题高度、状态栏高度详解
- java分割字符串
- 自定义室内地图以及路径规划
- 解决uploadify插件浏览器打开页面崩溃问题