1.封装(对应可扩展性):隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别。封装是通过访问控制符(publicprotectedprivate)来实现。一个类就可看成一个封装。2.继承(重用性和扩展性):子类继承父类,可以继承父类的方法和属性。可以对父类方向进行覆盖(实现了多态)。...
throw:throw语句用在方法体内,表示抛出异常,由方法体内的语句处理。throw是具体向外抛出异常的动作,所以它抛出的是一个异常实例,执行throw一定是抛出了某种异常。throws:throws语句是用在方法声明后面,表示如果抛出异常,由该方法的调用者来进行异常的处理。throws主要是声明这个方法会抛...
我们来看以下的代码:publicvoidtestMethod(){doSome();}publicvoiddoSome(){}publicintdoSome(){return1;}在Java语言中,调用一个方法,即使这个方法有返回值,我们也可以不接收这个返回值,例如以上两个方法doSome(),在testMet...
方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。重载发生在一个类中,同名的方法如果有不同的参数列表(类型不同、个数不同、顺序不同)则视为重载。重写发生在子类与父类之间,重写要求子类重写之后的方法与父类被重写方法有相同的返回类型,比父类被重写方法更好访问,不能...
在最外层循环前加一个标记如outfor,然后用breakoutfor;可以跳出多重循环。例如以下代码:publicclassTestBreak{publicstaticvoidmain(String[]args){outfor:for(inti=0;i<10;i++){for(intj=0;j<10...
final修饰的变量,一旦赋值,不可重新赋值;final修饰的方法无法被覆盖;final修饰的实例变量,必须手动赋值,不能采用系统默认值;final修饰的实例变量,一般和static联用,用来声明常量;注意:final不能和abstract关键字联合使用。总之,final表示最终的、不可变的。
因为只有当字符串是不可变的,字符串池才有可能实现。字符串池的实现可以在运行时节约很多heap空间,因为不同的字符串变量都指向池中的同一个字符串。但如果字符串是可变的,那么Stringinterning将不能实现,因为这样的话,如果变量改变了它的值,那么其它指向这个值的变量的值也会一起改变。如果字符串是可变的,那...
存储:HashMap运行key和value为null,而Hashtable不允许。线程安全:Hashtable是线程安全的,而HashMap是非线程安全的。推荐使用:在Hashtable的类注释可以看到,Hashtable是保留类不建议使用,推荐在单线程环境下使用HashMap替代,如果需要多线程使用则用Con...
BIO:BlockIO同步阻塞式IO,就是我们平常使用的传统IO,它的特点是模式简单使用方便,并发处理能力低。NIO:NonIO同步非阻塞IO,是传统IO的升级,客户端和服务器端通过Channel(通道)通讯,实现了多路复用。AIO:AsynchronousIO是NIO的升级,也叫NIO2,实现了异步非堵塞IO...
不需要,抽象类不一定非要有抽象方法。示例代码:abstractclassCat{publicstaticvoidsayHi(){System.out.println("hi~");}}上面代码,抽象类并没有抽象方法但完全可以正常运行。