`
onlylau
  • 浏览: 4989 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

《Java编程思想》学习笔记之一切都是对象

阅读更多
    毕业工作快2年了,突然觉得自己对于java的很多相关技术都有所摄取,但是都不精,究其根本还是自己的java基础知识不牢固,因此最近一段时间开始精读下《Java编程思想》,顺便通过JavaEye做一下笔记,记录下一些重点内容。

用引用操作对象
    每种编程语言都有自己的操纵内存中元素的方式。有时候,程序员必须注意将要处理的数据是什么类型。你是直接操纵元素,还是用某种基于特殊语法的间接表示(例如C和C++里的指针)来操纵对象。
    所有这一切在Java里都得到了简化。一切都被视为对象,因此可采用单一固定的语法。尽管一切都看作对象,但操纵的标识符实际上是对象的一个“引用”(Reference)。
    如创建一个String引用:
  
String s;

    这里所创建的只是引用,并不是对象。
    一旦创建了一个引用,就希望它能与一个新的对象相关联。通常用new操作符来实现这一目的。new关键字的意思是“给我一个新对象。”所以前面的例子可以完成:
   
String s = new String("asd");

    它不仅表示“给我一个新的字符串”,而且通过提供一个初始字符串,给出了怎样产生这个String的信息。
   
对象存储到什么地方?
    1、寄存器这是最快的存储区,因为它位于不同于其他存储区的地方----处理器内部。但是寄存器的数量是极其有限的,所以寄存器根据需求进行分配。你不能直接控制,也不能在程序中感觉到寄存器存在的任何迹象。
    2、堆栈。位于通过RAM(随机访问存储器)中,但通过堆栈指针可以从处理器那里获得直接支持。堆栈指针其向下移动,则分配新的内存;其向上移动,则释放那些内存。这是一种有效的分配存储方法,仅次于寄存器。创建程序时,Java系统必须知道存储在堆栈内所有项的生命周期,以便上下移动堆栈指针。这一约束限制了程序的灵活性,所以虽然某些Java数据存储于堆栈中----特别是对象引用,但是Java对象并不存储于其中。
    3、堆。一种通用的内存池(也位于RAM区),用于存放所有的Java对象。堆不同于堆栈的好处是:编译器不需要知道存储的数据在堆里存活多长时间。因此在堆里分配存储有很大的灵活性。当需要一个对象时,只需要用new写一行简单的代码,当执行这行代码时,会自动在堆里进行存储分配。当然为这种灵活性必须付出相应的代价:用堆进行存储分配和清理可能比用堆栈进行存储分配需要更多的时间。
    4、常量存储。常量值通常直接存放在程序代码内部,这样做是安全的,因为它们永远不会被改变。
    5、非RAM存储器。如果数据完全存活于程序之外,那么它可以不受程序的任何控制,在程序没有运行时也可以存在。其中两个基本的例子就是流对象和持久化对象。在流对象中,对象转化成字节流,通常被发送给另一台机器。在“持久化对象”中,对象被存放于磁盘上,因此,即使程序终止,它们仍可以保持自己的状态。这种存储方式的技巧在于:把对象转化成可以存放在其它媒介上的事物。在需要时,可恢复成常规的、基于RAM的对象。Java提供了对轻量级持久化的支持,而诸如JDBC和Hibernate这样的机制提供了更加复杂的对在数据库中存储和读取对象信息的运行。

Java中的基本类型
    在程序设计中经常用到一系列类型,它们需要特殊对待。可以把它们想你成“基本”类型。之所以特殊对待,是因为new将对象存储在“堆”里,故用new创建一个对象----特别是小的、简单的变量,往往不是很有效。因此对于这些类型,Java采取与C和C++相同的方法。也就是说,不用new来创建变量,而是创建一个并非是引用 的“自动”变量。这个变量直接存储“值”,并置于堆栈中,因此更加高效。

Java中的数组
    当创建一个数组对象时,实际上就是创建了一个引用数组,并且每个引用都会自动被初始化为一个特定值,该值拥有自己的关键字----null。一旦Java看到null,就知道这个引用还没有指向某个对象。

类中基本成员默认值
    当变量作为类的成员使用时,Java才确保给定其默认值,以确保那些是基本类型的成员变量得到初始化,防止产生程序错误。
    然而上述确保初始化的方法并不适用于“局部变量”(即非某个类的字段)。



分享到:
评论

相关推荐

    java编程思想学习笔记

    Java是一种面相对象的编程语言。计算机语言分成两种,第一种是面向机器结构的语言,构建数据模型是基于机器的结构。第二种是面向待解决问题结构的语言,构建数据模型是基于问题的结构。Java提供了更丰富的工具来描述...

    Java/JavaEE 学习笔记

    Java/JavaEE 学习笔记 作者在杰普学习时的学习笔记,是J2ee初学者必备手册,是大家学习J2EE开发的很好的参考笔记。 Java/JavaEE 学习笔记 内容目录: Unix 学习笔记..........7 一、Unix前言............7 二、...

    java学习笔记

    内容详细记录了java面向对象的编程思想,java类集,IO编程以及JDBG,还有工厂设计等模式,相信会对java初学者有很大帮助

    Java学习笔记(必看经典)

    Java学习笔记(必看经典) JAVA的面向对象编程--------课堂笔记 面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物皆对象) 所有的事物都有两个方面: 有什么(属性)...

    java从零基础到精通 学习笔记 (带批注) 完整版PDF

    Java常年占据热门编程语言排行榜第一,Java工程师综合就业排名第一,完成此路径能够应用SSM常用框架结合面向对象编程思想实现项目开发,完成Linux系统下的项目部署运行。将能胜任月薪8,000RMB--15,000RMB的职位,...

    记录所有有关java的学习笔记.rar

    JAVA是一种面向对象的程序设计语言,面向对象就是在计算机设计程序过程中,参照现实中事物,将事物的属性特征、行为特征抽象出来,描述成计算机事件的设计思想。 1.1 面向对象 面向对象编程的本质就是:以类的方式...

    c#学习笔记.txt

    c#学习笔记(1) 51099在线学习网发布 文章来源:网络收集 发布时间:2006-05-25 字体: [大 中 小] 51099在线学习网 http://www.51099.com 1, 结构(struct) 与 类(class) [attributes] [modifiers] struct ...

    struts项目学习笔记

    基于AOP(面向切面编程)思想的拦截器机制,更易扩展(不修改源代码的条件下,增强代码功能) 更强大、更易用输入校验功能 整合Ajax支持:json插件 Struts2的今生前世: 1.早期开发模型Servlet+JSP+JavaBean显得...

    J2EE学习笔记(J2ee初学者必备手册)

    Core Java学习笔记...........31 第一章 JAVA前言..31 第二章 标识符,关键字,类型........35 第三章 表达式与流控制....................41 第四章 数组.............50 第五章 对象和类(OO思想).........53 第...

    J2SE技术总结-Java学习精华教程-电子书

    本书内容非常全面,涵盖了《Java编程思想》、《Java学习笔记》等书籍所有知识要点,并结合作者自己经验总结而编写,内容丰富程度胜过一切书籍 众所周知,一般书籍为了销售需要,往往很少的知识点,却需要添加大量的...

    java学习记录.docx

    设计模式的基础学习,用面向对象的思想进行编程,为了程序的可维护、可复用、可扩展、 灵活性。学习设计模式是必要的。学习了设计模式之后,再看写的代码,就是不一样,一看就是不是菜鸟级别的代码。

    程序员面试刷题的书哪个好-thinkingInJava:学习《thinkinginjava》一书

    毫无疑问tij是java编程必读的一本书,深知此书晦涩难懂,需反复咀嚼,方可消化。 故记录一下阅读时的笔记,便于复习。 **编程最重要的就是思想** 第2章 一切都是对象 1.在使用任何引用前,都必须为其指定一个对象,...

    设计模式笔记(包含所有设计模式)个人总结提炼笔记

    这些模式可以帮助我们更灵活地创建对象,避免直接使用new关键字来创建对象,降低代码的耦合度。 2. 结构型模式:结构型模式关注对象之间的组合关系,包括适配器模式、桥接模式、组合模式、装饰器模式、外观模式、享...

    数据结构与算法:进度40%以C语言严谨描述数据结构与算法,同时以Go、JavaScript、C++等语言以简洁方式实现

    源码中并未采取面向接口、继承等思想来实现工具方法的复用,笔者认为不应该将编程语言的学习成本带入数据结构,笔者的意愿是:学习者拿到每个数据结构,都可以做到信手使用,而不是还要反复查询其继承、实现结构。

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 第一章 Oracle入门 一、 数据库概述 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前。简单来说是本身可视...

    asp.net知识库

    VS2005 ASP.NET本地化学习笔记&感受 在自定义Server Control中捆绑JS文件 Step by Step 深度解析Asp.Net2.0中的Callback机制 使用 Web 标准生成 ASP.NET 2.0 Web 站点 ASP.NET 2.0基于SQLSERVER 2005的aspnetdb.mdf...

    javascript针对cookie的基本操作实例详解

    下面我就将自己学习的用面向对象的思想对cookie进行处理的学习笔记整理一下,以飨读者。 cookie的常见操作分析: (1)设置cookie 包括了添加和修改功能,事实上如果原有cookie 名称已经存在,那么添加此cookie 就...

    程序员面试刷题的书哪个好-CppNote:笔记

    C++是一门博大精深的编程语言,不仅拥有继承于C语言的过程化程序设计思想,还包含有面对对象(OOP)的设计理念。强大而又复杂。相对来说,C++的学习成本较高,语言里面的坑较多。语言基础的学习路线如下: 1 语法...

Global site tag (gtag.js) - Google Analytics