您的位置:首页 > 编程语言 > Java开发

第二章 一切都是对象

2010-10-04 16:38 661 查看
 第二章 一切都是对象

1、用引用操作对象

   就如遥控器和电视机的关系,引用可以操作对象,又可以脱离电视机存在

   String s;这里创建的就是一个引用,而不是对象

   如果你需要向引用发送消息,那么你必须要使s与某个事物相关联,所以一种安全的方法是创建一个引用的同时便对引用进行初始化。

   String s = “abc”;

2、通常为引用与一个新的对象相关联,通常用new关键字来实现这一目的。

3、对象存储到什么地方

   (1)寄存器:这是最快的存储区,它位于处理器内部,我们不能直接控制,也不能感觉到它的存在

   (2)堆栈:位于ram中,但是可以通过堆栈指针可以从处理器那获得直接支持。堆栈指针向下移动则分配新的空间,向上移动则释放内存。创建程序时,java系统必须知道存储在堆栈空间中所有项的确切生命周期,以便上下移动堆栈指针,限制了灵活性,java对象不存在此中,仅仅某些数据存储在这里。

   (3)堆:一种通用内存池,也位于ram中,用于存放java对象,编译器不需要知道存储在其中的数据的生命周期,因此灵活性高,当你需要一个对象的时候,只需要写入new一行简单的代码。但是我们必须要对这种灵活性付出代价(因为比在堆栈中耗费的时间要长)

   (4)常量存储:常量值位于程序代码内部,它们永远不被改变,存放在rom(只读存储器中)

   (5)非ram存储:例如、流对象和持久化对象。可以把对象转化成为可以存放在其他媒介中的事物。

   (6)特例、基本数据类型:这些基本数据对象不采用new关键字创建变量,而是创建一个并非是引用的“自动”变量,这个变量直接存储值,并置于堆栈中。

   这些数据所占的存储空间是不变的

  

基本类型

大小

包装器类型

boolean

-

Boolean

char

16 bits

Character

byte

8 bits

Byte

short

16 bits

Short

int

32 bits

Integer

long

64 bits

Long

float

32 bits

Float

double

64 bits

Double

void

-

Void

 

4、java确保数组会被初始化,而且不能在它的范围之外被访问。

   这是因为当创建一个数组的时候,实际上是创建了一个引用数组,并且每个引用都会自动被初始化为一个特定值,该值拥有自己的关键字null,一旦java看到了null,就知道这个引用还没有指向某个对象。在使用任何引用前,必须为其指定一个对象,如果试图使用一个还是null的引用,那么就会报错。

5、作用域问题:

   ①变量中的作用域(c/c++与java的区别)

   ②对象的作用域(在c++中,当你使用完对象之后必须将其销毁,而在java中,当用new创建的对象,只要你需要,它就一直存在,为了防止对象填满内存空间,java采用垃圾回收器来监听new创建的所有对象,并辨别哪些不会再被引用的对象,然后释放这些对象的内存空间)

6、基本成员变量的默认值

基本类型

默认值

boolean

FALSE

char

‘/u0000’(null)

byte

(byte)0

short

(short)0

int

0

long

0L

float

0.0f

double

0.0d

但是上述初始化的方法并不适用于“局部”变量,如果用于局部变量,则java将会报错

Eg1(正确的例子)

public class Demo1 {

   //定义类成员变量,java默认值为0

   int i;

   public static void main(String[] args) {

      Demo1 d1 = new Demo1();

      System.out.println (d1.i);

   }

}

Eg2(错误的例子)

public class Demo1 {

   //定义类成员变量

   int i;

   public static void main(String[] args) {

      //出现The local variable j may not have been initialized错误

      int j;  //main方法内的局部变量,系统不会分配默认值

      Demo1 d1 = new Demo1();

      System.out.println (d1.i);

      System.out.println (j);

   }

}

7、方法是只被对象调用的,而static方法是给类调用的

8、java的字符集编码是:Unicode

9、static关键字:

①static方法不能访问非static成员变量

②static方法可以访问其他的static方法

public class Demo2 {

   static String name ;     //必须为static变量

   public static void main(String[] args) {

      getName ();可以访问static getName函数

   }

   public static String getName (){

      return name ;

   }

}

10、第一个java程序

//HelloDate.java

package chapter2;

import java.util.*;

public class HelloDate {

   public static void main (String[] args){

      System.out.println ("Hello it's:");

      System.out.println (new Date ());

   }

}

系统自动导入java.lang包,而Date这个类是存在于java.util包中的,所以我们需要导入这个包中的Date类

然后System类中有一个out静态变量,它的类型是PrintStream对象

11、javadoc命令的使用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息