- switc 中用于判断的表达式,可以用那些数据类型? 答案:可以是 char,byte,short,int, 枚举,但是不可一世String,long等其他类型;
- char 型变量中能不能存储一个中文汉字?为什么? 答案:java里采用了unicode编码格式,unicode编码中一个char型占2个字节,而一个汉字也是占用2个字节,所以可以存储中文汉字;
- 静态变量和实列变量的区别? 答案:在语法定义的区别上:静态变量需要加static关键字,而实列变量则不加;在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中好的实例变量才会被分配空间,这个使用这个实例变量,静态变量不属于某个实例对象,而属于类,所以也称为类变量,不用创建任何实力对象,静态变量就会被分配空间,就能被使用,
- 是否可以让一个用static方法内部发出的非static方法的调用?答案:不可以,因为非static方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用,而static方法调用是不需要创建对象,可以直接调用。也就是说,当一个static方法被调用时,可能还没有创建人和实例对象,如果从一个sattic方法发出对非static放法的调用,那个非static方法是关联到哪个对象上呢? 这个逻辑无法成立,所以一个static方法内部发出对非static方法的调用。
- Integer(包装类)与int(基本数据类型)的区别? 答案:(1) int是基本数据类型,Integer是包装类;(2) int的默认值是0,Integer的默认值是null;(3) jdk 1.5 之后支持自动拆箱(包装类自动转基本数据类型) 和自动装箱(基本数据类型自动转化为包装类);例如: Integer a=1; int i=a;
- Overload和Override的区别。参数列表相同,返回值不同的方法,是否是重载方法?
重载是指在一个类里,方法名相同,参数不同;
重写是指在类继承父类,子类重写父类中的同名(同参数)方法,也就是覆盖了父类的方法; 不是!因为重载要 求参数列表不同!
7. 接口是否可以继承接口?抽象类是否可以实现(implements)? 抽象类是否可以继承具体类(concrete class)?抽象类
答案:接口可以继承接口,抽象类可以实现接口,抽象类具体类。
住 抽象类和普通类的唯一区别就是不能创建实例对象和允许有abstract方法;
场景:当一个方法有多种实现方式,或者预留后续使用的时候就乐意定义抽象类,并把方法地步故意成抽象方法。适配器模式中就用到了抽象类。
8.面向对象有哪三大特性?
(1)面向对象有四大特性! 分别是:封装,继承,多态,抽象;
封装:面向对象的封装就是把描述一个对象的属性和行为的代码封装在一个类中,有些属性是不希望公开的,或者说被其他对象访问的,所以我们使用private 修饰该属性,使其隐藏起来;类中提供给了方法(public修饰)常用的是 get ,set方法,可以操着这些被隐藏的属性,其他类可以通过调用这些方法,改变隐藏属性的值!
(封装是保证软件部件具有优良的模块的基础,封装的目标就是要实现软件部件的“高内聚,低耦合”,防止程序相互依赖性而带来的变动影响。在面向对象的编程语言中,对象是封装的最基本单位,面向对象的封装比传统语言的封装更具为清晰,更为有力。)
继承:在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,使extends关键字实现继承;子类中可以加入若干新内容,或修改原来的方法使之更合适特殊的需要,这就是继承。继承是子类自动共享父类数据和方法的机制,这是类之间的一种关系,提高了代码的可重用性和可扩展性。
多态:多态就是在声明时使用父类,在实现或调用时使用具体的子类;即使不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择运行状态,这就是多态性,多态增强了软件的灵活性和扩展性。这里可以举个例子,比如生命时使用的是动物类,调用时传递的是一个猫类(动物类的子类)的对象,具体执行父类里 动物————吃的方法时,实际执行的是猫————吃的方法;
9 abstract class和interface有什么区别?
答案:(1)抽象类关键字是 abstract ,而接口的关键字是interface
(2)抽象类里面可以有普通方法,而在接口中的方法全部都是抽象的(jdk1.8 开始接口中可以有静态方法);
(3)接口中的变量都是使用 public static final 修饰的,即是常量;
(4)在应用范围上来说,接口汪汪在程序设计的时候,用来定义程序模块的功能,方便各个模块协同工作;抽象类是对相似类惊醒抽象,形成一个抽象的父类可供重用!
(5)接口和抽象类都不能被实例化;
10、String 和StringBuffer,StringBuilder的区别?
(1) String是个不可变长度的字符串,而StringBuffer,StringBuilder是个可变长度的字符串;
(2)在String类进行操作的时候(例如增加字符串),实际上是在内存中产生了一个新的String对象;而StringBuffer是给原对象增加字符,不是新创建一个对象;
(3) String 是线程安全的,StringBuffer是线程安全的,StringBuilder是线程不安全的(效率最高);