1.三维视图
维度1:构造阶段,运行阶段
维度2:代码层面,组件层面
维度3:瞬时性,周期性
2.git
工作原理:
工作区->暂存区->本地仓库->远程仓库
Git存储发生变化的文件(而非代码行),不变化的文件不重复存储
git指令:
创建仓库
git init
将文件添加到暂存区
git add 文件名
将文件提交到仓库区
git commit -m 提交说明
列出所有本地分支
git branch
新建分支
git branch 分支名
切换到某分支
git checkout 分支名
合并指定分支到当前分支
git merge 分支名
显示变更的文件
git status
连接远程仓库
git remote add origin [url]
将master分支从本地仓库上传到远程仓库
git push -u origin master
版本回退
git reset
3.数据类型
基本数据类型与对象数据类型
分别在栈和堆中分配内存
静态类型检查:在编译阶段进行的类型检查
包括:语法错误,类名函数名错误,参数返回值错误
动态类型检查:在运行阶段进行的类型检查
包括:非法的参数返回值,越界访问,空指针
(除0错误不会被静态或动态检测到)
Immutable(不变)数据类型:一旦被创建,其值不可改变
若改变其值,则该变量指向新的内存地址
mutable(可变)数据类型:创建后,值可以被改变,指向的内存地址不变
Imutable数据:基本数据类型以及他们的包装类 等
mutable数据:StringBuilder,Date,List,Set,Map,Iterator 等
在返回一个可变数据类型时,最好返回它的一个复制,避免数据遭到更改
final:
1.被final修饰的类无法派生子类
2.被final修饰的变量无法改变其引用(内存地址),若修饰不变数据类型,其值不能被修改。修饰可变数据类型,其值仍可更改
3.final方法无法被子类重写
trim():返回修改后的字符串的复制,并不改变原字符串
Snapshot diagrams部分规则:
1.基本类型的值
2.对象类型的值
3.不可变对象用双线椭圆
4.不可变的引用用双向箭头
扩展:
1.Date a = new Date(); Date b = new Date(a.getTime());
向构造函数中传入日期的毫秒数,可用于产生Date()副本
2.Duration duration = Duration.between(date1,date2);
Long s = duration.getSeconds();//用于返回相差的毫秒数
3.正确的迭代器删除方法:
错误的迭代器删除方法:
4.由包装器得到的不可变类型