《Java编程思想个人总结 前四章》

Java编程思想个人总结 前四章

这是我的第一篇博客,内容也很简单,先是打算记录一下自己学习《Java编程思想》这本经典书籍的一些知识点,感觉自己在大学学习的知识太过于表面,这本书是在网上看别人推荐的,能够让我更深入的了解java,打算在工作之余花半年左右的时间学习一遍。
目前只学习了第一章:对象导论,不出意外的话这篇文章会持续更新,这里的知识点是针对我自己而言的,包括我不懂,觉得所认知的不够清晰,以及我觉得十分重要的。
第一章:对象导论
1.对象的五个基本特征
a.万物皆对象。
b.程序是对象的集合,他们通过发送消息来告知彼此。
c.每个对象都有自己的由其他对象所构成的存储。
d.每个对象都拥有类型。
e.某一个特定类型的所有对象都可以接收同样的消息。

2.访问控制的原因
a.让客户端程序员无法触及他们不应该触及的部分.
b.允许库设计者可以改变类内部的工作方式而不同担心会影响客户端程序员.

3.向上向下转型
a.向上转型:将导出类看做是它的基类的过程
b.向下转型:与向上转型相反,但有一定的危险,这个危险的原因是因为"单根继承结构"

4.参数化类型
就是Java所谓的泛型:一个编译器可以自动定制作用于特定类型的类.

5.对象的创建
一般是有两种方法.
a.对象的存储空间和生命周期可以编写程序时确定,将对象置于堆栈或静态存储区域内来实现.
b.在被称为堆的内存池中动态地创建对象.

6.垃圾回收器能够被设计用来处理内存释放问题的依据.
a.所有对象都是继承自当单根基类object
b.只能在堆上创建对象.

7.Java一开始就内置了异常处理,而且强制必须使用.
这些需要说的是,异常处理不是面向对象的特征,在面向对象语言出现之前就存在.

8.客户/服务器系统的核心思想是:系统具有一个中央信息存储池,用来存储某些数据,它通常存在于数据库中,你可以
根据需要将它分发给某些人员或机器集群.

9.为了延迟最小化,通常是分散给客户端机器处理,有时会使用所谓的中间件将负载分散给在服务器的其他机器.

10.web就是一台巨型服务器
一段信息不经修改就可以在任意型号的计算机上显示,引入在客户端浏览中运行程序的能力.

11.HTML(HyperText Markup Language)超文本标记语言被编程来实现复位表单上的数据或者提交表单上的数据给服务器,
通过web服务器都提供的通用网关接口(CGI)传递.

12.客户端编程所迈出的最重要的一步就是插件(plug-in)开发,插件引发了游览器脚本语言(Scripting language)开发.

13.Java是通过applet以及使用Jave Web Start来进行客户端编程的.

以上我是从第一章中收获的知识.

第二章:一切都是对象
1.对象存储的位置.
a.寄存器:最快的存储区,位于处理器内部,按需分配,不能控制.
b.堆栈:位于通用RAM(随机访问存储器),通过堆栈指针可以从处理器获取支持,指针向下移动,分配新的内存;向上移动,
释放内存,速度仅次于寄存器.创建程序时,Java系统必须知道存储在堆栈内所有项的确切生命周期,以便上下移动指针.
Java某些数据是存储于堆栈中-特别是对象引用,但是对象并不在其中.
c.堆:一种通用的内存池(RAM)存放所有的Java地偶像,堆不同于堆栈的好处:编译器不需要知道存储的数据在堆里存活
多长时间.灵活性的代价:用堆进行存储分配和清理可能要比用堆栈需要更多的时间.
d.常量存储:常量值通常直接存放在程式代码内部,安全不可改变.嵌入式系统中,常量会和其他部分分离开,会选择存放在
ROM(只读存储器).
e.非RAM存储:数据存活在程序之外,可以不受程序的任何控制:如流对象和持久化对象.Java提供了轻量化的支持.

2.new是将对象存储在堆里,直接赋值是创建一个并非是引用的"自动"变量,变量将"值"存储,变量并置于堆栈中.

3.BigInteger支持任意精度的证书;BigDecimal支持任意精度的定点数,两者都以速度换取了精度.

4.Java确保数组会被初始化,而且不能再他的范围之外内访问,是以每个数组上少量的内存开销及运行时下标检查为代价的.
当创建一个数组对象时,实际就是创建了一个引用数组,并且每个引用都会自动被初始化为一个特定值:关键字null

5.在类的方法的参数列表中传递的实际上也是引用.

6.若返回类型是void,return的关键字的作用只是用来退出方法.

7.Java意味着所有的文件都能够自动存活于它们自己的名字空间,而且同一个文件内的每个类都有唯一的标识符.

8.java.lang是特定会自动被导入到每一个Java文件中.

9.main(string[] args)中的参数args是要用来存储命令行参数.

10.Jav的嵌入式HTML是有Javadoc实现的.

第三章 操作符 && 第四章 控制执行流程
备注:因为第三章跟第四章的对于我来说不了解的知识点不多,所以将两章合一,有个特别要注意的地方是Java实现goto的方式会在11点介绍

1.在为对象赋值的时候,是操作对象的引用,“将一个对象赋值给另一个对象”,实际是将"引用"从一个地方复制到另一个地方.c=d,那么c和d都指向原本只有d指向的那个对象.

2.一元减号用于转变数据的符号,一元加号的租用是较小类型的操作数提升为int.

3.基本类型直接使用 == 和 != 判断,所有对象可以用equals()来比较两个对象的实际内容是否相同.

4.Java中e作为自然对数的技术使用,1.39e的-43次方 = 1.39 * 10的-43次方.

5.“有符号"右移位操作符使用"符号扩展”.若符号为正.则在高位插入0;若符号为负,则在高位插入1.
如果对char,byte或者short类型的数值进行移位处理,那么在移位进行之前,他们会被转移为int类型,结果也是int,且 只有数值右端的低5位才有用.

6.类型装换的原意是"模型铸造"
如果执行"窄化转换"的操作,可能面临信息丢失的危险,编译器强制进行装换,对于"扩展转换",则不必显式地进行类型转换.

7.Java允许我们把任意基本数据类型转换成别的基本数据类型,布尔型除外.

8.将float或者double转型为整形时,对数字进行截尾.
使用Java.lang.Math的round()就可以得到舍入的结果.

9.对基本数据类型执行算术运算或按位运算,表达式总出现的最大的数据类型决定了表达式最终结果的数据类型.
在char,byte和short中,进行算术运算们都会返回一个int结果.

10.Java不需要sizeof()的原因是:所有数据类型在所有机器的大小都相同.

11.尽管goto扔是Java中的一个保留字,但在语言中并未使用,然而Java也能完成一些类似于跳转的操作:break和continue其实不是一个跳转,而是中断迭代语句的一种方式.它都使用了"标签"机制.标签是后面跟有冒号的标识符:如label1:
在Java中,标签起作用的唯一的地方刚好在迭代语句之前,而在迭代之前设置标签的唯一理由是:希望嵌套另一个迭代或者一个开关.
a.一般的continue会退回最内层循环的头部,并断续执行.
b.带标签的continue会到达标签的位置,并重新进入紧接在那个标签后的循环.
c.一般的break会中断并跳出当前循环.
d.带标签的break会中断并跳出标签所指的循环.

------------------------------------------------------------我是分隔符------------------------------------------------------------
第五章跟以后的内容应该会换一篇文章,不然会显得文章太过累赘,以便日后自己查看,然后今天team里有个同事离职了,接下来还有几个也是离职的,公司老人说,你们新人一般都是1-2年会出现大规模的离职情况,我想问这是it业的常态吗?还是因为我们刚刚毕业或者毕业不久后就业者的心态就是如此?

你可能感兴趣的:(Java,新人,Java,编程思想,基础)