前言

Java是基于C++的,但Java是一种更加纯粹的面向对象程序设计语言。

C++和Java都是混合/杂合型语言。杂合型语言允许多种编程风格。

用引用操纵对象

每种编程语言都有自己操纵内存中元素的方式。

  • 直接操纵元素
  • 用某种基于特殊语法的间接表示(C和C++里的指针)
  • 用引用操纵对象(Java)

在Java中,一切都被视为对象。操纵的标识符实际上是对象的一个引用

  • 类比为遥控器(引用)来操纵电视机(对象)
  • 只要把握这个遥控器,就能保持与电视机的连接
  • 改变频道或减小音量,实际操纵的是遥控器(引用),再由遥控器来调控电视机(对象)
  • 在房间四处走走,只要携带遥控器(引用)而不是电视机(对象)就能调控电视机
  • 即使没有电视机,遥控器也可以独立存在
      //创建的只是引用而不是对象
String s1;
//创建一个引用的同时便进行初始化
//Java语言的特性:字符串可以用带引号的文本初始化
String s2 = "abcd";
//更通用的初始化方法
//创建一个引用,并与一个新的对象相关联
String s3 = new String("abcd");

必须由我们创建所有对象

存储到什么地方

程序运行时,对象的放置安排,内存的分配都是我们必须了解的。
有五个不同的地方可以存储数据:
1.寄存器
2.堆栈
3.
4.常量存储
5.非RAM存储

寄存器:位于数量极其有限的寄存器,是最快的存储区,寄存器会根据需求进行分配,不能直接控制,也不能在程序中感觉到寄存器存在的任何迹象

堆栈:位于通用RAM(随机访问存储器)中,通过堆栈指针可以从处理器那里获得直接支持,堆栈指针向下移动,则分配新的内存,向上移动,则释放那些内存(这是一种快速有效的分配存储方法,仅次于寄存器)创建程序时,Java系统必须知道存储在堆栈内所有项的确切生命周期,以便上下移动堆栈指针。--->限制了程序的灵活性,所以某些Java数据(如对象引用)存储在堆栈中,但是Java对象并不存储在堆栈中

:通用的内存池(位于RAM区)。用于存储所有java对象。编译器不需要知道存储的数据在堆中存活多长时间(灵活性,但分配和清理的时间较长)。

常量存储:存放在程序代码内部。

非RAM存储:数据完全存活于程序之外,不受程序的任何控制,在程序没有运行时也可以存在。如流对象持久化对象

特例:基本类型

new一个对象存储在堆里,因此用new创建一个对象——特别是小的,简单的变量往往不是很有效的。
对于这些类型,Java采取不用new来创建变量,而是创建一个并非是引用的自动变量(直接存储值,并且存储在堆栈中)。

Java语言对于每种基本类型所占存储空间大小是固定的,不像其他语言随机器硬件架构的变化而变化。(可移植性更高)

        /**
* 基本类型创建的不是引用,而是一个自动变量,直接存储值,并且存储在堆栈中。
* 基本类型都有相对应的包装器类,能在堆中创建一个非基本对象,用来表示相对应的基本类型。
*/
//基本类型
int i = 5;
//包装类型
Integer integer = new Integer(i);
//Java SE5自动包装
Integer integer1 = 4;
//反向转换
int i1 = integer1;

转载:http://www.cnblogs.com/JohnTsai/p/4606365.html

 
 
 

Java编程思想学习(一) 一切都是对象的更多相关文章

  1. Java编程思想学习笔记——一切都是对象

    前言 Java是基于C++的,但Java是一种更加纯粹的面向对象程序设计语言. C++和Java都是混合/杂合型语言.杂合型语言允许多种编程风格. 用引用操纵对象 每种编程语言都有自己操纵内存中元素的 ...

  2. Java编程思想学习(二)----一切都是对象

    2.1用应用操作对象 String s; 这里所创建的只是引用,并不是对象.如果此时向s发送一个消息,就会返回一个运行时错误.这是因为此时s没有和任何事物关联.因此,一种安全的做法是:创建一个引用的同 ...

  3. [Java编程思想-学习笔记]第1章 对象导论

    1.1  抽象过程 Java是一门面向对象的语言,它的一个优点在于只针对待解问题抽象,而不用为具体的计算机结构而烦心,这使得Java有完美的移植性,也即Java的口号"Write Once, ...

  4. 《 Java 编程思想》CH02 一切都是对象

    用引用操纵对象 尽管Java中一切都看作为对象,但是操纵的标识符实际上对象的一个"引用". String s; // 这里只是创建了一个引用,而不是一个对象 String s = ...

  5. [Java编程思想] 第二章 一切都是对象

    第二章 一切都是对象 2.1 用引用操纵对象   创建一个String引用: String s;   这里所创建的只是引用,并不是对象.   创建一个引用的同时便初始化: String s = &qu ...

  6. Java编程思想之二 一切都是对象

    2.1 用引用操作对象 每种编程语言都有自己的操作内存中元素的方式. 在Java中,一切都可以视为对象,因此可以采用单一的固定语法. 2.2 必须由你创建所有对象 一旦创建一个引用,就希望它能与一个新 ...

  7. [Java编程思想-学习笔记]第3章 操作符

    3.1  更简单的打印语句 学习编程语言的通许遇到的第一个程序无非打印"Hello, world"了,然而在Java中要写成 System.out.println("He ...

  8. Java编程思想学习(八) 内部类

    可以将一个类的定义放在另一个类的定义内部,这就是内部类. 内部类的定义是简单的,但是它的语法确实很是复杂,让人不是很好理解.下面就内部类做一个小结. 一.内部类的分类 总的来讲内部类分为普通内部类,匿 ...

  9. Java编程思想学习(一)----对象导论中多态的理解

    1.1抽象过程 1)万物皆对象. 2)程序是对象的集合,他们通过发送消息来告知彼此所要求做的. 3)每个对象都有自己的由其他对象所构成的存储. 4)每个对象都拥有其类型. 5)某一特定类型的所有对象都 ...

随机推荐

  1. Dijkstra求最短路径

    单源点的最短路径问题:给定带权有向图G和源点V,求从V到G中其余各顶点的最短路径 Dijkstra算法描述如下: (1)用带权的邻接矩阵arcs表示有向图,arcs[i][j]表示弧<vi,vj ...

  2. J2EE中getParameter与getAttribute以及EL表达式${requestScope}和${param[]}

    getParameter ① 得到的都是String类型的.如http://name.jsp?name=xy中的xy ② 获取POST/GET传递的参数值 ③ 用于客户端重定向,如点击链接或提交按扭时 ...

  3. WebService wsdl没有types的问题

    刚学WebService就遇到一个问题,按视屏敲的代码,它生成的wsdl页面与自己的不一样,我的没有types,结构完全不同了 This XML file does not appear to hav ...

  4. iOS math.h数学函数

    在实际工作中有些程序不可避免的需要使用数学函数进行计算,比如地图程序的地理坐标到地图坐标的变换.Objective-C做为ANSI C的扩展,使用C标准库头文件<math.h>中定义的数学 ...

  5. Kinect for Windows SDK开发初体验(一)环境配置

    1.开发环境需求 (1).硬件需求 a.需要拥有双核,2.66GHz以上的CPU. b.显卡支持Microsoft DirectX 9.0c; c.2GB的内存 d.Kinect for Window ...

  6. C语言 百炼成钢7

    //题目19:一个数如果恰好等于它的因子之和,这个数就称为“完数”.例如6=1+2+3.编程找出1000以内的所有完数. #define _CRT_SECURE_NO_WARNINGS #includ ...

  7. 基于React Native的Material Design风格的组件库 MRN

    基于React Native的Material Design风格的组件库.(为了平台统一体验,目前只打算支持安卓) 官方网站 http://mrn.js.org/ Github https://git ...

  8. [CareerCup] 13.7 Node Pointer 节点指针

    13.7 Write a method that takes a pointer to a Node structure as a parameter and returns a complete c ...

  9. [MetaHook] R_RicochetSprite

    By hzqst void R_RicochetSprite(float *pos, model_t *pmodel, float duration, float scale) { TEMPENTIT ...

  10. 亚博 Arduino智能小车实验报告

    亚博 Arduino智能小车实践报告 一.     程序安装准备 首先安装了Arduino板载USB转串口CH340驱动安装包, 若上述程序安装成功,则可以在我的电脑中找到相应的端口 本机端口号为CO ...