摘要: 事件模型指的是对象之间进行通信的设计模式。 对象1给对象2发送一个信息相当于对象1引用对象2的方法。 模型即是一种设计模式(约定俗成) 对象对为三种: ①事件源:发出事件者; ②事件对象:发出的事件本身; ① 事件监听器:提供处理事件指定的方法。 Java AWT事件模型也称为授权事件模型,指事件可 阅读全文
posted @ 2018-08-04 22:20 Borter 阅读(178) 评论(0) 推荐(0)
摘要: Awt:抽象窗口工具箱,它由三部分组成: ①组件:界面元素; ②容器:装载组件的容器(例如窗体); ③布局管理器:负责决定容器中组件的摆放位置。 图形界面的应用分四步: ① 选择一个容器: ⑴window:带标题的容器(如Frame); ⑵Panel:面板 通过add()想容器中添加组件。 Java 阅读全文
posted @ 2018-08-04 22:19 Borter 阅读(222) 评论(0) 推荐(0)
摘要: 软件应用的三个发展阶段: 单机应用 网络应用(C/S结构) BS结构:B表示浏览器,S表示server端。即利用浏览器作为客户端,因此对于图形界面的要求已经不高,现在的发展趋势是不使用安装,即不用任何的本地应用,图形很快就会被服务器构件开发所取代。 阅读全文
posted @ 2018-08-04 22:17 Borter 阅读(467) 评论(0) 推荐(0)
摘要: 注:HashMap底层也是用数组,HashSet底层实际上也是HashMap,HashSet类中有HashMap属性(我们如何在API中查属性)。HashSet实际上为(key.null)类型的HashMap。有key值而没有value值。 正因为以上的原因,TreeSet和TreeMap的实现也有 阅读全文
posted @ 2018-08-04 22:16 Borter 阅读(896) 评论(0) 推荐(0)
摘要: 遍历Map,使用keySet()可以返回set值,用keySet()得到key值,使用迭代器遍历,然后使用put()得到value值。 上面这个算法的关键语句: Set s=m.keySet(); Interator it=new interator(); Object key=it.next(); 阅读全文
posted @ 2018-08-04 22:14 Borter 阅读(531) 评论(0) 推荐(0)
摘要: SortedSet可自动为元素排序。 SortedSet的实现类是TreeSet:它的作用是字为添加到TreeSet中的元素排序。 与HashSet不同,TreeSet并不需要实现HashCode()和equals()。 只要实现compareable和compareTo()接可以实现过滤功能。 ( 阅读全文
posted @ 2018-08-04 22:13 Borter 阅读(355) 评论(0) 推荐(0)
摘要: 如果偷懒,没有设定equals(),就会造成返回hashCode虽然结果相同,但在程序执行的过程中会多次地调用equals(),从而影响程序执行的效率。 我们要保证相同对象的返回的hashCode一定相同,也要保证不相同的对象的hashCode尽可能不同(因为数组的边界性,hashCode还是可能相 阅读全文
posted @ 2018-08-04 22:11 Borter 阅读(3542) 评论(0) 推荐(0)
摘要: Set-HashSet实现类: 遍历一个Set的方法只有一个:迭代器(interator)。 HashSet中元素是无序的(这个无序指的是数据的添加顺序和后来的排列顺序不同),而且元素不可重复。 在Object中除了有final(),toString(),equals(),还有hashCode()。 阅读全文
posted @ 2018-08-04 22:08 Borter 阅读(251) 评论(0) 推荐(0)
摘要: List接口的实现类(Vector)(与ArrayList相似,区别是Vector是重量级的组件,使用使消耗的资源比较多。) 结论:在考虑并发的情况下用Vector(保证线程的安全)。 在不考虑并发的情况下用ArrayList(不能保证线程的安全)。 面试经验(知识点): java.util.sta 阅读全文
posted @ 2018-08-04 22:06 Borter 阅读(140) 评论(0) 推荐(0)
摘要: LinkedList提供以下方法:(ArrayList无此类方法) addFirst(); removeFirst(); addLast(); removeLast(); 在堆栈中,push为入栈操作,pop为出栈操作。 Push用addFirst();pop用removeFirst(),实现后进先 阅读全文
posted @ 2018-08-04 22:04 Borter 阅读(4991) 评论(0) 推荐(0)
摘要: LinkedList接口(在代码的使用过程中和ArrayList没有什么区别) ArrayList底层是object数组,所以ArrayList具有数组的查询速度快的优点以及增删速度慢的缺点。 而在LinkedList的底层是一种双向循环链表。在此链表上每一个数据节点都由三部分组成:前指针(指向前面 阅读全文
posted @ 2018-08-04 22:03 Borter 阅读(3148) 评论(0) 推荐(2)
摘要: 集合的最大缺点是无法进行类型判定(这个缺点在JAVA1.5中已经解决),这样就可能出现因为类型不同而出现类型错误。 解决的方法是添加类型的判断。 阅读全文
posted @ 2018-08-04 22:01 Borter 阅读(140) 评论(0) 推荐(0)
摘要: java.util下有一个Comparator(比较器) 它拥有compare(),用来比较两个方法。 要生成比较器,则用Sort中Sort(List,List(Compate)) 第二种方法更灵活,且在运行的时候不用编译。 注意:要想实现comparTo()就必须在主方法中写上implement 阅读全文
posted @ 2018-08-04 22:00 Borter 阅读(180) 评论(0) 推荐(0)
摘要: 对于自定义对象,Sort不知道规则,所以无法比较。这种情况下一定要定义排序规则。方式有两种: java.lang下面有一个接口:Comparable(可比较的) 可以让自定义对象实现一个接口,这个接口只有一个方法comparableTo(Object o) 其规则是当前对象与o对象进行比较,其返回一 阅读全文
posted @ 2018-08-04 21:58 Borter 阅读(538) 评论(0) 推荐(0)
摘要: 通过语句:Iterator it=c.iterator(); 得到一个迭代器,将集合中所有元素顺序排列。然后可以通过interator方法进行遍历,迭代器有一个游标(指针)指向首位置。 Interator有hasNext(),用于判断元素右边是否还有数据,返回True说明有。然后就可以调用next动 阅读全文
posted @ 2018-08-04 21:56 Borter 阅读(185) 评论(0) 推荐(0)
摘要: 以下介绍接口: List接口:(介绍其下的两个实现类:ArrayList和LinkedList) ArrayList和数组非常类似,其底层①也用数组组织数据,ArrayList是动态可变数组。 ① 底层:指存储格式。说明ArrayList对象都是存在于数组中。 注:数组和集合都是从下标0开始。 Ar 阅读全文
posted @ 2018-08-04 21:54 Borter 阅读(195) 评论(0) 推荐(0)
摘要: JAVA中所有与集合有关的实现类都是这六个接口的实现类。 Collection接口:集合中每一个元素为一个对象,这个接口将这些对象组织在一起,形成一维结构。 List接口代表按照元素一定的相关顺序来组织(在这个序列中顺序是主要的),List接口中数据可重复。 Set接口是数学中集合的概念:其元素无序 阅读全文
posted @ 2018-08-04 21:52 Borter 阅读(612) 评论(0) 推荐(0)
摘要: Key-Value是用一个不可重复的key集合对应可重复的value集合。(典型的例子是字典:通过页码的key值找字的value值)。 例子: key1—value1; key2—value2; key3—value3. SortedMap:如果一个Map可以根据key值排序,则称其为SortedM 阅读全文
posted @ 2018-08-04 21:52 Borter 阅读(1262) 评论(0) 推荐(0)
摘要: 集合 集合是指一个对象容纳了多个对象,这个集合对象主要用来管理维护一系列相似的对象。 数组就是一种对象。 java.util.*定义了一系列的接口和类,告诉我们用什么类NEW出一个对象,可以进行超越数组的操作。 (注:JAVA1.5对JAVA1.4的最大改进就是增加了对范型的支持) 集合框架接口的分 阅读全文
posted @ 2018-08-04 21:50 Borter 阅读(340) 评论(0) 推荐(0)
摘要: 当我们自己定义一个例外类的时候必须使其继承excepiton或者RuntimeException。 Throw是一个语句,用来做抛出例外的功能。 而throws是表示如果下级方法中如果有例外抛出,那么本方法不做处理,继续向上抛出。 Throws后跟的是例外类型。 断言是一种调试工具(assert) 阅读全文
posted @ 2018-08-04 21:48 Borter 阅读(646) 评论(0) 推荐(0)
摘要: Exception有一个message属性。在使用catch的时候可以调用: Catch(IOException e){System.out.println(e.message())}; Catch(IOException e){e.printStackTrace()}; 上面这条语句回告诉我们出错 阅读全文
posted @ 2018-08-04 17:57 Borter 阅读(207) 评论(0) 推荐(0)
摘要: 一个try可以跟进多个catch语句,用于处理不同情况。当一个try只能匹配一个catch。 我们可以写多个catch语句,但是不能将父类型的exception的位置写在子类型的excepiton之前,因为这样父类型肯定先于子类型被匹配,所有子类型就成为废话。JAVA编译出错。 在try,catch 阅读全文
posted @ 2018-08-04 17:56 Borter 阅读(10808) 评论(0) 推荐(1)
摘要: 例:public void print() throws Exception. 对于方法a,如果它定义了throws Exception。那么当它调用的方法b返回异常对象时,方法a并不处理,而将这个异常对象向上一级返回,如果所有的方法均不进行处理,返回到主方法,程序中止。(要避免所有的方法都返回的使 阅读全文
posted @ 2018-08-04 17:54 Borter 阅读(7343) 评论(0) 推荐(0)
摘要: 应对未检查异常就是养成良好的检查习惯。 已检查异常是不可避免的,对于已检查异常必须实现定义好应对的方法。 已检查异常肯定跨越出了虚拟机的范围。(比如“未找到文件”) 如何处理已检查异常(对于所有的已检查异常都要进行处理): 首先了解异常形成的机制: 当一个方法中有一条语句出现了异常,它就会throw 阅读全文
posted @ 2018-08-04 17:53 Borter 阅读(166) 评论(0) 推荐(0)
摘要: JAVA会将所有的错误封装成为一个对象,其根本父类为Throwable。 Throwable有两个子类:Error和Exception。 一个Error对象表示一个程序错误,指的是底层的、低级的、不可恢复的严重错误。此时程序一定会退出,因为已经失去了运行所必须的物理环境。 对于Error错误我们无法 阅读全文
posted @ 2018-08-04 17:52 Borter 阅读(229) 评论(0) 推荐(0)
摘要: 匿名内部类(必须掌握): 匿名内部类是一种特殊的局部内部类,它是通过匿名类实现接口。 IA被定义为接口。 IA I=new IA(){}; 注:一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类,没有类名,根据多态,我们使用其父类名。 因其为局部内部类,那么局部内部类的所有限制都对 阅读全文
posted @ 2018-08-04 17:51 Borter 阅读(824) 评论(0) 推荐(1)
摘要: 静态内部类:(注意:前三种内部类与变量类似,所以可以对照参考变量) 静态内部类定义在类中,任何方法外,用static定义。 静态内部类只能访问外部类的静态成员。 生成(new)一个静态内部类不需要外部类成员:这是静态内部类和成员内部类的区别。静态内部类的对象可以直接生成: Outer.Inner i 阅读全文
posted @ 2018-08-04 17:50 Borter 阅读(440) 评论(0) 推荐(0)
摘要: 局部内部类:在方法中定义的内部类称为局部内部类。 与局部变量类似,在局部内部类前不加修饰符public和private,其范围为定义它的代码块。 注意:局部内部类不仅可以访问外部类实例变量,还可以访问外部类的局部变量(但此时要求外部类的局部变量必须为final)?? 在类外不可直接生成局部内部类(保 阅读全文
posted @ 2018-08-04 17:48 Borter 阅读(473) 评论(0) 推荐(0)
摘要: 成员内部类不可以有静态属性。 如果在外部类的外部访问内部类,使用out.inner. 建立内部类对象时应注意: 在外部类的内部可以直接使用inner s=new inner();(因为外部类知道inner是哪个类,所以可以生成对象。) 而在外部类的外部,要生成(new)一个内部类对象,需要首先建立一 阅读全文
posted @ 2018-08-04 17:47 Borter 阅读(205) 评论(0) 推荐(0)
摘要: 成员内部类:作为外部类的一个成员存在,与外部类的属性、方法并列。 内部类和外部类的实例变量可以共存。 在内部类中访问实例变量:this.属性 在内部类访问外部类的实例变量:外部类名.this.属性。 成员内部类的优点: ⑴内部类作为外部类的成员,可以访问外部类的私有成员或属性。(即使将外部类声明为P 阅读全文
posted @ 2018-08-04 17:45 Borter 阅读(459) 评论(0) 推荐(0)
摘要: 内部类: (注:所有使用内部类的地方都可以不用内部类,使用内部类可以使程序更加的简洁,便于命名规范和划分层次结构)。 内部类是指在一个外部类的内部再定义一个类。 内部类作为外部类的一个成员,并且依附于外部类而存在的。 内部类可为静态,可用PROTECTED和PRIVATE修饰。(而外部类不可以:外部 阅读全文
posted @ 2018-08-04 17:43 Borter 阅读(105) 评论(0) 推荐(0)
摘要: 封装类: JAVA为每一个简单数据类型提供了一个封装类,使每个简单数据类型可以被Object来装载。 除了int和char,其余类型首字母大写即成封装类。 转换字符的方式: int I=10; String s=I+” ”; String s1=String.valueOf(i); Int I=10 阅读全文
posted @ 2018-08-04 17:41 Borter 阅读(180) 评论(0) 推荐(0)
摘要: 以下为定义equal(加上这个定义,返回ture或false) public boolean equals(Object o){ student s=(student)o; if (s.name.equals(this.name)&&s.age==this.age) else return fals 阅读全文
posted @ 2018-08-04 17:40 Borter 阅读(179) 评论(0) 推荐(0)
摘要: 故如果要比较两个字符串是否相同(而不是他们的地址是否相同)。可以对a调用equal: System.out.println(a.equal(b)); equal用来比较两个对象中字符串的顺序。 a.equal(b)是a与b的值的比较。 注意下面程序: student a=new student(“L 阅读全文
posted @ 2018-08-04 17:39 Borter 阅读(188) 评论(0) 推荐(0)
摘要: 字符串类为JAVA中的特殊类,String中为final类,一个字符串的值不可重复。因此在JAVA VM(虚拟机)中有一个字符串池,专门用来存储字符串。如果遇到String a=”hello”时(注意没有NEW,不是创建新串),系统在字符串池中寻找是否有”hello”,此时字符串池中没有”hello 阅读全文
posted @ 2018-08-04 17:37 Borter 阅读(155) 评论(0) 推荐(0)
摘要: JAVA中有一个特殊的类: Object。它是JAVA体系中所有类的父类(直接父类或者间接父类)。 此类中的方法可以使所的类均继承。 以下介绍的三种方法属于Object: (1) finalize方法:当一个对象被垃圾回收的时候调用的方法。 (2) toString():是利用字符串来表示对象。 当 阅读全文
posted @ 2018-08-04 17:36 Borter 阅读(338) 评论(0) 推荐(0)
摘要: 接口往往被我们定义成一类XX的东西。 接口实际上是定义一个规范、标准。 ① 通过接口可以实现不同层次、不同体系对象的共同属性; 通过接口实现write once as anywhere. 以JAVA数据库连接为例子:JDBC制定标准;数据厂商实现标准;用户使用标准。 接口通常用来屏蔽底层的差异。 ② 阅读全文
posted @ 2018-08-04 17:35 Borter 阅读(1276) 评论(0) 推荐(0)
摘要: 类必须实现接口中的方法,否则其为一抽象类。 实现中接口和类相同。 接口中可不写public,但在子类中实现接口的过程中public不可省。 (如果剩去public则在编译的时候提示出错:对象无法从接口中实现方法。) 注: ① 一个类除继承另外一个类,还可以实现接口; class IAImpl ext 阅读全文
posted @ 2018-08-04 17:34 Borter 阅读(1761) 评论(0) 推荐(0)
摘要: JAVA的核心概念:接口(interface) 接口与类属于同一层次,实际上,接口是一种特殊的抽象类。 如: interface IA{ } public interface:公开接口 与类相似,一个文件只能有一个public接口,且与文件名相同。 在一个文件中不可同时定义一个public接口和一个 阅读全文
posted @ 2018-08-04 17:32 Borter 阅读(306) 评论(0) 推荐(0)
摘要: 如果让一个非抽象类继承一个含抽象方法的抽象类,则编译时会发生错误。因为当一个非抽象类继承一个抽象方法的时候,本着只有一个类中有一个抽象方法,那么这个类必须为抽象类的原则。这个类必须为抽象类,这与此类为非抽象冲突,所以报错。 所以子类的方法必须覆盖父类的抽象方法。方法才能够起作用。 只有将理论被熟练运 阅读全文
posted @ 2018-08-04 17:31 Borter 阅读(3196) 评论(0) 推荐(0)
摘要: Abstract可以将子类的共性最大限度的抽取出来,放在父类中,以提高程序的简洁性。 Abstract虽然不能生成对象,但是可以声明,作为编译时类型,但不能作为运行时类型。 Final和abstract永远不会同时出现。 当abstract用于修饰方法时,此时该方法为抽象方法,此时方法不需要实现,实 阅读全文
posted @ 2018-08-04 17:30 Borter 阅读(337) 评论(0) 推荐(0)
摘要: 利用final定义方法:这样的方法为一个不可覆盖的方法。 Public final void print(){}; 为了保证方法的一致性(即不被改变),可将方法用final定义。 如果在父类中有final定义的方法,那么在子类中继承同一个方法。 如果一个方法前有修饰词private或static,则 阅读全文
posted @ 2018-08-04 17:28 Borter 阅读(966) 评论(0) 推荐(0)
摘要: 在JAVA中利用public static final的组合方式对常量进行标识(固定格式)。 对于在构造方法中利用final进行赋值的时候,此时在构造之前系统设置的默认值相对于构造方法失效。 常量(这里的常量指的是实例常量:即成员变量)赋值: ①在初始化的时候通过显式声明赋值。Final int x 阅读全文
posted @ 2018-08-04 17:26 Borter 阅读(642) 评论(0) 推荐(0)
摘要: final可以修饰类、属性、方法。 当用final修饰类的时候,此类不可被继承,即final类没有子类。这样可以用final保证用户调用时动作的一致性,可以防止子类覆盖情况的发生。 当利用final修饰一个属性(变量)的时候,此时的属性成为常量。 JAVA利用final定义常量(注意在JAVA命名规 阅读全文
posted @ 2018-08-04 17:24 Borter 阅读(11433) 评论(0) 推荐(0)
摘要: 覆盖不适用于静态方法。 静态方法不可被覆盖。(允许在子类中定义同名静态方法,但是没有多态,严格的讲,方法间没有多态就不能称为覆盖) 当static修饰代码块时(注:此代码块要在此类的任何一个方法之外),那么这个代码块在代码被装载进虚拟机生成对象的时候可被装载一次,以后再也不执行了。 一般静态代码块被 阅读全文
posted @ 2018-08-04 17:22 Borter 阅读(339) 评论(0) 推荐(0)
摘要: Public static void printData(){} 表明此类方法为类方法(静态方法) 静态方法不需要有对象,可以使用类名调用。 静态方法中不允许访问类的非静态成员,包括成员的变量和方法,因为此时是通过类调用的,没有对象的概念。This.data是不可用的。 一般情况下,主方法是静态方法 阅读全文
posted @ 2018-08-04 17:21 Borter 阅读(2905) 评论(0) 推荐(0)
摘要: 面向对象高级: 修饰符: static:①可修饰变量(属性);②可修饰方法;③可修饰代码块。 Static int data语句说明data为类变量,为一个类的共享变量,属于整个类。 Int data为实例变量。 例: static int data; m1.data=0; m1.data++的结果 阅读全文
posted @ 2018-08-04 17:20 Borter 阅读(269) 评论(0) 推荐(0)
摘要: 覆盖时考虑子类的private及父类的public(考虑多态),之所以这样是避免调用A时出现实际调用B的情况。而出现错误。 面向对象高级、内部类、集合、反射。 面向对象高级、集合都是面向对象的核心内容。 阅读全文
posted @ 2018-08-04 17:19 Borter 阅读(133) 评论(0) 推荐(0)
摘要: 封装、继承、多态为面向对象的三大基石(特性)。 运行时的动态类型判定针对的是方法。运行程序访问的属性仍为编译时属性。 Overloading针对的是编译时类型,不存在运行时的多态。 阅读全文
posted @ 2018-08-04 17:17 Borter 阅读(155) 评论(0) 推荐(0)
摘要: 关系运算符:instanceof a instanceof Animal;(这个式子的结果是一个布尔表达式) a为对象变量,Animal是类名。 上面语句是判定a是否可以贴Animal标签。如果可以贴则返回true,否则返回false。 在上面的题目中: a instanceof Animal返回  阅读全文
posted @ 2018-08-04 17:15 Borter 阅读(166) 评论(0) 推荐(0)
摘要: 运行时多态的三原则:(应用时为覆盖) 1、对象不变;(改变的是主观认识) 2、对于对象的调用只能限于编译时类型的方法,如调用运行时类型方法报错。 在上面的例子中:Animal a=new Dog();对象a的编译时类型为Animal,运行时类型为dog。 注意:编译时类型一定要为运行时类型的父类(或 阅读全文
posted @ 2018-08-04 16:51 Borter 阅读(742) 评论(0) 推荐(0)
摘要: 多态:多态指的是编译时类型变化,而运行时类型不变。 多态分两种: ① 编译时多态:编译时动态重载; ② 运行时多态:指一个对象可以具有多个类型。 对象是客观的,人对对象的认识是主观的。 例: Animal a=new Dog();查看格式名称; Dog d=(Dog)a。声明父类来引用子类。 (思考 阅读全文
posted @ 2018-08-04 14:41 Borter 阅读(304) 评论(0) 推荐(0)
摘要: Super()表示调用父类的构造方法。 Super()也和this一样必须放在第一行。 This()用于调用本类的构造方法。 如果没有定义构造方法,那么就会调用父类的无参构造方法,即super()。 要养成良好的编程习惯:就是要加上默认的父类无参的构造方法。 思考:可是如果我们没有定义无参的构造方法 阅读全文
posted @ 2018-08-04 14:37 Borter 阅读(151) 评论(0) 推荐(0)
摘要: 当构造一个对象的时候,系统先构造父类对象,再构造子类对象。 构造一个对象的顺序:(注意:构造父类对象的时候也是这几步) ① 递归地构造父类对象; ② 顺序地调用本类成员属性赋初值语句; ③ 本类的构造方法。 阅读全文
posted @ 2018-08-04 14:36 Borter 阅读(351) 评论(0) 推荐(0)
摘要: 对于方法的修饰词,子类方法要比父类的方法范围更加的宽泛。 父类为public,那么子类为private则出现错误。 之所以构造方法先运行父类再运行子类是因为构造方法是无法覆盖的。 以下范围依次由严到宽: private :本类访问; default :表示默认,不仅本类访问,而且是同包可见。 Pro 阅读全文
posted @ 2018-08-04 14:34 Borter 阅读(843) 评论(0) 推荐(0)
摘要: 方法的覆盖(overriding) 方法的重载并不一定是在一个类中:子类可以从父类继承一个方法,也可以定义一个同名异参的方法,也称为overloading。 当子类从父类继承一个无参方法,而又定义了一个同样的无参方法,则子类新写的方法覆盖父类的方法,称为覆盖。(注意返回值类型也必须相同,否则编译出错 阅读全文
posted @ 2018-08-04 14:32 Borter 阅读(2585) 评论(0) 推荐(0)
摘要: 继承: 父类(SuperClass)和 子类(SonClass)。 父类的非私有化属性和方法可以默认继承到子类。 Class Son extends Father{ } 而如果父类中的私有方法被子类调用的话,则编译报错。 父类的构造方法子类不可以继承,更不存在覆盖的问题。(非构造方法可以) 如果子类 阅读全文
posted @ 2018-08-04 14:26 Borter 阅读(918) 评论(0) 推荐(0)
摘要: 封装:使对象的属性尽可能私有,对象的方法尽可能的公开。用private表示此成员属性为该类的私有属性。 Public表示该属性(方法)公开; Private表示该属性(方法)为只有本类内部可以访问(类内部可见)。 (想用private还要用set和get方法供其他方法调用,这样可以保证对属性的访问方 阅读全文
posted @ 2018-08-04 14:24 Borter 阅读(478) 评论(0) 推荐(0)
摘要: This表示当前对象。 Public void printNum(){ Int number=40; System.out.println(this.number); } 此时打印的是实例变量,而非局部变量,即定义在类中而非方法中的变量。 This.number表示实例变量。 谁调用this.num 阅读全文
posted @ 2018-08-04 14:22 Borter 阅读(633) 评论(0) 推荐(0)
摘要: 构造方法也可以实现overloading。例: public void teach(){}; public void teach(int a){}; public void teach(String a){}为三种不同的方法。 Overloading方法是从低向高转。 Byte—short—floa 阅读全文
posted @ 2018-08-04 14:20 Borter 阅读(186) 评论(0) 推荐(0)
摘要: 面向对象方法的重载(overloading)和覆盖(overriding)。 在有些JAVA书籍中将overriding称为重载,overloading称为过载。 Overloading在一个类中可以定义多个同名方法,各个方法的参数表一定不同。但修饰词可能相同,返回值也可能相同。 在程序的编译过程中 阅读全文
posted @ 2018-08-04 14:18 Borter 阅读(274) 评论(0) 推荐(0)
摘要: 可以构造多个构造方法,但多个构造方法的参数表一定不同,参数顺序不同即属于不同的构造方法: public student(string name,int a){ } public student(int a,string name){ } 为两个不同的构造方法。 如果我们未给系统提供一个构造方法,那么 阅读全文
posted @ 2018-08-04 14:16 Borter 阅读(1935) 评论(0) 推荐(0)
摘要: 用类来生成对象的语句: Student s=new Student()。 第一个Student表示这是用Student类进行定义。“Student()”表示调用一个无参数的构造方法。 如果()中有参数,则系统构造对象的过程中调用有参的方法。 此时S称为一个对象变量。 Student s的存储区域存放 阅读全文
posted @ 2018-08-04 14:14 Borter 阅读(580) 评论(0) 推荐(0)
摘要: 类方法中的一类特殊方法:构造方法。 构造方法是当用类生成对象时,系统在生成对象的过程中利用的方法。 注意:构造方法在生成对象的时候会被调用,但并不是构造方法生成了对象。 构造方法没有返回值。格式为:public 方法名。 构造方法的方法名与类名相同。 构造方法是在对象生成的过程中自动调用,不可能利用 阅读全文
posted @ 2018-08-04 14:13 Borter 阅读(201) 评论(0) 推荐(0)
摘要: 书写方法的格式: 修饰符 返回值 方法名 调用过程中 方法体 可能出现的例外 public int/void addNumber(参数) throw Excepion {} 例: public int addNumber(int a,int b){ } 注:方法名中的参数int a,int b为局部 阅读全文
posted @ 2018-08-04 14:11 Borter 阅读(585) 评论(0) 推荐(0)
摘要: 在用面向对象思想开发的过程中,可以复用对象就进行复用,如无法进行复用则开发新的对象。 开发过程是用对个简单的对象的多个简单的方法,来实现复杂的功能 。 从语法上来看,一个类是一个新的数据类型。 在面向对象编程中,除了简单数据类型,就是对象类型。 定义类的格式: class Student{ 代码 } 阅读全文
posted @ 2018-08-04 14:09 Borter 阅读(143) 评论(0) 推荐(0)
摘要: 其次,采用面向对象方法可以使系统各部分各司其职、各尽所能。 对象之间的耦合性一定要低(比如不同硬盘和不同主板之间的关系)。这样才能使每个对象本身做成最好的。 对于对象的要求:高内聚、低耦合,这样容易拼装成为一个系统。 实现高内聚就是要最大限度低提高复用性(复用性好是因为高内聚)。 可复用性是OOP的 阅读全文
posted @ 2018-08-04 14:05 Borter 阅读(170) 评论(0) 推荐(0)
摘要: 为什么要使用面向对象: 首先,面向对象符合人类看待事物的一般规律。 对象的方法的实现细节是屏蔽的,只有对象方法的实现者了解细节。 方法的定义非常重要。方法有参数,也可能有返回值。 注意区分:对象(本身)、对象的实现者、对象的调用者。 分析对象主要从方法开始。 我们通过类来看待对象,类是对象的抽象。 阅读全文
posted @ 2018-08-04 14:02 Borter 阅读(1678) 评论(0) 推荐(0)
摘要: 面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物皆对象) 所有的事物都有两个方面: 有什么(属性):用来描述对象。 能够做什么(方法):告诉外界对象有那些功能。 后者以前者为基础。 大的对象的属性也可以是一个对象。 阅读全文
posted @ 2018-08-04 14:00 Borter 阅读(322) 评论(0) 推荐(0)
摘要: 文件 I/O 问题:(1)对不存在的或者错误的文件进行操作吗?(2)文件以不正确的方式打开吗?(3)文件结束判断不正确吗?(4)没有正确地关闭文件吗? 阅读全文
posted @ 2018-08-04 12:53 Borter 阅读(125) 评论(0) 推荐(0)
摘要: 如果可能的话,使用 PC-Lint、LogiScope 等工具进行代码审查。 阅读全文
posted @ 2018-08-04 12:50 Borter 阅读(271) 评论(0) 推荐(0)
摘要: 把编译器的选择项设置为最严格状态。 阅读全文
posted @ 2018-08-04 12:48 Borter 阅读(364) 评论(0) 推荐(0)
摘要: 尽量不要使用与具体硬件或软件环境关系密切的变量。 阅读全文
posted @ 2018-08-04 12:46 Borter 阅读(208) 评论(0) 推荐(0)
摘要: 尽量使用标准库函数,不要“发明”已经存在的库函数。 阅读全文
posted @ 2018-08-04 12:43 Borter 阅读(161) 评论(0) 推荐(0)
摘要: 如果原有的代码质量比较好,尽量复用它。 但是不要修补很差劲的 代码,应当重新编写。 阅读全文
posted @ 2018-08-04 12:38 Borter 阅读(162) 评论(0) 推荐(0)
摘要: 不要设计面面俱到、非常灵活的数据结构。 阅读全文
posted @ 2018-08-04 12:35 Borter 阅读(389) 评论(0) 推荐(0)
摘要: 避免编写技巧性很高代码 阅读全文
posted @ 2018-08-04 11:50 Borter 阅读(154) 评论(0) 推荐(0)
摘要: 当心文件 I/O 有错误。 阅读全文
posted @ 2018-08-04 11:24 Borter 阅读(223) 评论(0) 推荐(0)
摘要: 当心忘记编写错误处理程序,当心错误处理程序本身有误。 阅读全文
posted @ 2018-08-04 11:14 Borter 阅读(109) 评论(0) 推荐(0)
摘要: 当心变量发生上溢或下溢,数组的下标越界。 阅读全文
posted @ 2018-08-04 11:13 Borter 阅读(152) 评论(0) 推荐(0)
摘要: 当心数据类型转换发生错误。 尽量使用显式的数据类型转换(让人 们知道发生了什么事),避免让编译器轻悄悄地进行隐式的数据类型转换。 阅读全文
posted @ 2018-08-04 11:12 Borter 阅读(267) 评论(0) 推荐(0)
摘要: 当心变量的初值、缺省值错误,或者精度不够。 阅读全文
posted @ 2018-08-04 11:10 Borter 阅读(271) 评论(0) 推荐(0)
摘要: 变量(指针、数组)被创建之后应当及时把它们初始化,以防止把 未被初始化的变量当成右值使用。 阅读全文
posted @ 2018-08-04 11:09 Borter 阅读(405) 评论(0) 推荐(0)
摘要: 当心那些视觉上不易分辨的操作符发生书写错误。 我们经常会把“==”误写成“=”,象“||”、“&&”、“<=”、“>=”这类符号也很 容易发生“丢 1”失误。 然而编译器却不一定能自动指出这类错误。 阅读全文
posted @ 2018-08-04 11:08 Borter 阅读(155) 评论(0) 推荐(0)
摘要: 不要追求紧凑的代码,因为紧凑的代码并不能产生高效的机器码。 阅读全文
posted @ 2018-08-04 11:07 Borter 阅读(226) 评论(0) 推荐(0)
摘要: 有时候时间效率和空间效率可能对立,此时应当分析那个更重要, 作出适当的折衷。 例如多花费一些内存来提高性能。 阅读全文
posted @ 2018-08-04 11:06 Borter 阅读(153) 评论(0) 推荐(0)
摘要: 先优化数据结构和算法,再优化执行代码。 阅读全文
posted @ 2018-08-04 11:05 Borter 阅读(429) 评论(0) 推荐(0)
摘要: 在优化程序的效率时,应当先找出限制效率的“瓶颈”,不要在无关 紧要之处优化。 阅读全文
posted @ 2018-08-04 11:02 Borter 阅读(256) 评论(0) 推荐(0)
摘要: 以提高程序的全局效率为主,提高局部效率为辅。 阅读全文
posted @ 2018-08-04 11:01 Borter 阅读(333) 评论(0) 推荐(0)
摘要: 不要一味地追求程序的效率,应当在满足正确性、可靠性、健壮性、 可读性等质量因素的前提下,设法提高程序的效率。 阅读全文
posted @ 2018-08-04 10:59 Borter 阅读(199) 评论(0) 推荐(0)
摘要: 如果输入参数采用“指针传递”,那么加 const 修饰可以防止意外地改动该指针,起 到保护作用。 阅读全文
posted @ 2018-08-04 10:58 Borter 阅读(177) 评论(0) 推荐(0)
摘要: 若在逻辑上 A 是 B 的“一部分”(a part of) ,则不允许 B 从 A 派生, 而是要用 A 和其它东西组合出 B。 阅读全文
posted @ 2018-08-04 10:57 Borter 阅读(273) 评论(0) 推荐(0)
摘要: 看起来很简单,但是实际应用时可能会有意外,继承的概念在程序 世界与现实世界并不完全相同。 阅读全文
posted @ 2018-08-04 10:56 Borter 阅读(179) 评论(0) 推荐(0)
摘要: 若在逻辑上 B 是 A 的“一种”(a kind of ),则允许 B 继承 A 的功 能和属性。 例如男人(Man)是人(Human)的一种,男孩(Boy)是男人的一种。 那么类 Man 可以从类 Human 派生,类 Boy 可以从类 Man 派生。 阅读全文
posted @ 2018-08-04 10:55 Borter 阅读(176) 评论(0) 推荐(0)
摘要: 如果类 A 和类 B 毫不相关,不可以为了使 B 的功能更多些而让 B 继承 A 的功能和属性。 不要觉得“白吃白不吃”,让一个好端端的健壮青年无缘无故地吃人参补身体。 阅读全文
posted @ 2018-08-04 10:53 Borter 阅读(162) 评论(0) 推荐(0)