【DEBUG】什么是debug?

举报
杨小羊 发表于 2020/09/28 16:47:57 2020/09/28
【摘要】 如何优雅地进行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

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

全部回复

上滑加载中

设置昵称

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

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

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