软件构造blog2——静态检查

static checking

静态检查发生在程序运行之前。Java是一种静态类型的语言。所有变量的类型都是在编译时(在程序运行之前)声明并检查,因此编译器也可以推断出所有表达式的类型。

下面是我结合所学内容对静态检查的理解与总结。

静态检查是对类型的检查,而非对特定值的检查。如果只有当某变量被赋予了某些特定的值才会在产生bug,那么这个错误是由动态检查所检测出来的,而非静态检查。

上面说过,静态检查主要是对类型的检查,具体来说是对“类型匹配”的检查。当编译器检测到某些变量与声明说好的不一样,就会触发一个静态检查错误。

以上是对静态检查的概念的说明,在实际的应用上,static checking在IDE中发生在编写代码的过程中。下面总结static checking发生的时刻即对应的错误。

1.语法错误

这是静态检查能检测到的最基本的错误,当我们编写代码的时候发生了语法错误,IDE会很快的反应,触发错误。

2.在方法中的匹配错误

    private int sum(int a, int b){
        return a + b;
    }

对于这样一个方法,在方法内部可能会出现:

返回值与声明不匹配的错误;

在调用该方法时,可能会出现:

传参的个数与spec中参数的个数不匹配;

调用的名字与方法实际名字不匹配;

传参的类型与spec的参数类型不匹配;

3.final检查

java中final修饰的变量或对象是不可修改的。如果出现了对final修饰的变量或对象的修改,静态检查会触发错误。

4.Immutable检查

与上述的final检查类似,当我们试图对一个Immutable的对象进行修改其内部的操作时,静态检查会触发错误。

一个典型的例子:

List是mutable的类型,要想获得起对应的immutable的List,需要Collection类的unmodifiableList方法,此时的List就是immutable的了。

 5.对private的检查

在一个类中,private修饰的fields或methods只能供该类访问或调用。这里的该类甚至可以是该类的多个对象。而当该类以外的类想要访问时,会触发静态错误。

例如,我们首先写一个Person类

 我们在其他类访问其中的fields会报错:

 只有在本类中不会:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值