【DEBUG】什么是debug?

举报
杨小羊 发表于 2020/09/28 16:47:57 2020/09/28
9.1k+ 0 0
【摘要】 如何优雅地进行DEBUG

1.DEBUG

Bug一词的原意是“昆虫”或“虫子”;而在电脑系统或程序中隐藏着的一些未被发现的缺陷或问题,人们也叫它“bug”。

“Bug”的创始人赫柏的报告格蕾丝·赫柏(Grace Murray Hopper),是一位为美国海军工作的电脑专家,也是最早将人类语言融入到电脑程序的人之一。而代表电脑程序出错的“bug” 这名字,正是由赫柏所取的。1947年9月9日,赫柏对Harvard Mark II设置好17000个继电器进行编程后,技术人员正在进行整机运行时,它突然停止了工作。于是他们爬上去找原因,发现这台巨大的计算机内部一组继电器的触点之间有一只飞蛾,这显然是由于飞蛾受光和热的吸引,飞到了触点上,然后被高电压击死。所以在报告中,赫柏用胶条贴上飞蛾,并把“bug”来表示“一个在电脑程序里的错误”,“Bug”这个说法一直沿用到今天。

与Bug相对应,人们将发现Bug并加以纠正的过程叫做“Debug”(中文称作“调试”),意即“捉虫子或“杀虫子”。

后来就直接用bug 在很多的软件测试中 都用Bug来说明那些问题。

Eclipse DEBUG操作

该操作也可以通过快捷键来完成,快捷键组合为 Alt + Shift + D, J。

2.泛型

  • 泛型的优点: 1.可以在集合中规范的存储同一类对象,如果不一样编译报错,提高了代码 的安全性 2.省去了强转的操作  jdk1.5 出现的新特性

  • 泛型的使用

    • 自定义泛型类  在自定义泛型类的声明,是在类名后面加上 <T>  在类体中只能对这个 泛型进行声明,不能实现或赋值, 而且在静态成员 都不可以使用泛型   模拟List类仿写如何声明泛型

    • 泛型方法

      方法上面也可以声明泛型,静态方法也可以 泛型方法也可以定义多个

  • 泛型上限与下限

    • 限定通配符的上边界: extends 正确:Vector<? extends Number> x = new Vector<Integer>(); 错误:Vector<? extends Number> x = new Vector<String>();

      上边界只能获取不能添加。

    • 限定通配符的下边界 super 接收Integer 或者Integer的父类型 正确:Vector<? super Integer> x = new Vector<Number>(); 错误:Vector<? super Integer> x = new Vector<Byte>();

      下边界只能添加,不能获取

3.枚举    

枚举是JDK1.5版本新增的特性(泛型、For-each等如今被广泛应用的特性也是由JDK1.5时所新增的),另外到了JDK1.6后switch语句支持枚举类型。 在一些方法运行时候 他需要的固定的数据 不能随意构建   必须有固定的范围的值 我们就使用枚举

特性  1.枚举是1个特殊类  2.枚举默认修饰符是  public static final ;  3.枚举值是所属类的类型  4.构造方法 都是私有的  5.枚举可以实现抽象的方法,但是枚举值也要实现该方法  6.枚举的值必须要放在枚举类的第一行、 常用方法  int compareTo(E o)  比较此枚举与指定对象的顺序。  Class<E> getDeclaringClass()  返回与此枚举常量的枚举类型相对应的 Class 对象。  String name()  返回此枚举常量的名称,在其枚举声明中对其进行声明。  int ordinal()  返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零)。  String toString()  返回枚举常量的名称,它包含在声明中  与常量的区别  枚举是在Java1.5版本后出现的,它与类常量和静态常量相比的有点主要表现在以下4各方面:  枚举常量更简单: 只需定义枚举项名称,无需定义其值,而接口常量或类常量必须定义其值;  枚举常量属于稳态型:枚举常量在使用时无需关注其值而直接调用,接口常量或类常量可能需要关注其值;  枚举具有内置方法:每个枚举都是java.lang.Enum的子类,该基类提供了诸如获得排序值得ordinal方法、compareTo比较方法等,大大简化常量的访问;  枚举可以自定义方法:枚举常量不仅可以定义静态方法,还可以定义非静态方法,而且还能从根本上杜绝常量类被实例化。  注意:每个枚举项都是该枚举的一个实例,那我们在枚举中定义的静态方法既可以在类中引用,也可以在实例中引用。枚举类不能有继承,无法做扩展,而接口常量和类常量可以通过继承进行扩展。

public enum Day2 {
 MONDAY("星期一"), TUESDAY("星期二"), WEDNESDAY("星期三"), THURSDAY("星期四"), FRIDAY("星期五"), SATURDAY("星期六"), SUNDAY("星期日");// 记住要用分号结束

 private String desc;// 中文描述

 /**
  * 私有构造,防止被外部调用
  * 
  * @param desc
  */
 private Day2(String desc) {
  this.desc = desc;
 }

 /**
  * 定义方法,返回描述,跟常规类的定义没区别
  * 
  * @return
  */
 public String getDesc() {
  return desc;
 }

 public static void main(String[] args) {
  for (Day2 day : Day2.values()) {
   System.out.println("name:" + day.name() + ",desc:" + day.getDesc());
  }
 }
}

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。