学习笔记(一)

转载 2015年11月18日 21:47:14

第一章 对象导论


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











JavaEE2017最新版基础班学习笔记

  • 2017年12月08日 21:46
  • 20KB
  • 下载

web开发学习笔记

  • 2017年12月06日 09:40
  • 549KB
  • 下载

Linux学习笔记_安全相关

防火墙 iptables iptables 是基于内核的netfilter功能的管理工具。。iptables服务会把配置好的防火墙策略交由内核层面的netfilter网络过滤器来处理。 这个工具在re...

Flex学习笔记(flex必知必会).doc

  • 2017年12月02日 15:38
  • 734KB
  • 下载

Javascript学习笔记(Number对象)

Number对象 来自《JavaScript 标准参考教程(alpha)》,by 阮一峰 目录 概述 Number对象的属性 Number 对象实例的方法 Number...

NA学习笔记

  • 2017年12月08日 13:56
  • 16KB
  • 下载

NVIDIA TK1 学习笔记(2):环境配置

了解了NVIDIA TK1的基本情况后,我们就要开始进行环境配置。     前期准备:用USB线将TK1开发板与主机连载一起,保证主机与TK1板子都能上网。主机要安装有ubuntu系统,我用的是ub...

ajax学习笔记

  • 2017年11月30日 17:09
  • 67KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:学习笔记(一)
举报原因:
原因补充:

(最多只允许输入30个字)