吃书周记——Java编程思想(一)

*吃书周记——Java编程思想(一)

  • 一周小记:

           大三下学期开学了,感觉很多事情一下子压上来,也感觉到自己距离目标中的优秀还有一段距离。专业方面准备开始吃书,把目前主流的一些Java后端技术好好学一学。Java虽然之前有学过,包括这一周读的前面几张都是很基础很常用的,但是发现其中不乏有没有注意的小细节,所以虽然学过、用过,甚至用Java写过两个工程性项目了,但是这些细节还是值得重读。

  • 一、对象导论
           1.人们所能够解决的问题的复杂性直接取决于抽象的类型和质量
           2.继承中的is-a关系是只继承了父类(基类)的方法,不一定全部覆盖,但是没有添加新的方法。Is-like-a关系则添加了新的方法。
           3.继承比较主要的使用是通过导出新的子类,可以避免对基类的代码进行修改,从而增加代码的可拓展性
           同时在编写代码时,将所有子类都当成基类的对象来对待,可以写出不依赖特定类型的代码,这种操作被称为泛化
           泛化之所以可以实现是因为面向对象的设计语言使用了后期绑定的机制。Java使用一小段特殊的代码来代替绝对地址的调用
           4.单根继承指的是所有类最终都继承自单一的基类,也就是Object类(Java中),单根继承使垃圾回收器的实现变得容易很多。垃圾回收器是Java中不需要关心对象生命周期的关键,当这个对象不再被使用(指向它的引用全部消失)时,垃圾回收器会自动回收这个对象(一般情况下)。在像C++这样的语言中,需要通过编程来确定何时销毁对象,容易导致内存泄漏
           垃圾回收器用来监视new创建的所有对象,并辨别不会再被引用的对象。
           5.需要多种容器的理由:
    第一:不同容器提供了不同类型的接口和外部行为。例如堆栈相比于队列就具有不同的接口和行为。
    第二:不同的容器对于某些操作具有不同的效率。例如ArrayList和LinkedList具有完全相同的接口和外部行为,但是两者因为底层结构不同,ArrayList对于访问随机元素是一个花费固定时间的操作,而LinkedList则不同,越接近尾部越慢。而增减元素时,ArrayList需要整体前后移动,LinkedList则不用。

  • 二、一切都是对象
           1.Java中创建对象都是创建的引用,而不是对象。例如

String s="asdf";

其实是创建了一个String类型的引用,这个引用指向的String类型对象的内容是asdf。
       Java中的封装类型对象都存储在“堆”里,但是基本类型存在堆栈中(基本类型不用new)。Java虽然会给未初始化的基本类型一个默认值。但是这个默认值对于程序来说有可能是错误的,所以还是明确地对变量进行初始化比较好
       注意:只有字段(成员变量)才有默认值,方法(成员函数)中的基本类型没有默认值

  • 三、操作符
           1.Java中整数的除法会直接去掉小数位。同理,将float或double型转为整型时也是直接去尾。如果想要采取四舍五入的方式,要使用java.lang.Math中的round()方法
           2.使用Random类创造随机数序列时
Random rand=new Random(k);

当K值(种子)相同时,创造出来的随机数序列时相同的。如果K值为空,则用当前的系统时间作为种子生成随机数序列
       3.只有基本类型才可以直接用==比较是否相等。如果是封装类型需要使用equals()方法比较。如果是自己创建的新类,在需要比较是否相等时需要重写 equals()函数,否则比较的会是两个引用,只有当引用完全相同时,才会返回true。
       4.短路指的是当一个逻辑表达式结果确定时,后续的计算就不会继续进行了。但是按位操作符不会中途短路。
       5.可以省略字符串转换的显式函数调用

int x=0;
print(""+x);

这样就可以不调用Integer.toString()方法,而直接将结果转化为字符串类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值