读书笔记


Java编程思想读书笔记(二)

2022年5月27日,阅读java编程思想第二章一切都是对象。

这一章开启了,JAVA语言的篇章,对象对于Java来说十分重要。“尽管以C++为基础,但Java是一种更纯粹的面向对象,程序设计语言。”

第一节用句柄来操作对象

刚刚读这个标题我有点蒙,句柄是个啥,咱不知道呢。不知道咋办,没事百度百度呀。

百度科普中国对句柄的解释,句柄(Handle)是一个是用来标识对象或者项目的标识符,可以用来描述窗体、文件等,值得注意的是句柄不能是常量。

句柄(handle)是C++程序设计中经常提及的一个术语。它并不是一种具体的、固定不变的数据类型或实体,而是代表了程序设计中的一个广义的概念。句柄一般是指获取另一个对象的方法——一个广义的指针,它的具体形式可能是一个整数、一个对象或就是一个真实的指针,而它的目的就是建立起与被访问对象之间的唯一的联系

原来如此句柄是c++里面的一大概念,可惜我这个菜鸡没学过,只学过c语言。话不多说,咱们用句柄控制一下对象呗。

String s

这就是按照课本上创建一个句柄,而不是对象。当然创建句柄时候最好初始化一下句柄,这样更加安全。

String k = "abcdef"

第一节就这么愉快的结束了。

第二节 所有对象都必须创建

用句柄创建对象对象保存到哪里呢??

这一节说的比较底层了,句柄创建对象一般有六个地方存储数据。

1、寄存器:这是最快的保存区域,它位于处理内部。和其他的有所不同,但是寄存器十分有限,由编译器配置。

2、堆栈:驻留于常规RAM(随机访问存储器)区域,可以通过堆栈指针来获得处理的直接支持堆栈指针若向下移动就会创建新的内存,反之就会释放内存。这是一种特别快、特别有效的数据保存方式,仅次于寄存器。

3、堆:一种常规用途的内存池(也在RAM区域中),其中保存java对象。和堆栈不同,“内存堆”和“堆(heap)”,编译器不需要知道堆里面分配多少存储空间,也不用知道数据会存在堆里多久,所以更加灵活。但是灵活的背后肯定要付出一点代价,那就是在堆里面分配空间需要花费很长时间。

4、静态存储:静态(static)位于固定位置(也在RAM区域中)。程序运行时候静态存储的数据随之调用,可以用static关键字来指出对象是否是静态的,

5、常数存储:常数值通常位于程序代码内部,这样是安全的,有时候这些常数需要严格的保存起来,那就会考虑放在ROM中。

6、非RAM存储:若数据完全独立于一个程序之外,则程序不运行时仍可以存在,并在程序控制范围之外。这个比较有代表的就是流式对象和固定对象。

啥叫流式对?Stream对象,又称流式对象,是TStream、THandleStream、TFileStream、TMemoryStream、TResourceStream和TBlobStream等的统称。它们分别代表了在各种媒介上存储数据的能力,它们将各种数据类型(包括对象和部件) 在内存、外存和数据库字段中的管理操作抽象为对象方法,并且充分利用了面向对象技术的优点,应用程序可以相当容易地在各种Stream对象中拷贝数据。

这段从博客云摘来的https://www.cnblogs.com/ywangzi/archive/2012/07/27/2612293.html#:~:text=Stream%E5%AF%B9%E8%B1%A1,eam%E7%AD%89%E7%9A%84%E7%BB%9F%E7%A7%B0%E3%80%82

固定对象又是嘛呢?如果一个对象在创建之后它的状态就不能改变了,那么它就是一个固定对象。固定对象的最大可信性作为一种简单的、可信性的编码被广泛接受。固定对象通常应用在并发的应用程序中。由于他们不能改变状态,因此他们不能被线程中断打断或者观察到不一致的状态。

参考一下这个:https://www.cnblogs.com/accipiter/p/3267078.html#:~:text=  如果一个对象,是一个固定对象。

哦!对了创建对象,咱们不得知道点Java基本的数据类型。

基本数据类型Java给我们提供了8个:

大家可以看一下这个:http://c.biancheng.net/view/5672.html

还有一个高精度BigInteger,不可变的任意精度的整数。所有操作中,都以二进制补码形式表示 BigInteger(如 Java 的基本整数类型)。BigInteger 提供所有 Java 的基本整数操作符的对应物,并提供 java.lang.Math 的所有相关方法。另外,BigInteger 还提供以下运算:模算术、GCD 计算、质数测试、素数生成、位操作以及一些其他操作。

高精度浮点数BigDecimal,这块可以参考一下https://blog.csdn.net/sinat_34328764/article/details/79900883。

java数组,这段说的较为简单,后面会有单独的一章介绍。

第三节 绝对不要清除对象

这一节引入了Java中的作用域,作用域是指作用域定义了它的名字,作用域也决定了它的可见性和存在时间。作为作用域中的变量,只有在作用域中才能使用。有变量的作用域,那肯定也有对象的作用域,在Java中new一个对象,就可以创建对象。只要我们愿意,它可以一直保留下去。然后引出了Java的垃圾回收机制。这一块是Java的魅力所在。

第四节 新建数据类型:类

Class,这可不是班级,而是类。

在定义类的时候,可以自己类中设置两种类型的元素:数据成员以及成员函数。也就是字段和方法。

每一个对象都为自己的数据成员保有存储空间,数据成员不会再对象之间共享。

第五节 方法、自变量和返回值

方法的基本组成部分包括名字、自变量、返回类型以及主体。

show(String line){
    System.out.println(line);
}

看这就是一个方法,最简单的。

自变量:根据字面意思理解一下,自己变化的量。例子

int storage(String s){
    return s.length() * 2;
}

s会变化,它就是自变量。

return返回,主要有做两件事,1、我干完活了,离开方法,完工了。2、若返回类型是void,那它的作用就是退出方法。

第六节 构建Java程序

哈哈,大家学了hello world!了吗,具体咱们不说了。

里面东西很多,我困得不行了,以后补上。

第七节 第一个程序

这里面不是hello World!背后叫你敲一个hello world。

第八节 注释和嵌入文档

注释很重要,最近在公司,老大叫我们写注释,解释注释,看编码写注释。写注释为了让别人看懂代码,而不是为了自己。

//单行注释

/**
* 多行注释
*/

第九节 编码样式

俺觉得阿里的那些开发文档写很好,按那个来,不会错。需要的滴滴我,我给你们发。

欧耶终于写完了,现在是2022年05月28日12点49分,大家晚安。****