重温Java编程思想的一些感悟-20180223

重温Java编程思想的一些感悟-20180223

最近又重新翻开了这本书,翻开第一页,上面的第一句话让我有点感触。

2013年11月25日,购于亚马逊-陈志军

过得真快啊,今天是18年2月23日。岁月绕过谁?莫名的想起一句话:优于别人,并不高贵,真正的高贵应该是优于过去的自己。
今天的我,是否又优于过去的我了?

翻了一下书的目录,上面还有以前写的,哪天哪天要读那几章节。哈,我其实已经忘记我读过的这本书的内容了。

翻了下第一二三章,对象导论,一切都是对象,操作符。

使用java开发,我们通常会说一句话,万事皆对象。什么是对象?对象的好处?继承和组合的区别与联系?java的单继承结构-Object为终结父类。对象的创建和生命期。我们通常说创建一个对象在堆上,然后都是new出来的,那么基本类型的变量的空间又该如何算?也是在堆上么?

对象的存储:寄存器(无法直接控制),堆栈(RAM),堆(RAM),常量存储,非RAM存储(流对象,持久化对象)。
常量存储是将值直接存储在程序代码内部,常量的意思就是表明它是永远不会被改变的。那么基本类型是怎么存放的了?书上说,new的对象存储在堆里,但用new来创建一个小的简单的变量通常不是很搞笑,所以基本类型是特例,基本类型不用new来创建变量,而是创建一个并非是引用的“自动”变量,存储在堆栈中,并且也会将“值”也存在堆栈中。更加具体的解释可以看这篇问答:http://www.iteye.com/problems/75716。堆栈的作用是一个先进后出的结构也就是先分配的内存最后释放,局部变量是存放在堆栈中,所以函数返回之后,局部变量就没有了。

基本类型:boolean,byte(8bit),char(16bit),short(16bit),int(32bit),long(64bit),float(32bit),double(64bit),void

可以确定这些基本类型所占的存储空间的大小是不变的。但是boolean占多少位了?https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html 网上一堆的争论,官网的解释是这个:

1
boolean: The boolean data type has only two possible values: true and false. Use this data type for simple flags that track true/false conditions. This data type represents one bit of information, but its "size" isn't something that's precisely defined.

boolean 只有两个值:true和false。使用它作为真/假表达式的标记,它的数据类型表示的是一个bit的信息,但实际大小确不是精确定义的。

基本类型是有默认值的,但仅仅只限于作为类的成员变量时,java才会给默认值,如果是在一个方法中,如果你直接像下面这样:

1
2
3
4
public void test(){
int i;
System.out.println(i+1);
}

如果像上面这样,i不初始化,就会报编译错误。

static关键字:我们知道,对象的创建需要在执行new之后,才会给对相对分配数据存储空间。但如果我只想给类的某个域或者方法单一分配存储空间或者希望某个方法就算没有创建对象,也能够被调用。这种想法就是,我不想使用new去创建对象(可能对象太大占用太多空),但是勒,我又需要这个对象里面的某个域或者某个方法。这种时候就可以使用static关键字了。static的意思就是用它来修饰的域或者方法,不与包含它的那个类的任何实例对象关联在一起。所以就算没有创建某个类的任何对象,也可以调用static方法,或者static域。而非static域和方法,必须知道他们一起运作的特定对象。static字段对于每个类来说都只有一份,也就是无论你是创建多个也好,还是只有一个也好,它们用到的那个static域是公有的,都是同一个存储空间。

操作符
在java最底层,数据是通过操作符来操作的。
java的操作符有:四则运算(算术操作符),赋值,关系操作符(<,>,<=,==,!=),逻辑操作符号(&&,||,!),自增自减,按位操作(&,|,^,~),移位操作符(<<,>>,>>>(无符号右移),<<<(无符号左移))。

逻辑操作符号只用于布尔值

按位操作符~,是一元操作符,也就是只需要一个操作数就可以了。所以不能用 ~=

类型转换:高位转地位会失真,所以需要显示强转;地位转高位没事不必显示强转。基本类型中,如果是数据类型小和数据类型大的做运算,结果总是数据类型大的。

坚持原创技术分享,您的支持将鼓励我继续创作!