第二章 一切都是对象

向后兼容(Backward Compatbility)和向前兼容(Forward Compability)区别:

向后兼容( Backwards compatibility ) windows10系统能兼容运行Windows 3.1开发的程序 ,win10具有向后兼容性
向前兼容( Forward compatibility ) Windows 3.1能兼容运行Windows 10开发的程序 ,Windows 3.1具有向前兼容性

2.1用引用操纵对象

String a;
这里仅仅是创建了一个引用,

String a=”abc”;
String a=new String(“abc”);的存储位置?以下代码验证下

/**
 * Created by leon on 17-12-12.
 */
public class TestObject {
    String a = "abc";
    String b = new String("abc");
    public void testAddress() {
        System.out.println(a == b ? "true" : "false");
    }
    public static void main(String[] args) {
        String a = "abc";
        String b = "abc";
        System.out.println(a == b ? "true" : "false");
        TestObject testObject = new TestObject();
        testObject.testAddress();
    }
}
//output-------
true
false

2.2.1 存到什么地方

1.寄存器:

这是最快的存储区,因为他位于cpu内部,但是数量有限,通常是按需分配.java不允许直接控制,但是c/c++可以允许向编译器建议寄存器的分配方式.

2.栈

位于RAM中,通过栈指针从cpu那里获得直接支持.快速有效的存储方法,仅此于寄存器.java的对象引用存储于栈中.

3.堆

也处于RAM中.好处是非常灵活,可以往堆里面存储任何对象.但是缺点是:存储分配和清理需要比栈更耗时.

4.常量存储

通常直接存放在代码内部.在嵌入式系统中可以将常量和其他的部分分离开来,可以存储到ROM里面,因为是只读的(这里有个例子,字符串池,字面常量字符串和具有字符串值的常量表达式都是自动内存限定,存储到特殊的静态存储区).

5.非RAM存储

如果数据完全存活于程序之外,不受任何限制,在程序没有生成时也能存在.有例子(流对象 和 持久化对象)

2.2.2基本类型

用于处理基本类型的原因是,有些类型数据,因为特别小,特别简单需要特殊对待,因为如果把他们用new创建对象放在heap中,不是非常高效.基本类型,不用new创建对象,而是创建一个不是引用的”自动”变量,这些变量直接存储"值",存储与栈中.java所有数值类型都是有符合数.

image.png

boolean : 占存储空间的大小没有确定,仅定义字面量为 true 或false.
String: 不是基本类型,是引用类型.对于引用类型变量,仅仅是指向堆区中的某个实例的指针(引用).
java5以后可以进行对包装类型和基本类型之间的自动装包,解包.例如
Character cha=’c’;
char c=cha;
高精度数字: BigInteger 和 BigDecimal 基本属于包装器类型,但是没有基本类型.BigInteger 可以表示任何大小的整数值,BigDecimal可以表示任何精度的定
点数.区分下浮点数和定点数.定点数是指小数点的位置是固定不变的,通常分为定点小数和定点整数,用之前先规定好小数点的位置.浮点数的小数点位置是变化的,用阶码和尾数开表示,不用惧怕它的表示形式,它也是一串亲切0、1序列

2.3.2 对象的作用域

对象不具有基本类型的作用域生命周期,当new 一个对象的时候,他可以存活与作用域之外.
例如:虽然引用outOfScope在作用域的终点就消失,但是outOfScope指向的对象还会继续占用内存空间,他会等垃圾回收器回收的时候,进行回收.

private void objScope(){
    String outOfScope=new String ("出了函数不会马上释放");
}

2.4 创建新的数据类型:类

2.4.1字段和方法:

成员变量的初始值是系统指定的,但是局部变量的初始值可能是任意的,而不会自动初始话.
例如:

private void objScope(){
    int x;//这里系统不会进行初始0 ,有可能是任意值
}

接下来的代码如果需要对x进行引用,必须先赋值,否则编译会不通过

2.6.3 static 关键字

引入static关键字的原因:
 1.只想为某特定区域分配单一的存储空间,而不去考虑他创建多少个对象,甚至压根就不需要创建对象.
2.希望某个方法不与包含他的任何对象关联在一起.也就是说,即使没有创建对象,也能调用这个方法.

public class StaticTest {
    static String i = new String("474747");
    public static void main(String[] args) {
        StaticTest test1 = new StaticTest();
        StaticTest test2 = new StaticTest();
        System.out.print(test1.i == test2.i ? "同一个存储空间" : "不同存储空间");
    }
}

//输出结果...
同一个存储空间

2.8注释和嵌入式文档

javadoc: 他是便于提取注释的工具,生成的文档是html格式.如果想对javadoc处理过的信息执行特殊操作,可以编写自己的”doclets”的javadoc处理器来实现.

2.8.2 语法

javadoc 有两种格式: 1.嵌入html 2. 使用”文档标签”.独立”文档标签”是由@开头,在注释行的最前端,”行内文档标签”可以出现注释行任何地方,以@开头,需要在花括号内{@xxx}
javadoc默认 只能为 public,protected成员进行文档注释,private 和 缺省修饰符的包间访问成员默认会忽略,但是可以采用 -private 标记,以便让 private 成员注释也包括在内.

2.8.3 嵌入式HTML

所有类型的注释文档,类,域,方法都支持嵌入式HTML.

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,776评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,527评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,361评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,430评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,511评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,544评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,561评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,315评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,763评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,070评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,235评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,911评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,554评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,173评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,424评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,106评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,103评论 2 352

推荐阅读更多精彩内容

  • Java 中几乎一切都是对象。 2.1 用引用操纵对象 对象(这里理解为变量)可以怎样操纵? 直接操纵。 间接操纵...
    遺訓餘風阅读 305评论 0 0
  • 用引用操作对象 操纵的操作符实际上是对象的一个引用拥有一个引用,并不一定需要有一个对象与它关联 创建引用安全的做法...
    老茂在北京阅读 127评论 0 0
  • 虽然java是杂合语言,但是此书假设只进行面向对象的程序设计。 用引用操纵对象将java的一切看成对象,使用引用操...
    MAXPUP阅读 48评论 0 0
  • 一年之计在于春,新春伊始, 正是家庭装修的最好时节,为什么很多人选择春季装修呢? 今天旧房改造翻新专家e修鸽就来给...
    家装头条阅读 367评论 0 0
  • 我算明白并没有什么事能一劳永逸,每一步踏上的路,都注定自己需要为其付诸,老死不疲,我这幅皮囊,干瘪瘪的,圆润润的好...
    RyanTao阅读 181评论 0 0