A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


1、面向对象的特征有哪些方面?

        抽象,继承,封装,多态

2、访问修饰符public,private,protected,以及不写(默认)时的区别?

        区别如下:

作用域       当前类          同包          子类    其他

public         √        √       √      √

protected      √        √       √      ×

default(不写)√        √       ×      ×

private        √        ×       ×      ×

3、String 是最基本的数据类型吗?

        不是。Java中的基本数据类型只有8个:byte、short、int、long、float、double、char、boolean;

4、float f=3.4;是否正确?

        不正确。3.4是双精度数,将双精度型(double)赋值给浮点型(float)属于下转型(down-casting,也称为窄化)
会造成精度损失,因此需要强制类型转换float f =(float)3.4; 或者写成float f =3.4F;。

5、short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗?

        对于short s1 = 1; s1 = s1 + 1;由于1是int类型,因此s1+1运算结果也是int 型,需要强制转换类型才能赋值给
short型。而short s1 = 1; s1 += 1;可以正确编译,因为s1+= 1;相当于s1 = (short)(s1 + 1);其中有隐含的强制类型
转换。

6、String str = new String(“hello”);

        上面的语句中str放在栈上,用new创建出来的字符串对象放在堆上,而“hello”这个字面量放在静态存储区。

7、Math.round(11.5) 等于多少? Math.round(-11.5)等于多少?

        Math.round(11.5)的返回值是12,Math.round(-11.5)的返回值是-11。四舍五入的原理是在参数上加0.5然后进行下
取整。

8、swtich 是否能作用在byte 上,是否能作用在long 上,是否能作用在String上?

        从JDK 1.7版开始,还可以是字符串(String)。长整型(long)是不可以的。

9、数组有没有length()方法?String 有没有length()方法?

        数组没有length()方法,有length 的属性。String 有length()方法。JavaScript中,获得字符串的长度是通过
length属性得到的,这一点容易和Java混淆。

10、在Java 中,如何跳出当前的多重嵌套循环?

        在最外层循环前加一个标记如A,然后用break A;可以跳出多重循环。

10 个回复

倒序浏览
11、构造器(constructor)是否可被重写(override)?

        构造器不能被继承,因此不能被重写,但可以被重载。

12、两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?

答:不对,如果两个对象x和y满足x.equals(y) == true,它们的哈希码(hash code)应当相同。Java对于eqauls方法和
hashCode方法是这样规定的:(1)如果两个对象相同(equals方法返回true),那么它们的hashCode值一定要相同;(2)如果
两个对象的hashCode相同,它们并不一定相同。

13、是否可以继承String 类?

        String 类是final类,不可以被继承。

14、重载(Overload)和重写(Override)的区别。重载的方法能否根据返回类型进行区分?

        方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。重
载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为重载;重写
发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的返回类型,比父类被重写方法更好访问,不能
比父类被重写方法声明更多的异常。

14附、为什么不能根据返回类型来区分重载?

        因为在方法被调用时,无法区分到底是调用的哪个方法。如 ?=X.function(),jvm不知道你要获得的值是什么。

15、抽象类(abstract class)和接口(interface)有什么异同?

        抽象类和接口都不能够实例化,但可以定义抽象类和接口类型的引用。一个类如果继承了某个抽象类或者实现了某个接
口都需要对其中的抽象方法全部进行实现,否则该类仍然需要被声明为抽象类。接口比抽象类更加抽象,因为抽象类中可以定义
构造器,可以有抽象方法和具体方法,而接口中不能定义构造器而且其中的方法全部都是抽象方法。抽象类中的成员可以是
private、默认、protected、public的,而接口中的成员全都是public的。抽象类中可以定义成员变量,而接口中定义的成员变
量实际上都是常量。有抽象方法的类必须被声明为抽象类,而抽象类未必要有抽象方法。

16、接口是否可继承(extends)接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)?

        接口可以继承接口。抽象类可以实现(implements)接口,抽象类可继承具体类,但前提是具体类必须有明确的构造函数。

17、一个“.java”源文件中是否可以包含多个类(不是内部类)?有什么限制?

        可以,但一个源文件中最多只能有一个公开类(public class)而且文件名必须和公开类的类名完全保持一致。

18、Java 中的final关键字有哪些用法?

        (1)修饰类:表示该类不能被继承;(2)修饰方法:表示方法不能被重写;(3)修饰变量:表示变量只能一次赋值以后值不
能被修改(常量)。

19、指出下面程序的运行结果:

class A{  
  
    static{  
        System.out.print("1");  
    }  
  
    public A(){  
        System.out.print("2");  
    }  
}  
  
class B extends A{  
  
    static{  
        System.out.print("a");  
    }  
  
    public B(){  
        System.out.print("b");  
    }  
}  
  
public class Hello{  
  
    public static void main(String[] args){  
        A ab = new B();  
        ab = new B();  
    }  
  
}  

答:执行结果:1a2b2b。创建对象时构造器的调用顺序是:先初始化静态成员,然后调用父类构造器,再初始化非静态成员,最
后调用自身构造器。

20、数据类型之间的转换:

1)如何将字符串转换为基本数据类型?

2)如何将基本数据类型转换为字符串?

答:

1)调用基本数据类型对应的包装类中的方法parseXXX(String)或valueOf(String)即可返回相应基本类型;

2)一种方法是将基本数据类型与空字符串(””)连接(+)即可获得其所对应的字符串;另一种方法是调用String 类中的
valueOf(…)方法返回相应字符串。

回复 使用道具 举报
21、怎样将GB2312编码的字符串转换为ISO-8859-1编码的字符串?

        代码如下所示:

String s1 = "你好";

String s2 = newString(s1.getBytes("GB2312"), "ISO-8859-1");

22、比较一下Java 和JavaSciprt。

        1)基于对象和面向对象:Java是一种真正的面向对象的语言,即使是开发简单的程序,必须设计对象;JavaScript
是种脚本语言,它可以用来制作与网络无关的,与用户交互作用的复杂软件。它是一种基于对象(Object-Based)和事件驱动
(Event-Driven)的编程语言。因而它本身提供了非常丰富的内部对象供设计人员使用;
        2)解释和编译:Java 的源代码在执行之前,必须经过编译;JavaScript 是一种解释性编程语言,其源代码不需经过编译,
由浏览器解释执行;
        3)强类型变量和类型弱变量:Java采用强类型变量检查,即所有变量在编译之前必须作声明;JavaScript中变量声明,采用
其弱类型。即变量在使用前不需作声明,而是解释器在运行时检查其数据类型;
        4)代码格式不一样。

23、try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后?

答:会执行,在方法返回调用者前执行。Java允许在finally中改变返回值的做法是不好的,因为如果存在finally代码块,try中的
return语句不会立马返回调用者,而是记录下返回值待finally代码块执行完毕之后再向调用者返回其值,然后如果在finally中修
改了返回值,这会对程序造成很大的困扰,

24、final, finally, finalize 的区别?

        final:修饰符(关键字)有三种用法:如果一个类被声明为final,意味着它不能再派生出新的子类,即不能被继承,因此它
和abstract是反义词。将变量声明为final,可以保证它们在使用中不被改变,被声明为final 的变量必须在声明时给定初值,而在
以后的引用中只能读取不可修改。被声明为final 的方法也同样只能使用,不能在子类中被重写。
        finally:通常放在try…catch的
后面构造总是执行代码块,这就意味着程序无论正常执行还是发生异常,这里的代码只要JVM不关闭都能执行,可以将释放外部资源
的代码写在finally块中。
        finalize:Object类中定义的方法,Java中允许使用finalize() 方法在垃圾收集器将对象从内存中清除
出去之前做必要的清理工作。这个方法是由垃圾收集器在销毁对象时调用的,通过重写finalize() 方法可以整理系统资源或者执行
其他清理工作。

25、9个内置对象:request、response、session、application、out、pagecontext、config、page、exception

26、4个域:pageContext(称之为page域)
             request(称之为request域)
         session(称之为session域)
           servletContext(称之为application域)

27、“static”关键字表明一个成员变量或者是成员方法可以在没有所属的类的实例变量的情况下被访问。

28、接口和抽象类的区别是什么?

Java提供和支持创建抽象类和接口。它们的实现有共同点,不同点在于:

接口中所有的方法隐含的都是抽象的。而抽象类则可以同时包含抽象和非抽象的方法。
类可以实现很多个接口,但是只能继承一个抽象类
类如果要实现一个接口,它必须要实现接口声明的所有方法。但是,类可以不实现抽象类声明的所有方法,当然,在这种情况下,
类也必须得声明成是抽象的。
抽象类可以在不提供接口方法实现的情况下实现接口。
Java接口中声明的变量默认都是final的。抽象类可以包含非final的变量。
Java接口中的成员函数默认是public的。抽象类的成员函数可以是private,protected或者是public。
接口是绝对抽象的,不可以被实例化。抽象类也不可以被实例化,但是,如果它包含main方法的话是可以被调用的。

29、什么是死锁(deadlock)?

两个线程都在等待对方执行完毕才能继续往下执行的时候就发生了死锁。结果就是两个进程都陷入了无限的等待中。
30、Java集合类框架的基本接口有哪些?
Collection:代表一组对象,每一个对象都是它的子元素。
Set:不包含重复元素的Collection。
List:有顺序的collection,并且可以包含重复元素。
Map:可以把键(key)映射到值(value)的对象,键不能重复。
回复 使用道具 举报
先mark了。
回复 使用道具 举报
赞一个...........
回复 使用道具 举报
samge 来自手机 中级黑马 2015-11-4 00:50:24
地板
谢谢楼主分享的这些知识点。
回复 使用道具 举报
很不错啊,学习了。
回复 使用道具 举报
lidage 初级黑马 2015-11-4 10:46:19
8#
谢谢楼主分享的这些知识点
回复 使用道具 举报
谢谢楼主分享
回复 使用道具 举报
mark一下
回复 使用道具 举报
谢谢楼主分享!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马