一切都是对象

------------用引用操纵对象

》》在java中,一切都被视为对象。尽管一切都看作对象,但操纵的标识符实际上

      是对象的一个“引用”。

》》一种安全的做法:创建一个引用的同时便进行初始化。

------------必须由你创建所有对象

》》使用 new 关键字来创建新的对象。

》》数据存储到什么地方?

       ------(1)、寄存器。

                             这是最快的存储区,因为它位于不同于其他存储区的地方----处理器

                       内部。 但是寄存器的数量极其有限。所以寄存器根据需求进行分配。你

                       不能直接控制,也不能在程序中感觉到寄存器存在的任何迹象。

       ------(2)、堆栈。

                          位于通用 RAM (随机访问存储器)中,但通过堆栈指针可以从处理

                     器那里获得直接支持。堆栈指针若向下移动,则分配新的内存;若向上

                     移动,则释放那些内存。这是一种快速有效的分配存储方法,仅次于寄

                     存器。Java 系统必须知道存储在堆栈内所有项的确切生命周期,以便上

                     下移动堆栈指针。这一约束限制了程序的灵活性,所以虽然某些 java数

                     据存储于堆栈中----特别是对象的引用,但是java 的对象并不存储于其

                     中。

       ------(3)、堆。

                     一种通用的内存池(也位于RAM 区)用于存放所有的 Java 对象。堆不

                   同于堆栈的好处是:编译器不需要知道存储的数据在堆里存活多长时间。因

                   此,在堆里分配存储有很大的灵活性。当需要一个对象时,只需用 new

                   一行简单的代码,当执行这行代码时,会自动在堆里进行存储分配。当然,

                  为这种灵活性必须要付出相应的代价:用堆进行存储分配和清理可能比用

                  堆栈进行存储分配需要更多的时间。

       ------(4)、常量存储。

                        常量值通常直接存放在程序代码内部,这样做是安全的,因为它们永远不会

                 被改变。有时,在嵌入式系统中,常量本身会和其他部分隔离开,所以在这种情

                况下,可以选择将其存放在 ROM(只读存储器)中。

       ------(5)、非RAM 存储。

                        如果数据完全存活于程序之外,那么它可以不受程序的任何控制,在程序

                没有运行时也可以存在。其中的两个基本的例子是流对象持久化对象

                        *** 流对象: 在流对象中,对象转化成字节流,通常被发送给另一个机器。

                        *** 持久化对象:在持久化对象中,对象存放于磁盘上,因此,即使程序

                                              终止执行,它们仍然可以保持自己的状态。

                       这种存储方式的技巧在于:把对象转化成可以存放在其他媒介上的事物,

               在需要时,可恢复成常规的、基于RAM 的对象。Java 还提供了对轻量级持久化

              的支持,而诸如 JDBC Hibernate 这样的机制提供了更加复杂的对在数据库中

               存储和读取对象信息的支持。

》》基本类型:------->包装类

                  (1)、boolean ------>Boolean

                                char        ------> Character

                                byte        ------> Byte

                               short       ------> Short

                               int           -------> Integer

                               long       -------> Long

                               float       -------->Float

                              double   -------->Double

                              void        -------->Void

                (2)、基本类型的变量,都是“自动变量”不是“引用”变量。自动变量直接存储“值”

                             并置于堆栈,因此更加高效。

                (3)、所有数值类型都有正负号,所以不要去寻找无符号的数值类型。

                (4)、boolean 类型所占的存储空间大小没有明确指定,仅定义为能够取字面值

                            true 或 false 。

                (5)、基本类型具有的包装类,使得可以中创建一个非基本对象,用来表示对应

                            的基本类型。

               (6)、高精度数字:

                           *** Java 提供了两个用于计算的类:BigInteger 和 BigDecimal  。

***以上两个类提供的操作与对基本类型所能执行的操作相似。也就是说,
能作用于 int 或 float的操作,也同样能作用于 BigInteger 或 BigDecimal 。
只不过必须 以方法调用方式取代运算 符来实现。
*** BigInteger该类支持任何精度的整数。也就是说,在运算中,可以准确地表示
任何大小的整数值,而不 会丢失任何信息
*** BigDecimal支持任何精度的定点数,例如,可以用它进行精确的货币计算。
》》Java 中的数组:
****Java 确保数组会被初始化,而且不能在它的范围之外被访问。这种范围检查,
是以每个数组上少量的内存开销及运行时的下标检查为代价的。但由此换来的是
安全性和效率的提高,因此付出的代价是值得的(并且Java有时可以优化这些操
作)。
**** 当创建一个数组对象时, 实际上就是创建了一个引用数组,并且每个引用都
会自动被初始化为一个特定值,该值拥有自己的关键字 null 。一旦 java 看到
null ,就知道这个引用还没有指向某个对象。在使用任何引用前,必须为其指定
一个对象;如果试图使用一个还是 null 的引用,在运行时将会报错。
**** 还可以创建用来存放基本数据类型的数组。同样,编译器也能确保这种数组的
初始化,因为它会将这种数据所占的内存全部置为 零。
----------------------永远不需要销毁对象
》》作用域:
**** 作用域决定了在其内定义的变量名的可见性和生命周期。
**** 在作用域里定义的变量只可用于作用域结束之前。
**** 任何位于“//” 之后到行末的文字都是注释。
》》对象的作用域:
**** java 对象不具备和基本类型一样的生命周期。当用 new 创建一个 java 对象
时,它可以存活于作用域之外。
**** 由 new 创建的对象,只要你需要,就会一直保留下去。
**** java 有一个垃圾回收器,用来监视用 new 创建的所有对象,并辨别那些不会
再被利用的对象。随后,释放这些对象的内存空间,以便供其他新的对象使用。
也就是说,你根本不必担心内存回收的问题。你只需要创建对象,一旦不再需
要,它们就会自行消失。这样做就消除了这类编程问题(即“ 内存泄露”),这是
由于程序员忘记释放内存而产生的问题。
------------------------创建新的数据类型:类
**** class 关键字
》》字段和方法:
**** 字段可以是任何类型的对象,可以通过其引用与其进行通信;也可以是基本类型的
一种。
如果字段是某个对象的引用,那么必须初始化该引用,以便使其与一个实际的对象
(new 创建的)相关联。
**** 每个对象都有用来存储其字段的空间;普通字段不能在对象间共享。
****可以给字段赋值,具体的实现为:对象的引用. 对象内部的成员名称
**** 若类的某个成员是基本数据类型,即使没有进行初始化,java 也会确保它获得一个
默认值。但是,这些初始值对你的程序来说,可能是不正确的,甚至是不合法的,
所以最好明确地对变量进行初始化。
**** 基本数据类型的变量,是类的成员时,java才会确保给定其默认值;
如果基本数据类型的变量是在 局部(某个方法内部)中时,必须要给定其初始值,
否则在 编译时会返回一个错误。
----------------------方法、参数和返回值
**** Java 的方法决定了一个对象能够接收什么样的消息。方法的基本组成部分包括:
名称、参数、返回值和方法体。
**** 方法名参数列表唯一地标识出某个方法。
****Java 中的方法只能作为类的一部分来创建。方法只有通过对象才能被调用,且这个
对象必须能执行这个方法调用。
通过对象来调用方法的具体实现:对象名.方法名(参数)
**** 调用方法的行为通常被称为: 发送消息给对象
》》参数列表:
**** 方法的参数列表指定要传递给方法什么样的信息。
**** 在参数列表中必须指定每个所传递对象的类型及名字。像 Java 中任何传递对象的场合
一样,这里传递的实际上也是引用,并且引用的类型必须正确
****return 关键字
包括两方面,首先,它代表“已经做玩完,离开此方法”;其次,如果此方法产生一个值,
这个值要放在 return 语句后面。
**** 若返回类型是 void ,return 关键字的作用只是用来退出方法。因此,没有必要到方法结束
时才离开,可在任何地方返回。但如果返回类型不是 void ,那么无论在何处返回,编译器
都会强制返回一个正确类型的返回值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小达人Fighting

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值