二 一切都是对象

来源:互联网 发布:微信windows phone旧版 编辑:程序博客网 时间:2024/06/05 10:12

2.1在Java中尽管一切都"看作"对象,但是操纵的标识符实际上是对象的一个"引用",当你想操作一个对象时实际上你是操控的引用,此外你拥有一个引用,这个引用并不一定需要有一个对象与它关联.

    例如:String s; 这时只是创建了一个引用,并不是对象.此时操作s会返回一个运行期错误,因为此时s实际上没有与任何事物相关联.

2.2必须由你创建所有对象:一旦创建了一个引用,就希望它能与一个新的对象相关联,通常用new操作符来实现这个目的

       2.2.1存储到了什么地方:

                  1)寄存器:最快的存储区,位于处理器内部,但是寄存器的数量极其有限,所以寄存器根据需求进行分配.

                  2)堆栈:位于RAM(随机访问存储器),堆栈指针向下移动,则分配内存,向上移动则释放内存,某些Java数据存储于堆栈中----对象的引用,但是Java对象并不存储在其中.

                  3)堆:一种通用的内存池,用于存放所有的Java对象,当需要一个对象时,只需要new 代码,当执行到这行代码的时候,会自动在堆里进行存储分配,但是进行存储分配和清理可能比用堆栈进行存储分配需要更多的时间.

                  4)常量存储

                  5)非RAM存储:如果数据完全存活与程序之外,在程序没有运行是也可以存在,如:流对象和持久化对象,在流对象中,对象转化成字节流,通常被发送给另一台机器,在持久化对象中,对象被存放与磁盘上

        2.2.2特例---基本类型

                 因为new会把对象存储在"堆"里,所以用new来创建一个对象----特别是小的简单的变量往往不是很有效,因此不用new来创建变量,而是创建一个并非是引用的"自动"变量,这个变量直接存储"值",并置于堆栈中.

                 boolean(默认值 false),char(默认值 null),byte(默认值 0),short(默认值 0 ),int(默认值 0),long(默认值 0L),float(默认值 0.0f),double(默认值 0.0d)

       2.2.3Java中的数组(以后会详细说)

                  Java确保数组会被初始化,当创建一个数组对象时,实际上就是创建一个引用数组,并且每个引用会自动被初始化为一个特定值,该值拥有自己的关键字null.

                 如果创建用来存放基本数据类型的数组,编译器也会给默认值. 

2.3永远不需要销毁的对象

       2.3.1作用域:决定了在其内定义的变量名的可见性和生命周期,是由花括号({})的位置决定的

                {

                      int x=12;

                      {

                         int x=96;

                         }

                }

       2.3.2对象的作用域:  Java对象不具备和基本类型一样的生命周期,当用new创建一个对象时,他可以存活于作用域之外

                {

                   String s = new ("abc");

          引用s作用域终点消失了,然而s指向的String对象仍然占据内存空间,虽然我们在这个作用域之后无法访问他(因为对他的唯一引用已经超出了作用域的范围)

2.4类:

         class A{} 定义了一个新类 类名为A

       2.4.1字段和方法:一旦定义了一个类,就可以给类中设置两种类型的元素:字段(有时被称作数据成员),方法(成员函数),字段可以时任何类型的对象,也可以是基本类型的一种,若字段是某个对象的引用那么必须初始化该引用,使其与一个实际对象相关联.


2.5方法,参数和返回值

     1)Java中的方法决定了一个对象能够接受什么样的消息, 方法组成部分包括:名称,参数,返回值,方法体

             返回类型描述:指在调用方法之后从方法返回的值

             参数列表:要传给方法的消息的类型和名称

             方法名和参数列表唯一的标识出某个方法

     2)方法只能作为类的一部分来创建,方法只有通过对象才能被调用(不包括static)

     2.5.1参数列表:指定要传递给方法什么样的信息,这里传递的也是对象的引用.

                     int getByte(String s){

                           return s.length()*2;

                            }   

              该方法用于返回一个string类型的对象的所占字节数

        通过上面的例子,学习关键字 return  它代表 已经做完,离开此方法 可以把值返回

   static关键字:当一个事物是static时,就以为着这个域或方法不会包含它的那个类的任何对象实例关联在一起

    

                  


























1 0
原创粉丝点击