2016/10/31
距离上次的博客记录过去快半个月了,因为我更习惯在本子上写笔记吧,而且是每章学习完了才写笔记总结,还有一些编译运行时的小问题(其实也是暴露出了当初学C语言基础不扎实的问题)被我写进了word文档里。在此,我转写到这里。
《疯狂Java讲义》第一、二章学习笔记:
▲ 面向对象软件开发步骤:OOA → OOD → OOP
▲ 垃圾回收机制的精确性体现在:1.标记活着的对象;2.定位对象之间的引用关系
▲ 单继承:一个直接父类;多继承:一个类有多个直接父类(Java不支持多继承!)
▲ 基于对象:封装;面向对象:封装、继承、多态
▲ UML(统一建模语言):用例图、类图、组件图、部署图、顺序图、活动图、状态机图
▲ 对象:具有唯一性,用标识来引用(无标识则收回),不允许直接访问对象,而是用引用来操作对象
遇到的问题:
public class asdf
{
publicstatic void main(String[] args)
{
byte a = (byte)0b11101001;
byte b = 0b11101001;
int c = 0b11101001;
System.out.println(a);
//System.out.println(b);
System.out.println(c);
}
}
标红部分提示错误:不兼容的类型:从int转换到byte可能会有损失
经过尝试,发现(标红错误,标绿则通过):
byte a = 0b11101001;
byte b = 0b01101001;
byte b = (byte)0b11101001;
short c =0b1000000000000101;
short c =0b0000000000000101;
short c = (short)0b1000000000000101;
书上是这么写的:一个Java整数常量默认就是int类型,如果直接把一个在byte或者short类型范围之内的比较小的数给byte或者short变量,系统会直接把这个数当byte或者short处理。
但是根据实践发现,一个byte或者short量,你给它赋值的时候,不能是负数,因为Java里面都是有符号数(嗯…我记得师兄是这么说的…错了打他…虽然我觉得没错),首位不能为1。因为如果不为1,是0,那么是一个正数,那么把这个数保存的时候,它会直接补0;但是如果是负数,它就会提醒错误,所以要先强制转换一下。
byte范围:-128(0b1000_0000)~127(0b0111_1111)
(这种问题…我真是…我一定是大一的时候上课睡觉去了……手动再见!)