i++和++i的区别?
答:单独使用的时候,在前在后都一样。参与运算的时候,在前是先自加,然后再用这个结果参与运算。在后是先参与运算,再进行自加
逻辑或 " | " 和 短路或 " || "有什么区别?
答:|不管前面的结果是真是假后面的都会运算,||前面为真后面的不参与运算。但是结果是一样的。
switch语句的表达式可以放什么?
答:byte、short、int、char。JDK1.5以后可以使用枚举,1.7之后可以使用String。
switch中break可以省略吗?省略了会发生什么现象?default可以什么时候执行吗?
答:break在最后一个可以省略,其他的不要省略,省略了会继续执行下面的语句,这种现象叫case穿透现象。Default在所有case都满足的情况下执行。
局部变量和成员变量的区别:
(1)定义位置不同:成员变量定义在类中方法外,局部变量定义在方法内。
(2)作用范围不同:成员变量在整个类中有效,局部变量在所在的方法有效。
(3)内存位置不同:成员变量随着对象的创建存放在堆内存(都是new出来的)中,局部变量存放在栈内存中。
(4)初始化值不同:成员变量是有默认的初始化的值的;局部变量不赋值不能用。
(5)生命周期不同:成员变量随着对象的存在而存在,随着对象的消失而消失;局部变量随着方法的调用而存在,方法调用完毕而消失。
子类都不可以继承到父类的什么?java可以多继承么?
答:父类中被private修饰的成员不可以被继承到,java不支持多继承,支持多层继承。
this关键字实现了什么功能?
答:(1)区别局部变量和成员变量(2)代表本类对象的引用(3)也可以用于构造方法的调用
final修饰的变量、方法、和类有什么特点?
(1)final修饰的变量只能赋值一次,不能发生改变,如果修饰的基本类型,是其值不能发生改变,如果修饰的引用数据类型,是地址值不能发生改变;
(2)final修饰的方法不能被重写;
(3)final修饰的类不能被继承,也称最终类。
接口中的成员的特点?
答:都是常量,public static final ;方法都是抽象方法,public abstract;没有构造方法。
接口和抽象类的区别?
(1)成员的特点:抽象类可以有变量、常量、构造方法、一般方法、抽象方法;接口有且只能有常量和抽象方法。
(2)关系特点:类与类支持单继承,不能多继承,但是能够多层次继承,类与接口是实现关系,一个类能实现多个接口,一个类继承 一个类的同时能实现多个接口;接口与接口之间能单继承,也能多继承;
==和equals的区别?
答:“==”是比较运算符,既能比较基本数据类型,又能比较引用数据类型。基本数据类型比较的是数值,引用数据类型比较的是地址值。
equals是一个方法,只能比较引用数据类型。所有的类都会继承Object的equals方法。重写equals方法比较的是对象的内容,如果没有重写将调用Object的equals方法,比较的是地址值。
String 和int直接的转换?
答:将int类型转为String类型的方法:(1)基本数据类型+“”(2)Integer.toString(int num)(3)String.valueOf(int i)
将String转为int:Integer.parseInt(String s)
HashSet怎么保证元素唯一的?先比较equals还是HashCode?
答:同过存入元素的HashCode和equals方法。先比较Hash值。
List取出元素的方法?Set取出元素的方法?Map取出元素的方法?
(1)list取出元素的方法:普通for,高级for,迭代器
(2)Set取出元素的方法: 高级for,迭代器。
(3)Map取出元素的方法,entrySet,keySet,通过keySet取出Value的方法value = get(key);
throw和throws的区别?
答:throws是在方法声明后面,用来声明异常,后面跟的异常类名;可以跟多个异常类名,用逗号隔开;表示抛出异常,需要由调用者处理。
Throw定义在方法体内,跟的异常对象名;只能跟一个异常对象。
子父类间异常的注意事项?
答:(1)子类继承父类时,父类方法抛出了异常,子类重写该方法时只能抛出相同的异常或者该异常的子类。
(2)如果父类抛出了多个异常,子类在重写方法时只能抛出相同的异常或者他的子集,不能抛出父类没有的异常。
(3)如果父类没有抛出异常,子类重写该方法时不能抛出异常。如果子类出现了异常,只能进行try处理,不能抛出。
在try{}catch{}finally{}的那一部分关闭流,为什么?
答:在finally中,因为finally一定会执行。
线程的两种实现 方式的区别?
答:
(1)继承Thread类:好处是:因为是继承,代码简单,能够直接使用Thread类的方法。确定是:扩展性比较差,因为继承了Thread类,不能再继承其他的类。
(2)实现Runnable接口:好处是扩展性比较强。缺点时:代码比较冗余,因为不是继承Thread类,无法直接使用thread中的方法。
继承Thread类如何实现数据共享?
(1)定义共享数据为类变量:static修饰;
(2)定义在同步代码块中,或者同步函数中。
sleep和wait的区别?
(1)sleep是让线程睡眠,必须给相应的睡眠时间,不需要唤醒,时间到了会自动醒来,休眠时不放弃Cpu的执行权。是Thread的方法
(2)wait的是让线程等待,可以传参也可以不传参,传参是在指定的时间后等待,需要被唤醒。等待的时候放弃cpu的执行权。是Object的方法
?抽象类和接口的区别:(问的比较多,概念性的问题)?
1:抽象类只能被继承,而且只能单继承。
类都是单继承,类和类是继承关系,接口与接口也是继承关系?
接口需要被实现,而且可以多实现。?
类实现接口时可以多实现 在implements后用逗号把接分开;?
2:抽象类中可以定义非抽象方法,子类可以直接继承使用。?
接口中都是抽象方法,需要子类去实现后使用。
JDK1.8中接口可以定义有方法体的方法,接口中的方法默认都是public修饰
常量都是 public static final 修饰
3:抽象类与子类的关系是??is?a?关系。?
接口与实现类的关系是?like?a?关系。?
4:抽象类的成员修饰符可以自定义。?
接口中的成员修饰符是固定的,
方法是public
变量 public static final????
多?态★★★★★(面向对象特征之一):函数本身就具备多态性,某一种事物有不同的具体的体现。?
体现:父类引用或者接口的引用指向了自己的子类对象。//Animal?a?=?new?Cat();?
多态的好处:提高了程序的扩展性。?
多态的弊端:当父类引用指向子类对象时,虽然提高了扩展性,但是只能访问父类中具备的方法,不可以访问子类中特有的方法。(前期不能使用后期产生的功能,即访问的局限性)?
多态的前提:?
1:必须要有关系,比如继承、或者实现。
?2:通常会有覆盖操作。??
3:父类引用指向子类对象
|