您的位置:首页 > 编程语言 > Java开发

《java编程思想》_第二章_一切都是对象

2018-03-20 11:37 393 查看

一、用引用操作对象

    在java中,一切都被视为对象,对于对象的操纵即是引用。如 String testStr ,这是创建的一个String的引用,注意:此处创建的只是引用,并不是对象,如果此时对testStr进行操作,会发生错误。因此,通常来说,创建引用的同时便进行初始化,例如代码中常用的 String testStr = "abcd"。

二、必须由你创建所有对象

    通常使用new操作符来创建对象,new关键字的意思可以理解为“给我一个新对象”。

    1.存储到什么地方

        程序运行时,有5个不同的地方可以存储数据:
 位置优点缺点
寄存器处理器内部速度快数量极其有限,不能直接控制
堆栈RAM区快速有效,仅次于寄存器灵活性受到限制
RAM区灵活性较好(存放所有的java对象)
进行存储分配和清理需要更多时间
常量存储程序代码内部,ROM安全不能被改变
非RAM存储完全存活于程序之外不受程序控制 
        RAM:读写存储器,可对其中的任一存储单元进行读或写操作,计算机关闭电源后其内的信息将不在保存,再次开机需要重新装入,通常用来存放操作系统,各种正在运行的软件、输入和输出数据、中间结果及与外存交换信息等,我们常说的内存主要是指RAM。
        ROM:只读存储器,即只能读出信息,不能写入信息,计算机关闭电源后其内的信息仍旧保存,一般用它存储固定的系统软件和字库等

    2.基本类型

        因为java的new关键字将对象存放在堆里,因此对于一些特别小,特别简单的对象来说,效率不高。因此这些类型,java采取与C语言相同的方法,创建的是一个并非是引用的“自动”变量,直接存储“值”并置于堆栈中,更加高效。同时,基本类型规定了所占存储空间的大小,这种特性让java语言更具可移植性。

        基本类型:boolean,char,byte,short,int,long,float,double,void(基本类型有对应的包装器类型,使用包装器类型会在堆中去创建非基本对象)

        高精度数字:BigInteger,BigDecimal(属于包装器的范畴,但是没有对应的基本类型,运算速度会比较慢,但是精度高)

    3.java中的数组

        java确保数组会被初始化,而且不能在它的范围之外被访问。这种范围检查,是以每个数组上少量的内存开销及运行时的下标检查未代价的。

        对于数组的引用,每个引用都会自动初始化一个特定值null,表示还没有被指向任何对象,在使用该应用之前,必须为其指定一个对象。因此,这种错误可以避免。

三、永远不需要销毁对象

    1.作用域

        在作用域里定义的变量只可用于作用域结束之前,作用域由花括号的位置决定。

    2.对象的作用域

        java对象不具备和基本类型一样的生命周期,用new创建对象时,它可以存活于对象之外,只要需要,可以一直保存。
{
String s = new String("abcd");
}//作用域终点,引用s便消失了,然而,s指向的String对象仍然占据内存空间。
        为防止这些对象填满内存空间产生内存泄漏的问题,java有一个垃圾回收器,用来监视用new创建的所有对象,并辨别那些不会再被引用的对象,释放这些对象的内存空间。(java虚拟机采用自适应的垃圾回收技术,停止-复制:先暂停程序,将所有存活的对象复制到另一个堆中,没有被复制的即为垃圾;标记-清扫:遍历所有引用,进而找出所有存活的对象,当没有引用时,变给对象标记,这个过程中不会有任何清理操作。在java虚拟机运行过程中,根据堆空间的对象情况,在以上两种状态切换,以达到垃圾回收。)

四、创建新的数据类型:类

    类是一种数据类型。

    1.字段和方法

        字段可以是任何类型的对象,可以通过其引用与其进行通信。在类中的字段如果是基本类型,即使没有进行初始化,java也会确保它获得一个默认值,但这不适用于局部变量,如果在某个方法中定义 int x; 那么变量x得到的可能是任意值,因此要养成良好的编程习惯,对变量初始化。

五、方法,参数和返回值

   方法: java中的方法只能作为类的一部分来创建,方法只有通过对象才能被调用,且这个对象必须能执行这个方法的调用。如 a.f() 这种调用方法的行为,通常被称为发送消息给对象。f() 是消息,a 是对象。
    参数:方法的参数列表指定要传递怎样的信息给方法,这里的传递实际上也是引用,并且引用的类型必须正确,参数设定的类型与实际传递的类型必须一致。

    返回值:若返回类型是void, return关键字的作用只是用来退出方法,如果不是void,那么无论在任何地方返回,编译器都会强制返回一个正确类型的返回值。

六、构建一个java程序

    1.static关键字

        当声明一个事物是static时,就意味着这个域或方法不会与包含它的那个类的任何实例对象关联在一起:即使从未创建某个类的任何对象,也可以调用其static方法和访问static域;即使创建多个对象,其static域指向同一存储空间。

        引用静态变量和静态方法有两种方式:可以通过一个对象去定位,也可以直接通过类名引用。(首选使用类名引用)

七、第一个java程序

public static void main(String[] args){
//System.getProperties().list(System.out);
System.out.println(System.getProperty("user.name"));
}//才发现这样可以打印出电脑的用户名
        
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: