关闭

学习笔记(一)

120人阅读 评论(0) 收藏 举报
分类:

第一章 对象导论


1、 

  JAVA:单根继承结构,即所有的类都继承终极类Object,C++则不是。

2、 

  JAVA采用动态内存的分配方式,每当创建新对象时,就要使用new关键字来构建此对象的动态实例。堆的内存池动态的创建对象,在这种方式中,知道运行是才知道需 要多少对象,他们的生命周期如何,以及他们的具体类型是什么,这些答案只能在程序运行时相关代码被执行的那一刻才能确定,需要大量的时间在堆中动态的分配存储空 间,这可能远远大于在堆栈中创建存储空间的时间。


第二章 一切都是对象


1. 引用与对象的关系

         String   s;
     此语句创建的只是引用,并不是对象。

        String  s  = new String("hello world");
    通过new操作符来实现引用和对象的相关联。

2、 数据存储位置

  1)寄存器

  在处理器的内部,不能直接控制,运行速度最快。

  2)堆栈

  位于通用RAM(随机访问存储器)中,,但通过堆栈指针可以从处理器哪里获得快接支持。堆栈指针向下移动,则分配新的内存;若向上移动,则释放内存。创建程 序时,JAVA必须知道堆栈内所有项的确切生命周期,以便上下移动堆栈指针,所以某些数据存储在堆栈中(对象引用),但JAVA对象并不存在这里。

  3)堆

  一中通用的内存池(也位于RAM区),用于存放所有的JAVA对象。编译器并不需要知道存储的数据的存活时间。使用关键字new,当执行到这段代码时,就会在堆内进行储存分配。

  4)常量存储

  程序代码内部或者ROM中(嵌入式系统)

  5 )非RAM储存

  流对象和持久化对象(磁盘)

  特例:

  基本类型不用new创建,创建一个并非引用的“自动”变量,置于堆栈中。

3、JAVA中的数组

  C++的数组就是内存块,JAVA则是创建一个引用数组。(后续章节讲到)

4、永远不需要销毁对象

  基本类型在其作用域内有效,Java对象不具备和基本类型一样的生命周期,用new创建对象时,可以存活于作用域之外。 

     {
    String  s =  new String("hello world");
      }
      在作用域的终点引用S消失,s指向的String对象仍然占据着内存空间。垃圾回收器进行处理。

5、类

  当类的成员对象是对某个对象的引用,则需要初始化。

  当类的成员对象是基本数据类型的时候,即使没有初始化,Java会确保它有个默认值。(并不适用于局部变量,可能被赋予任意值,而不会自动初始化为0)

boolean false     
char null
byte (byte)0
short (short)0
int 0
long 0L
float 0.0f
double 0.0d   
 6、static关键字

  static生命的事物不会与包含它的类的任何实例联系在一起,用一个存储空间

  引用有两个方法,①通过对象定位,如str.name,②通过类名引用Str.name


第三章 操作符


1、副作用

  操作符改变操作数本身。

2、赋值

  1)基本类型的赋值:

              基本类型存储了实际的数值,而非指定一个指向对象的引用,所以赋值的时候,是将一个地方的内容复制到另一个地方。赋值后没有关联。

  2)对象的赋值:

              对对象进行操作时,实际上操作的是对象的引用。

              Tank t1 = new Tank();
<span style="white-space:pre">	</span>      Tank t2 = new Tank();
              t1.num=9;
              t2.num=27;
              t1=t2;
             实际上是引用t1、t2都指向了同一个对象。(别名)

              Tank t1 = new Tank();
	      Tank t2 = new Tank();
              t1.num=9;
              t2.num=27;
              t1.num=t2.num;
            引用t1、t2指向了不同的对象。(不建议那么使用,会产生意想不到的结果)

3、算术操作符

  1)==和equal的比较

    对于对象,==比较的是对象的引用,equals()比较的是对象的内容。

  2)逻辑运算符

    不可以讲非布尔值当做布尔值在逻辑表达式中使用(c++可以)。   

                6 && 7
       3 )按位操作符

    ①<< 左移

     低位补0

    ②>>右移

     无符号补0;有符号:符号为正,高位补0,符号为负,高位补1

  4)类型转换

    ①float、double转换到int 截尾

    ②char、byte、short执行算数运行时自动转换到int











0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:9527次
    • 积分:356
    • 等级:
    • 排名:千里之外
    • 原创:22篇
    • 转载:34篇
    • 译文:0篇
    • 评论:0条