传智播客旗下技术交流社区北京校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Mr.KevinヾY1n 中级黑马   /  2017-1-12 00:11  /  389 人查看  /  8 人回复  /   8 人收藏 保留作者信息 禁止商业使用(站长自定义文字)

1.说明Java中String  str=null与String  str=""的区别?
    String str = null 表示声明了一个String对象的引用str,但是没有为其分配内存空间。
    String str = "" 表示创建了一个长度等于0的空字符串,并在内存中为其分配了内存空间。
String str = new String("tw"); str在内存中有两个对象,1.堆内存有一个 new Sting 2.常量池中有一个字符串。

2、使用运算符"= ="和方法equals() 进行比较对象的区别?
    使用"= ="算符比较基本数据类型时,比较的是值相等;使用"=="算符比较对象时,比较的是内存地址和内容。
    使用equals()方法 比较对象时,比较的是对象的内容,与地址无关,如果没有重写equals()方法就直接调用的是Object的equals()方法。
"=="比较的是外在和内涵;equals()比较的是外在。用博大精深的中文讲就是:一个相同,一个相似。

3、接口和抽象类有何区别?
   (1)成员特点:
    构造方法:接口没有构造方法;抽象类有构造方法。
    成员变量:接口中只有常量;抽象类中可以是常量,也可以是变量。
   成员方法:接口中只有抽象方法;抽象类中既有抽象方法,也有非抽象方法。
   (2)关系特点:
    类与类:类与类之间只有单继承,可以有多层继承。
   类与接口:类与接口之间是实现关系,可以单实现,也可以多实现。
   接口与接口:接口与接口之间是继承关系,可以单继承,也可以多继承。
   (3)设计理念:
    接口对应的设计模式是简单工厂设计模式,它被实现,这个接口中定义的是整个体现的扩展内容,体现:like a。
    抽象类对象的设计模式是模板设计模式,它被继承,这个类中定义的是整体体现的共性内容,显现is a。
  小编的理解:抽象类与接口类比为一个人的亲爹和干爹,亲爹血浓于水,感情深,爱你发自内心;干爹各种机缘认来的(中国式干爹你懂得)。
4、简述方法的重写与重载
    重写是指重新实现基类中的方法。在运行过程中,如果将子类创建的对象赋值给子类的引用或父类的引用,则无论通过哪个类型的引用,真正调用的方法都将是在子类中重写的方法。 如果希望调用父类中的方法,则需要通过父类创建类的实例,然后通过该实例才能访问父类定义的方法。重写方法时实现多态的一个重要表现。
    在Java中,一个类的内部可以定义多个同名的方法,但是它们的方法参数要有所不同。重写的是与父类同名的方法,与返回值有关。重载是同名方法,与返回值无关,与参数有关,如:个数、类型、排列。
重写注意事项:
(1)父类中的私有方法不可以被重写
(2)子类方法访问权限一定要大于父类的访问权限
(3)静态的方法只能被静态的方法重写,这个其实不能算对象的关系。

5、final、finally、finallize有何区别?
    final表示一个修饰符,如果用它来修饰一个类,则该类是不能继承的;如果用它来修饰一个变量,则该变量一旦赋值之后就不能再修改;如果用它来修饰一个方法,则该方法不能够被重写。
    finally用于异常处理,它用来修饰一个代码块,即使前面的代码处理异常,该代码块中的代码也会执行。它通常用于释放资源。finally代码块之前有调用System.exit()方法的话,finally里面的代码就不会执行。
    finallize表示Object类中定义的一个方法,他可以重写,用于回收资源。
6、编程计算3乘8等于几,什么方法效率更高?
     位运算的方法效率更高。编程运算其实质是二进制的运算,运用位运算的方法移动后补位即可得结果,比一般的3*8更高效。
7、不借用第三方变量,互换两个变量。
          n=11,m=3
     (2)n=n^m;
           m=n^m;//(n^m)^m一个数异或另一个数两次,还是得原来那个数
            n=n^m//n^(n^m)

小编强力推荐第二种方法,这是提升逼格的强劲手段。当面试官问你这个问题,你跟他拓展到位移运算,你的背后就会出现万丈光芒,那时你就会神一样存在在面试官的心里。

8、传统for和高级for有什么区别呢?
对集合进行遍历。
只能获取集合元素,但是不能对集合进行操作。
迭代器除了遍历,还可以进行remove集合中元素的动作。
如果是用ListIterator,还可以在遍历过程中进行增删改查的动作。
高级for有一个局限性,必须要有被遍历的目标。
建议在遍历数组的时候,还是希望是用传统for。因为传统for可以定义角标。
    1.增强for循环和iterator遍历的效果是一样的,也就说增强for循环的内部也就是调用iteratoer实现的(可以查看编译后的文件),但是增强for循环 有些缺点,例如不能在增强循环里动态的删除集合内容。不能获取下标等。
    2.ArrayList由于使用数组实现,因此下标明确,最好使用普通循环。
    3.而对于 LinkedList由于获取一个元素,要从头开始向后找,因此建议使用 增强for循环,也就是iterator。

9、Collection和Colections的区别是什么?
   Collection是一个接口,它是List、Set、Queue等接口的父接口。在这个接口中,定义了集合类中通用的方法。
    Collections是独立出来去专门操作Collection接口下实体类的工具类。

10、面向对象和面向过程的理解
面向对象时相对面向过程而言的。比如说:人坐地铁去上班。人面向地铁这个对象,地铁拥有运输的功能,人通过地铁调用这个功能,只重结果,不重于过程。面向过程就如我们开门,锁孔对齐,门轴转动,门才开了,相对于结果,侧重于过程。
曾经跟朋友聊对面向对象,我说就像搭积木,找到需要的,一个一个往上累;她说这就是JAVA方便之处。
(1)面向过程是以函数为基础,完成各种操作,强调的是过程,例如:C语言;
(2)面向对象以对象为基础,完成各种操作,强调的是对象和结果。
(3)面向对象是基于面向过程的。
面向对象的特点是:
(1)是一种个符合人们思考习惯的思想
(2)把复杂的事情简单化
(3)把我们从执行者变成了指挥者
举例:老师您口渴想喝茶,如果你自己去拿杯子,放茶叶,
接水这些是面向过程的;但这时您恰好知道我是个打水小能手,
又正好我很尊敬您,一见如故、一见钟情啥的,很愿意帮您去泡茶。
您调用我帮您泡茶,使用我的拿杯子、放茶叶、接水等方法。
您由执行者上升到了指挥者,让泡茶这件事更简单化。



分享至 : QQ空间
收藏
沉迷java 无法自拔

8 个回复

倒序浏览
MARK,留着看看
回复 使用道具 举报
回复 使用道具 举报
回复 使用道具 举报
收藏,留着看看
回复 使用道具 举报
有个别知识点视频中没总结过,受教了
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
厉害了word哥,好资源分享是美德
回复 使用道具 举报
已收留,谢谢
回复 使用道具 举报
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马
关闭

站长推荐 上一条 /4 下一条