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


    前言

    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;
    

    Java中的数组

    Java确保数组被初始化,且不能在范围之外被访问(以少量的内存开销和运行时下标检查为代价)

    • 创建对象数组---->创建引用数组,自动初始化为null
    • 创建基本数据---->初始化为0(boolean为false)

    永远不要销毁对象

    作用域

    作用域由花括号的位置决定。

    对象的作用域

    new 创建一个对象时,对象可以存活在在作用域之外。

    {
       String s = new String("abc");
    }//作用域结束的地方
    

    String引用s在作用域终点消失,s指向的String对象仍继续占据内存空间。

    在Java中,由new创建的对象,只要你需要,就会一直保留下去。并且有一个垃圾回收器,
    用来监视new创建的所有对象,并辨别出那些不会再被引用的对象。

    随后释放这些对象的内存空间,给其他新的对象使用。

  • 相关阅读:
    如何查看linux系统是32位还是64位
    netstat 的10个基本用法
    linux入门教程(十) 文档的压缩与打包
    linux入门教程(九) 文本编辑工具vim
    linux入门教程(八) Linux磁盘管理
    linux入门教程(七) linux系统用户以及用户组管理
    CentOS5下配置JDK1.6+TOMCAT6
    【Nodejs】外研社一年级起各年级英语音频下载(缺456年级上)
    【Nodejs】外研社一年级起三年级下MP3下载爬虫1.00
    【Python】torrentParser1.03
  • 原文地址:https://www.cnblogs.com/JohnTsai/p/4606365.html
Copyright © 2020-2023  润新知