第2章 一切都是对象

2一切都是对象

      对象的定义(类型)、创建、存储、操纵、销毁、组成,引用(基本变量名)的初始化    

 

2.1 用引用操纵对象

      ·编程语言操纵内存中元素的方式:

           ·C、C++:基于特殊语法的间接表示—指针

           ·Java:操纵对象引用 ->对象

                 ·创建引用

                 ·创建对象

                 ·关联:“=”

                 ·String类型:用带引号的文本初始化

                       ·对引用的初始化

 

2.2 必须由你创建所有对象

      ·存储位置

           ·寄存器:最快;CPU内;数量有限;按需分配;无法直接控制;觉察不到存在(C、C++允许向编译    器建议寄存器的分配方式);【谁在操控寄存器?】

           ·堆栈:速度仅次于寄存器;RAM中;堆栈指针控制;

                 ·堆栈指针:{向下移动:分配内存;向上移动:释放内存}

                 ·灵活受限:统必须知道存储在堆栈内所有项的确切生命周期,以便上下移动指针;

                 ·{对象引用:堆栈;new出的对象:堆}

           ·堆:比栈慢;RAM中;用于存放所有的Java对象

                 ·和堆栈相比:

                      ·好处:编译器不需要知道存储的数据在堆里存活多长时间,更灵活

                      ·坏处:进行存储分配和清理比堆栈要更多时间

           ·常量存储:通常放在程序代码内,安全,永不改变

                 ·嵌入式系统:同代码分离,存放在ROM中

           ·非RAM存储流对象 & 持久化对象——完全存活于程序之外;不受程序的    任何控制

                 ·流对象(序列化 - 轻量级持久化):对象转化成字节流,通常被发送给另一台机器

                 ·持久化对象:存在磁盘上;需要时可恢复成基于RAM的对象

                      ·严格持久化:JDBC、Hibernate机制

 

      ·特例:基本类型:并非是引用的“自动”变量,直接存“值”,堆栈中

           ·占据存储空间的大小不变

           ·boolean类型~存储空间(大小):没有明确指定,仅定义为能够取字面量true或false

           ·void是基本类型(返回类型)但没有值,有包装器类型

           ·什么是拆箱比较

           ·BigInteger & BigDecimal:大体上属于“包装器类”,但没有对应的基本类型

                 ·方法调用方式 而非运算符方式

                      ·速度换取了精度

 

      ·Java中的数组

           ·C、C++中的数组 = 内存块:

                 ·问题:

                      1.可能在初始化前被使用(内存);

                      2.访问自身内存块之外的数组

           ·Java:

                 ·确保数组会被初始化后才能使用——每个数组上少量的内存开销

                 ·不能在它的范围之外被访问——运行时的下标检查

                 ·Java有时可以优化以上操作

                 ·Java KO. C、C++:更安全,效率更高

           ·Java编译器初始化数组:

                 ·引用数组:null

                 ·基本数据类型数组:0

 

2.3 永远不需要销毁对象

      ·作用域决定变量名的可见性、生命周期

      ·(作用域内的)代码(一般)存在于堆栈中

      ·Java对象:和基本类型生命周期不同——new出来的对象在堆中,可以存活于作用域之外

           ·存活于作用域之外:也就是说,作用域内的东西被清理后,垃圾回收器会在任意时间回收它

      ·Java垃圾回收器监视new创建的对象,辨别不会再被引用的对象,随后【什么时候?】释放这些对象的内存空间~消除了“内存泄漏”

           ·不用new创建对象的方式:

                 ·Class或Constructor类的newInstance()方法

                 ·clone()

                 ·反序列化

           ·那么问题来了,这些对象怎么清理?finalize()?

 

2.4 创建新的数据类型:类

      ·类[字段不是局部变量,方法]

      ·基本类型成员默认值

 

2.5 方法、参数和返回值

      ·方法[名称,参数,返回值,方法体]

           ·方法签名[方法名,参数列表]

           ·发送消息给对象 = 调用方法的行为

      ·参数列表:传递对象时,传递的是对象引用或基本类型值

           ·字符串中每个字符(2字节):来支持Unicode字符集

 

2.6 构建一个Java程序

      ·名字(可见性):反转域名

      ·运用其他构件:使用import定位文件

      ·static关键字:

           ·为某特定域分配单一存储空间

           ·创建不与对象关联的方法

 

2.7 你的第一个Java程序

      ·编译,运行

 

2.8 注释和嵌入式文档

      ·注释文档

           ·javadoc:提取注释的工具

                 ·语法:

                       ·javadoc命令只能在"/**----*/"中出现

                       ·使用方式:

                            1.嵌入HTML

                            2.使用“文档标签”:以“@”开头

                       ·三类注释文档位置:类、域、方法之

                       ·只有public、protected成员的文档注释才能被输出(可用-private进行标记输出private注释)

                       ·不要嵌入html标题标签:如<h1>或<hr>

           ·提取注释:javadoc

 

2.9编码风格

      ·驼峰风格

转载于:https://www.cnblogs.com/InformationGod/p/8510714.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/267513.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Lucene学习笔记(1)

Lucene学习笔记可以搜索文本文件&#xff0c;理论上可以搜索任何类型的数据。只要先把数据转化为文本&#xff0c;就可以对数据进行索引和搜索。使用了反向索引的机制&#xff0c;维护一个词/短语的表&#xff0c;对于每个词和短语都有一个链表描述有哪些文档包含这个词和短语。…

android 录音原始文件_5分钟短文 | Android证书生成,签名,验证,虽然难,但学一次就够了!...

引言从Android演进开始&#xff0c;APK签名就已经成为Android的一部分&#xff0c;并且android要求所有Apks都必须先签名&#xff0c;然后才能将其安装在设备上。关于如何生成密钥以及如何签名的文章很多。一个Apk&#xff0c;但我们将从安全角度进行研究。在对Apk文件进行反编…

WCF跨域 这可能是由于试图以跨域方式访问服务而又没有正确的跨域策略,或策略不适用于 SOAP...

尝试向 URI“http://localhost:8001/AccountService.svc”发出请求时出错。这可能是由于试图以跨域方式访问服务而又没有正确的跨域策略&#xff0c;或策略不适用于 SOAP 服务。您可能需要与该服务的所有者联系&#xff0c;以发布跨域策略文件并确保该文件允许发送 SOAP 相关的…

【XSY2472】string KMP 期望DP

题目大意 给定一个由且仅由字符H&#xff0c;T构成的字符串\(S\)。 ​  给定一个最初为空的字符串\(T\) &#xff0c;每次随机地在\(T\)的末尾添加H或者T。 问当\(S\)为\(T\)的后缀时&#xff0c;在末尾添加字符的期望次数。 对\({10}^97\)取模 题解 设\(f_i\)为从\(i-1\)匹配…

go语言api源码中文版_Go语言学习——sync.map源码剖析

1.简介 最近看了下Sync包&#xff0c;详读了sync.map源码&#xff0c;感觉源码实现还是比较巧妙的&#xff0c;有不少可以学习的地方&#xff1b;在讲源码前&#xff0c;先看下sync.map的"历史"&#xff0c;从网上搜资料&#xff0c;sync.map是Go语言在1.9版本才引入…

JDK自带的log-java.util.logging

配置: 默认情况下&#xff0c;每个 FileHandler 都是使用以下 LogManager 配置属性执行初始化的。如果没有定义属性&#xff08;或者属性具有非法值&#xff09;&#xff0c;则使用指定的默认值。 java.util.logging.FileHandler.level 为 Handler 指定默认的级别&#xff08;默…

js实现添加className

obj.className ; //设置为新的obj.className ;//在原来的后面加这个obj.classList.add(" "); //与第一个等价 <style>#side_btn {width: 15%;left: 0;bottom: 5%;}#side_nav {width: 25%;left: -34%;top: 15%;transition: left 1s;text-align: center;}.nav_…

怎么成为日上会员直邮_18个日上直邮问题汇总,可以参考一下哦

前段时间发的日上直邮的微头条和视频&#xff0c;很多朋友遇到一些不明白的地方&#xff0c;我把问题汇总了一下&#xff0c;统一回答一下哦其实因为疫情&#xff0c;很多免税店都在做活动&#xff0c;活动方式不太一样&#xff0c;有好多种&#xff0c;我跟大家分享的只是其中…

IT网址大全

图像处理 [素材]   在线作图[素材]   思缘设计论坛[素材]   ps联盟[素材]   ps学习网[素材]   ps教程论坛[素材]   ps爱好者[素材]   46ps[素材]   勤学网[素材]   艺术字体转换器[模板]   视达千图[模板]   千图网[模板]   千库网[模板]   包图网[模板]   摄图网…

python中sort返回值_Python函数你真的都学会了吗?来看看这篇Python高阶函数!

二、高阶函数高级函数, 英文叫 Higher-order Function.那么什么是高阶函数呢?在说明什么是高阶函数之前, 我们需要对函数再做进一步的理解!2.1 函数的本质函数的本质是什么&#xff1f;函数和函数名到底是一种什么关系&#xff1f;在python中&#xff0c;一切皆对象&#xff0…

拿什么衡量能力?!

众所周知&#xff0c;计算机技术属于高科技的范畴&#xff0c;但不能说所有和计算机沾边的东西都可以称之为高科技&#xff0c;笔者前几天经历了一次面试&#xff0c;也许对于有的朋友来说&#xff0c;这样的经历司空见惯&#xff0c;但是我还是想一吐为快。 本人不才&#xff…

基于数据库的事务消息解决分布式事务方案

转载请注明出处&#xff1a;http://www.cnblogs.com/lizo/p/8516502.html 概述 当单库已不能支撑当前业务的时候&#xff0c;我们往往都考虑进行分库&#xff08;横向拆分或者纵向拆分&#xff09;。但分库有个无法回避的问题&#xff0c;就是事务问题。网上有很多分布式事务解…

websocket 发送给前端一个对象_前端WebSocket封装

场景1: 只有单个长链接&#xff0c;不要求保活class WebSocketClass {constructor() {this.instance null;this.connect();}static getInstance() {if (!this.instance) {this.instance new WebSocketClass();}return this.instance;}connect() {this.ws new WebSocket(ws:/…

POJ1683 Puzzlestan ——Floyd传递闭包+Dfs

好久没写Dfs了&#xff0c;拿来练手。 WA了一次&#xff0c;没有判断中间的情况…… 解法&#xff1a;先用Floyd传递闭包处理哪些点一定要在一起、哪些点一定不能在一起&#xff0c;六重循环。 然后深搜&#xff0c;res[i][j]表示1,i这个物品在j这一行的匹配物品列编号。 没有最…

中service层的作用_浅析Java中dto、dao、service、controller的四层结构

目前我所在的项目组采用的是SpringBoot框架&#xff0c;前端使用BootStrapjQuery。SpringBoot是BS开发框架之一&#xff0c;不用单独开启tomcat服务器&#xff0c;目前比较流行&#xff0c;一般开发大型项目时会将所有的功能细分为许多小模块&#xff0c;每个模块都有dto、dao、…

SCCM 2007系列教程之六使用组策略实现SCCM客户端

SCCM 2007 安装光盘上提供了名为 ConfigMgr2007Installation.adm 的组策略管理模板&#xff0c;可用于配置客户端计算机的安装属性。1、使用 Windows 组策略对象编辑器等编辑器来将管理模板 ConfigMgr2007Installation.adm 导入新的或现有的组策略对象。&#xff08;此文件可以…

强化学习

机器学习算法完整版见fenghaootong-github 强化学习原理&#xff08;RL&#xff09; RL与有监督学习、无监督学习的比较&#xff1a; 有监督的学习是从一个已经标记的训练集中进行学习&#xff0c;训练集中每一个样本的特征可以视为是对该situation的描述&#xff0c;而其labe…

python的tool模块_barktools-包含各种有用的python模块和脚本的包-Oscar Bark Modules Scripts...

作者:Oscar Bark### 作者邮箱:kurshid.ognianovprotonmail.com### 首页:https://github.com/BarkenBark/python-tools### 文档:None### 下载链接# barktoolsA collection of utilities I find useful. Yes.Modulesbase_utilsA collection of modules which only depend on the …

非常不错的Nodejs工具:http-console

http-console是一个用nodejs写的类似于CURL的第三方库文件. 可以很直观的发送http请求以及查看返回结果. 安装需求: 1, 安装nodejs 2, 安装npm 3, npm install http-console 我做了个简单的例子: 启动: http-console 127.0.0.1:3000 1, HTTP GET: http://127.0.0.1:3000/&g…

bzoj1058: [ZJOI2007]报表统计

哈哈set卡时过了。 set求前驱的方法&#xff1a;*--b.lower_bound(x) &#xff08;想想写了splay的肉老师就很愉悦啊&#xff09; 弄两个set&#xff0c;一个记录的是位置的值&#xff0c;一个是差值&#xff0c;MIN_SORT_GAP就很简单啊&#xff0c;插入的时候找前驱后继&#…