老生常谈:everything is object

前言:everything is object,OK,我终于起了一个很洋气的名字,瞬间觉得自己就是一个对象Writer,而我正在做的事情就在writing(),美其名曰:“Writer.writing(CSDN)”。

引用操作对象

其实吧,我不想讨论这个话题,我真的对“引用”、“对象”有点过敏,我可能前一秒懂了,后一秒我就又糊涂了,不过管他呢,我现在好像有点清醒。

String s;System.out.println(s);

上面这段代码,你觉得可以执行吗?

当然答案是否定的!

如果你用的是IDE,那么就会提醒你s没有初始化。打个比方来说,有7个葫芦娃(娃1、娃2、娃3、娃4、娃5、娃6、娃7,我的确是不嫌啰嗦,我一个个敲出来的),假如这个时候,葫芦娃爷爷喊“娃,回来吃饭了”,可能七个葫芦娃都反应不过来,不知道爷爷叫哪个娃,此时爷爷口中的娃就是一个引用,还没有形成对象。

如果爷爷喊“娃1,搬块砖爷爷坐坐”(大娃是大力士嘛),或者喊“娃2,给爷爷倒口水喝喝”(二娃是水嘛),这样娃们就能理解爷爷的意思。

String s1 = “w1”;String s2 = “w2”;System.out.println(s1 + “给爷搬块砖,” + s2 +”给爷倒口水”);

说到这,你明白引用操作对象了吗?反正我好像又是晕了。

基本类型

对于Java的基本类型,我想你肯定知道以下诸君。

基本类型 包装器类型

boolean Boolean

char Character

byte Byte

short Short

int Integer

long Long

float Float

double Double

void Void

在这里,我只想说明一点,为什么会有基本类型?

下面我就先剪报一下:

寄存器>堆栈>堆>常量存储>非RAM存储

啥意思呢?就是寄存器是计算机中最快的存储区,堆栈次之,以此类推。

而这和基本类型有什么关系呢? Java在用new的时候,是把对象存储在堆中的,,而基本类型时一种特别简单的对象,如果也放在堆中,就会影响到性能,那么鉴于此,就把基本类型放到了堆栈中,这样更加高效。

当然看到这,你可能想起了《Java编程思想》,我本来是不想解释的,但是过意不去,害怕被说成搬运工,OK,我想起来农夫山泉的广告语:“我们不生产水,我们只是大自然的搬运工”。

垃圾回收

本来是想放两张动态图的,结果CSDN告知文件大小超过了2M,那么就只能贴网址了,不过里面的广告很多,请忍耐一下。 据说是C++和Java的垃圾回收对比图 码农们感受一下。

就看到这结束吧,我不知道说什么好了。

static关键字

先剪报吧。

一个static字段对每个类来说都只有一份存储空间,而非static字段对每个对象都有一个存储空间

class T1 {static String s = “娃”;}

这段代码有问题吗?

有,至少IDE会提示你s要声明为final类型,这说明什么呢?你回到剪报内容再细致一看。

本篇说道这吧,我觉得该结束了,我想说的几个注意点就结束了,那么下面我该絮叨些什么呢?我要发功了,对发功!

你能解答下面这几个问题吗?你认为下面会输出什么?class T1 {int i;char c;String s;}{(String[] args) {T1 t1 = new T1();System.out.println(t1.i);System.out.println(t1.c);System.out.println(t1.s);}}

请作答。

2.你觉得答案会是什么呢?

class T1 {String s;static void callMe(T1… t) {t[0] = t[1];t[1].s = “new s”;}}{(String[] args) {T1 t1 = new T1();T1 t2 = new T1();t2.s = t1.s = “s”;T1.callMe(t1, t2);System.out.println(t1 + ” ” + t2);}}

打印的结果是: 1. t1 t2; 2. new s new s; 3. t1 t1; 4. 以上答案都是错的。

知已知彼,百战百胜。

老生常谈:everything is object

相关文章:

你感兴趣的文章:

标签云: