第二章 一切都是对象

2.1 用引用操纵对象

  • 操纵的标识符实际上是对象的一个“引用”。
  • 拥有一个引用,并不一定需要有一个对象与它关联。
String s;

上述代码只创建了一个引用,并不是对象。

2.2必须由你创建所有对象

一旦创建了一个引用,就希望它能与一个新的对象想关联,通常使用new操作符来实现这一目的,new的关键字意思是“给我一个对象。”

String s =new String("hello word!");

上述代码不仅表示“给我一个新对象”,而且通过提供一个初始化的字符串(hello word!),给出了怎样产生这个String的信息。


2.2.1 存储位置

  1. 寄存器,与cpu最接近,最快的存储器,数量有限,java中不能直接控制。
  2. 栈,数据存储区。
  3. 堆,对象存储区
  4. 常量存储区(如ROM)。
  5. 非RAM存储。

2.2.2 基本类型

特点:非引用类型,直接存储“值”,并置于栈中。

基本类型大    小最小值最大值包装器类型默认值
boolean---Booleanfalse
char16 bitsUnicode 0Unicode 216-1Characternull
byte8 bits-128+127Byte0
short16 bits-215+215-1Short0
int32 bits-2 31+231-1Integer0
long64 bits-263+263-1Long0L
float32 bitsIEEE754IEEE754Float0.0f
double64 bitsIEEE754IEEE754Double0.0d
void---Void-

注意:局部变量初始值可能是一个随机值,使用时应该对其赋值,否则会在编译时返回一个错误。

2.2.3 数组

创建一个数组对象实际上就是创建 了一个引用数组,并且每个引用(既数组元素)都会自动被初始化为一个null值,一旦java看到null,就知道这个引用还没有指向某个对象,在使用任何引用之前,必须为其指定一个对象,如果试图使用一个还是null的引用,在运行时将会报错。

基本数据类型的数组,会将该数组所占的内存全部置零。

2.3 永远不要销毁对象

用new创建的java对象,可以存活于作用于之外。
{
    String s= new String("hello word!");
}
引用s在作用域大括号结尾处就消失了,但是s指向的String对象仍继续占据内存空间,在上面的代码中,无法在这个作用域外访问该对象,因为s引用已超出了作用域的范围,但可以通过传递或者复制对象的引用,可以在作用域外访问该对象。

由new创建的对象,只要需要,就会一直保存下去,不需要,会自动被垃圾回收器回收。

2.5 方法和返回值

  • 方法名和参数列表(合起来被称为“方法签名”)唯一的标识出某个方法。
  • 参数传递实际上是传递对象的引用(除基本数据类型除外)。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值