05回顾前文

       

代码的评审

结对编程

走查等等

通过审查文档就可以直接发现问题

轻量级代码评审

实时的监控制度

静态代码分析

checkstyle等软件和工具

作用

提升代码和编程能力

bugs、代码风格、java语言本身用法不同、错误使用结构

动态代码分析

执行后收集数据 分析不足

测试和调试的不同

测试发现错误

调试确定错误的位置

二者都不可以提高代码质量

重构

在不改变功能的前提下优化代码

不同于迭代的优化

重构的工具有很多也有很多的方法 很多的研究

build不同于construction

 

05 数据类型和类型检验

主题

 

数据类型的基本知识,静态\动态检查

可变数据的危险性

不变数据的优越性

snapshot图理解数据类型

用集合类表达复杂数据类型

本章:理论基础ADT、技术基础OOP

数据类型和变量

常见数据类型:int string char .....

变量:用特定数据类型定义

基础数据类型:int long boolean double char

对象数据类型:string biginteger

以上两种数据类型不能在差异

 

不可变/可变的重点讲解

对象形成层次结构

继承关系:

 

封装基本数据类型

 

操作符

运算

+:字符串中就是连接

直接使用操作符或者调用函数(sin)

静态数据检查和动态数据检查、

类型转换

不可以吧高标准的赋值给低标准的

静态类型语言

在没有执行的时候可以推断:

 

语法错误(动态检查也会检查语法只不过不检查数据类型)、类名/函数名错误、参数数目错误、参数类型、返回值类型

静态检查:数据类型的检查

动态检查

只有运行阶段才可以知道是否正确

动态检查:非法参数、非法返回值、越界、空指针

动态检查:关于值的检查

结论

 

基本数据类型不是真正的数字

 

强制类型转换

溢出问题

例子

 

java不把整数和布尔值混淆:静态

溢出:不正确(不是动态检查)

没有类型转换:不正确(不是动态检查)

运算错误:动态错误

double的类型很特别:不正确(不是动态检查),所以不同于上一个

 

可变和不可变

改变一个变量:就是改变存储空间

改变变量的值:将储存空间中的物品改变

不变性

重要的设计原则

一旦被创建值不可以变

 

final 就代表不可变了

final尽量用在局部变量

扩展:

 

字符串是一个不可变的类型

 

新生成了一个类型

stringbuilder 是一个可以变的

 

区别

只有一个引用时二者没有区别

多个引用的时候:

 

就是string:多个引用的时候其实是进行了大量的靠北

stringbuilder:就是只在一个里边修改

可变类型的优势和劣势

 

 

危险:

 

 

性能和安全的对抗

例子:

 

执行方法后可能就修改了原来的数据

改进

防御式拷贝

 

使用不可变类型

结论

 

存在多个引用的话建议使用不可变

闪图

运行时的内部状态

优点

便于交流

便于刻画

便于思路清晰

基本类型

 

对象类型

 

变量

 

双层圈代表不可变

单层代表可变

final的应用双线

 

引用不可变但是值可变

 

可变的引用,也可指向不可变的值

 

 

例子:final应用 但是值可以改变 所以sb只能指向这个空间 但是可以修改值 输出abcd

 

 

 

输出abcde 原理闪图如下

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值