`

09 12 03Java SE学习笔记

阅读更多

变量的初始值及其作用域(scope):

一般作为成员变量都有其初始值,在这不做讨论了。

Java语言中的变量同其他语言一样也有作用域我们来看一个实例:

class Number
{
int x=12;
/*这里只有x这一个变量*/
{
int y=96;
/*在这里有x y两个变量*/
}
/*这里只有x这一个变量,y变量的声明无效*/
}
作为在作用域里定义的一个变量,它只有在那个作用域结束之前才

可使用.

<<----对面对对象的更深层的理解---->>
与其他面对对象语言相比Java语言是一种更纯粹的面向对象语言

在Java中任何东西都看作对象,但保留一个标识符来指向对象,这

个标识符就叫做"句柄"(handle)亦称作"引用"或"指针"[本人不提

倡用"指针"这个名词,这样容易产生混淆。因为Java中的指针不

提供给代码编写者使用,其指针和其他语言不太一样。但是应该知

道Java中是有指针的,把指针交给jdk来帮我们使用,这样不容易出

现像c++语言的错误]

Java中经常用一个句柄来操作一个对象.可将这一
情形想象成用遥控板(句柄)操纵电视机(对象)。只要握住这个

遥控板,就相当于掌握了与电视机连接的
通道。但一旦需要“换频道”或者“关小声音”,我们实际操纵的

是遥控板(句柄),再由遥控板自己操纵
电视机(对象)。如果要在房间里四处走走,并想保持对电视机的

控制,那么手上拿着的是遥控板,而非电
视机。
此外,即使没有电视机,遥控板亦可独立存在。也就是说,只是由

于拥有一个句柄,并不表示必须有一个对
象同它连接。

eg:Number n1;这里只是句柄,并不是对象。若此时用它来操作

其他事物会产生错误(编译期错误),因为此时该句柄没有和任何

东西连接(即没有"电视机")

new Number();创建对象,但对象没有附着在句柄上(这样以后操作

这个对象会有麻烦,造成创建一次无法二次使用)

n1=new Number();把对象赋给一个句柄.此时就可以用句柄来操作

对象了。

---new 的意思是:“把我变成这些对象的一种新类型”(所以我

们也称句柄为对象变量)

当然Java中并非所有类型都有编程人员自己来创建(但自行创建有

用的类是Java程序设计的关键),Java中也提供了一些现成类型

(如

String)[我们定义一个类就是创建了一种新的数据类型]

对象数据保存到什么地方:
(1) 寄存器。这是最快的保存区域,因为它位于和其他所有保存

方式不同的地方:处理器内部。然而,寄存
器的数量十分有限,所以寄存器是根据需要由编译器分配。我们对

此没有直接的控制权,也不可能在自己的程序里找到寄存器存在的

任何踪迹。


(2) 堆栈。驻留于常规RAM(随机访问存储器)区域,但可通过它

的“堆栈指针”获得处理的直接支持。堆
栈指针若向下移,会创建新的内存;若向上移,则会释放那些内存

。这是一种特别快、特别有效的数据保存
方式,仅次于寄存器。创建程序时,Java 编译器必须准确地知道

堆栈内保存的所有数据的“长度”以及“存
在时间”。这是由于它必须生成相应的代码,以便向上和向下移动

指针。这一限制无疑影响了程序的灵活
性,所以尽管有些Java 数据要保存在堆栈里——特别是对象句柄

,但Java 对象并不放到其中。


(3) 堆。一种常规用途的内存池(也在RAM 区域),其中保存了

Java 对象。和堆栈不同,“内存堆”或
“堆”(Heap)最吸引人的地方在于编译器不必知道要从堆里分

配多少存储空间,也不必知道存储的数据要
在堆里停留多长的时间。因此,用堆保存数据时会得到更大的灵活

性。要求创建一个对象时,只需用new 命
令编制相关的代码即可。执行这些代码时,会在堆里自动进行数据

的保存。当然,为达到这种灵活性,必然
会付出一定的代价:在堆里分配存储空间时会花掉更长的时间!

(4) 静态存储。这儿的“静态”(Static)是指“位于固定位置

”(尽管也在RAM 里)。程序运行期间,静
态存储的数据将随时等候调用。可用static 关键字指出一个对象

的特定元素是静态的。但Java 对象本身永
远都不会置入静态存储空间。

(5) 常数存储。常数值通常直接置于程序代码内部。这样做是安

全的,因为它们永远都不会改变。有的常数
需要严格地保护,所以可考虑将它们置入只读存储器(ROM)。

(6) 非RAM 存储。若数据完全独立于一个程序之外,则程序不运

行时仍可存在,并在程序的控制范围之外。
其中两个最主要的例子便是“流式对象”和“固定对象”。对于流

式对象,对象会变成字节流,通常会发给
另一台机器。而对于固定对象,对象保存在磁盘中。即使程序中止

运行,它们仍可保持自己的状态不变。对
于这些类型的数据存储,一个特别有用的技巧就是它们能存在于其

他媒体中。一旦需要,甚至能将它们恢复
成普通的、基于RAM 的对象。Java 1.1 提供了对Lightweight

persistence 的支持。未来的版本甚至可能提
供更完整的方案。

我们说Java是纯面向对象的,那么在Java程序中有没有不是对象

的呢?
答案是肯定的,Java中提供了8中基本类型(都有其封装

类型),这些类型的大小不能随便更改,这也是Java程序由很强移

植能力的一个原因。

综上所述我们可以看到用Java语言设计来的程序是相当健壮的。

----本篇笔记中有的摘自《Thinking in Java》,因为我觉得里面

的经典实例或解说是不能用通俗语言来代替的

分享到:
评论

相关推荐

    java se学习笔记

    【Java SE学习笔记】是针对Java初学者的一份详实的学习资源,主要涵盖了Java的基础知识、进阶概念以及编程实践。这份笔记以HTML格式呈现,方便读者在线阅读或下载后离线浏览。以下是对这份笔记可能包含的重要知识点...

    JAVA SE学习笔记

    **JAVA SE学习笔记** 在Java SE(标准版)的学习中,我们主要关注的是Java编程语言的基础和核心特性,包括但不限于语法、数据类型、控制结构、类与对象、接口、异常处理、多线程、集合框架、输入/输出(I/O)系统、...

    精品JAVA SE 学习笔记

    【Java SE学习笔记详解】 Java SE(Standard Edition)是Java平台的核心部分,它为开发桌面应用、服务器端应用以及中间件提供了基础。本笔记主要基于MLDN(Microsoft Learning Dynamic Network)李兴华老师的2009年...

    Java JDK7学习笔记-光盘

    《Java JDK7学习笔记》针对java se 7新功能全面改版,无论是章节架构或范例程序代码,都做了重新编写与全面翻新。并详细介绍了jvm、jre、java se api、jdk与ide之间的对照关系。必要时从java se api的源代码分析,...

    java se个人学习笔记

    这份"java se个人学习笔记"显然是一份对Java SE基础知识的详细记录,由一位初学者整理,旨在帮助其他初学者理解这个强大的编程语言。笔记中可能涵盖了以下几个关键知识点: 1. **基础语法**:Java的基本数据类型、...

    java李兴华学习笔记之JAVA_SE基础部分

    收集的java李兴华老师的课件笔记。感觉还不错,适合回顾和新手补习。

    Java学习笔记.pdf

    本资源提供了一个系统的 Java 学习笔记,涵盖了 Java 基础、面向对象、Java SE 核心等方面的知识,旨在帮助初学者快速掌握 Java 开发的基本概念和思路。 1. Java 基础 Java 是一种高级的编程语言,它具有平台独立...

    非常详细javaSE学习笔记.rar

    Java SE(标准版)是Java开发平台的核心部分,它提供了编写、运行和部署桌面应用程序所需的类库和工具。这份“非常详细JavaSE学习...无论你是初学者还是有经验的开发者,这份详尽的Java SE学习笔记都是一个宝贵的资源。

    Java学习笔记7.0

    《Java JDK6学习笔记》是作者良葛格本人近几年来学习Java的心得笔记,结构按照作者的学习脉络依次展开,从什么是Java、如何配置Java开发环境、基本的Java语法到程序流程控制、管理类文件、异常处理、枚举类型、泛型...

    Java+JDK+7学习笔记_林信良编著.pdf

    《Java JDK7学习笔记》针对java se 7新功能全面改版,无论是章节架构或范例程序代码,都做了重新编写与全面翻新。并详细介绍了jvm、jre、java se api、jdk与ide之间的对照关系。必要时从java se api的源代码分析,...

    Java学习资料 java se JAVA基础学习笔记和演示案例代码项目

    "Java学习资料"这个压缩包显然包含了一些关于Java SE(标准版)的基础学习资源,包括笔记和实际的演示案例代码项目。Java SE是Java的核心部分,主要用于桌面应用和服务器端开发。 在Java的学习过程中,笔记通常会...

    java学习笔记

    java学习笔记大全:java内容介绍 java编程可以分成三个方向: 1、java se (j2se)桌面开发 java中的基础中的基础 2、java ee (j2ee)web开发 3、java me (j2me)手机开发 java se课程介绍 java面向对象编程(基础) java...

    JAVA SE 归档笔记

    【JAVA SE 归档笔记】是一份由多位IT行业高手共同编撰的珍贵资料,旨在为初学者提供学习指引,并作为经验丰富的开发者们的参考手册。这份笔记深入浅出地涵盖了JAVA SE(Java Standard Edition)的核心知识点,对于...

    java jdk 学习笔记

    java jdk 学习笔记java jdk 学习笔记java jdk 学习笔记

    JAVA-SE学习笔记

    Java SE(标准版)是Java编程语言的核心部分,它提供了基础的类库和API,用于构建桌面应用程序。本文主要探讨了Java SE中的几个关键概念,包括类与对象、方法、继承、构造方法、多态性以及抽象类。 1. 类与对象:在...

    张龙 java se课程笔记

    1. **Java环境搭建**:首先,学习Java SE需要安装Java Development Kit (JDK),设置好环境变量`JAVA_HOME`、`PATH`和`CLASSPATH`,以便于编译和运行Java程序。 2. **Java语法基础**:Java是一种面向对象的语言,其...

    Java_se基础毕向东老师全程笔记

    传智播客Java_SE基础毕向东老师全程笔记.pdf

    Java 学习笔记

    "Java 学习笔记" Java 是一种面向对象的程序语言,具有跨平台的可能性。Java 的特性包括简单、面向对象、网络、解译、坚固、安全、可携和高效能。Java 平台包括 Java SE、Java EE 和 Java ME, Java SE 是 Java ...

    Java学习笔记

    ●本书是作者多年来教学实践经验的总结,汇集了学员在学习课程或认证考试中遇到的概念、操作、应用等问题及解决方案, ●针对Java SE 8新功能全面改版,无论是章节架构或范例程序代码,都做了重新编写与全面翻新, ●...

    张龙 Java SE 课程笔记下载

    张龙老师的Java SE课程笔记是学习这一关键领域的宝贵资源,旨在帮助学员深入理解Java编程语言的基本概念和技术。 笔记内容可能涵盖了以下几个核心知识点: 1. **Java语言基础**:包括基本数据类型、变量、运算符、...

Global site tag (gtag.js) - Google Analytics