Java学习
toby王
这个作者很懒,什么都没留下…
展开
-
Class对象
vv转载 2016-11-03 19:32:56 · 177 阅读 · 0 评论 -
违例准则
解决问题并再次调用造成违例的方法。平息事态的发展,并在不重新尝试方法的前提下继续。计算另一些结果,而不是希望方法返回的结果。在当前环境中尽可能解决问题,以及将相同的违例重新“掷”出一个更高级的环境。在当前环境中尽可能解决问题,以及将不同的违例重新“掷”出一个更高级的环境。中止程序执行。简化编码。若违例方案使事情变得更加复杂,那不如不用。使自己的库和程序变得更加安全。这既是一种短期投资(转载 2016-11-02 21:05:21 · 198 阅读 · 0 评论 -
finally的注意事项一
1.即使违例不在当前的catch从句里捕获,finally都会在违例控制机制转到更高级别搜索一个控制器之前得以执行。 如下:package com.cqdxwjd.chapter9;class Ex extends Exception {}public class AlwaysFinally { public static void main(String[] args) {转载 2016-11-02 20:33:11 · 206 阅读 · 0 评论 -
标准Java违例
Java包含一个名为Throwable的类,它对可以作为违例“掷”出的所有东西进行了描述。Throwable对象有两种常规类型。其中,Error代表编译期和系统错误,我们一般不必特意捕获它们。Exception是可以从任何标准Java库的类方法中掷出的基本类型。此外,它们也可以从我们自己的方法以及运行期偶发事件中掷出。Exception是程序能捕获的基本违例。其他违例都是从它衍生出去的。违例的名字代转载 2016-11-02 19:57:13 · 195 阅读 · 0 评论 -
Java Iterator的remove方法
remove()方法移除指针当前指向的元素,指针并不会移动。所以一次迭代中remove()方法只能调用一次,如果调用两次就会报IllegalStateException异常。如下图正因为如此,所以remove()方法一般配合next()方法使用。示例代码:package com.cqdxwjd.chapter8;import java.util.ArrayList;import java.util原创 2016-11-01 20:26:28 · 632 阅读 · 0 评论 -
线程同步和异步
线程同步: 多个线程同时访问同一资源(共享数据),等待资源访问结束,浪费时间,效率低。例如正在写的数据以后可能被另一个线程读取,或者正在读取的数据已经被另一个线程写过了,那么这些数据就是共享的,这时应该使用线程同步。线程异步:访问资源时在空闲等待时同时访问其他资源,效率比较高。例如,当调用一个需要花费很长时间来执行的方法,并且不希望等待方法的返回时,就应该使用线程异步。转载 2016-11-01 19:03:39 · 196 阅读 · 0 评论 -
散列表中以自己的类为键
为了在散列表中将自己的类作为键使用,必须同时覆盖hashCode()和equals()。 看一个例子:package com.cqdxwjd.chapter8;import java.util.Hashtable;class Groundhog { int ghNumber; Groundhog(int n) { ghNumber = n; }}class转载 2016-10-31 06:24:55 · 214 阅读 · 0 评论 -
jdk8导包问题
个人感觉jdk8还有bug,有时程序中需要的包明明可以在jre system library中找到,但在类中导包却报错。 如图: 换成jdk7以后错误消失。原创 2016-10-29 21:31:59 · 497 阅读 · 0 评论 -
数组中随机添加不重复元素
举例:现在我们要创建一个配方,有很多香料可供我们选择。为了按随机顺序创建很多配方,需要保证以前出现过的一次随机选择(香料)不会再次出现。 为了达到目的,可以使用无限wihle循环,不断的做出随机选择,直到发现未在picks数组中出现过的一个元素为止(当然也可以进行字符串比较,检查随机选择是否在results数组中出现过,但效率比较低)完整代码:public class IceCream {原创 2016-10-29 20:12:37 · 1242 阅读 · 0 评论 -
运行时异常与普通异常
Throwable 是所有 Java 程序中错误处理的父类 ,有两种子类: Error 和 Exception 。Error :表示由 JVM 所侦测到的无法预期的错误,由于这是属于 JVM 层次的严重错误 ,导致 JVM 无法继续执行,因此,这是不可捕捉到的,无法采取任何恢复的操作,顶多只能显示错误信息。Exception :表示可恢复的例外,这是可捕捉到的。 Java 提供了两类主要的异常 :转载 2016-10-29 19:05:04 · 469 阅读 · 0 评论 -
构造器内部的多态方法
设计构造器的规则: 用尽可能简单的方法使对象进入就绪状态;如果可能,避免调用任何方法。 例子abstract class Glyph { abstract void draw(); Glyph() { System.out.println("Glyph() before draw()"); draw(); System.out.pri原创 2016-10-28 21:17:36 · 230 阅读 · 0 评论 -
用string类构造器创建对象
String str=new String(“abc”); 紧接着这段代码之后的往往是这个问题,那就是这行代码究竟创建了几个String对象呢?相 信大家对这道题并不陌生,答案也是众所周知的,2个。接下来我们就从这道题展开,一起 回顾一下与创建String对象相关的一些JAVA知识。 我们可以把上面这行代码分成String str、=、”abc”和new String()四部分来看待。St转载 2016-10-28 20:44:39 · 461 阅读 · 0 评论 -
继承中构造器调用顺序
构造器调用顺序1.从根部层层调用基础类构造器。2.按声明顺序调用成员初始化模块。3.调用衍生类构造器的主体。原创 2016-10-27 19:46:48 · 498 阅读 · 0 评论 -
使类能够克隆的步骤
实现Cloneable接口覆盖clone()在自己的clone()中调用super.clone()在自己的clone()中捕获异常转载 2016-11-04 21:46:07 · 201 阅读 · 0 评论 -
详解Java中的clone方法
clone顾名思义就是复制, 在Java语言中, clone方法被对象调用,所以会复制对象。所谓的复制对象,首先要分配一个和源对象同样大小的空间,在这个空间中创建一个新的对象。那么在java语言中,有几种方式可以创建对象呢? 1 使用new操作符创建一个对象 2 使用clone方法复制一个对象 那么这两种方式有什么相同和不同呢? new操作符的本意是分配内存。程序执行到new操作符时, 首先转载 2016-10-28 20:50:37 · 190 阅读 · 0 评论 -
反射和RTTI的区别
通过反射同一个未知类型的对象打交道时,JVM只是简单的检查那个对象,并调查它从属于哪个特定的类(就象以前的RTTI那样)。但在这之后,在我们做任何其他事情之前,Class对象必须载入。因此,用于那种特定类型的.class文件必须能由JVM调用(要么在本地机器内,要么可以通过网络取得)。所以RTTI和反射之间的唯一区别就是对RTTI来说,编译器会在编译期间打开和检查.class文件。换句话说,我们可以转载 2016-11-03 20:58:52 · 336 阅读 · 0 评论 -
RTTI在Java中的三种存在形式
1.经典造型,如“Shape”,它用RTTI确保造型的正确性,并在遇到一个失败的造型后产生一个ClassCastException违例。 2.代表对象类型的Class对象。可查询Class对象,获取有用的运行期资料。 3. instanceof 告诉我们对象是不是一个特定类型的实例。它会返回一个布尔值,以便以问题的形式使用,就象下面这样:if(x instanceof Dog)((Dog)转载 2016-11-03 20:02:59 · 349 阅读 · 0 评论 -
什么是多态?为什么用多态?有什么好处?
多态可以分为变量的多态,方法的多态,类的多态.我这里强调的是类的多态,这是我们在以后的工作中经常回用到的 首先,有这样一个系统:有个学生工作从达内毕业了,作的还不错.买了辆捷达汽车.这个系统应该如何设计呢? 按照OO的思想,我们会抽象出来一个类,表示捷达汽车,其中有个run()方法 public class JD{ public void run(){ System.out.转载 2016-10-28 20:49:12 · 277 阅读 · 0 评论