Java基础知识篇

Posted 追梦赤子心

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java基础知识篇相关的知识,希望对你有一定的参考价值。

1、&和&&的区别?

答:&和&&都可以用作逻辑与的运算符,表示逻辑与(and);

&&还有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式;

&是位运算符,表示按位与运算。

 

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

答:switch(expr1)中,expr1是一个整数表达式。整数表达式可以是int基本类型或Integer包装类型,

由于,byte,short,char都可以隐含转换为int,所以这些类型以及它的包装类型可以。long,String 不能被隐式转换为int类型,所以不能作用于swtich语句种。

 

3、用最有效率的方法算出2乘以8等於几?

答:2 << 3

 

4、==和equals方法的区别?

String a=new String("abc");
String b=new String("abc");

这两行代码创建了两个对象,这是两个不同的对象,它们的首地址是不同的。

所以,表达式a==b返回false,而这两个对象中的内容是相同的,a.equals(b)将返回true。

 

5、.Collection和Collections的区别?

答:collection是集合类的上级接口,继承与它的接口主要是set和list

其中list必须以特定的顺序容纳元素;而set不能包含重复的元素.

collections类是针对集合类的一个帮助类.它提供一系列的静态方法对各种集合的搜索,排序,线程安全化等操作.

 

6、Overload和Override的区别?Overloaded的方法是否可以改变返回值的类型?

答:方法的重写Overriding和重载Overloading是Java多态性的不同表现。

重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。

如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。

如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。

Overloaded的方法是可以改变返回值的类型

 

7、是否可以继承String类?

答:String类是final类故不可以继承

 

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

答:会执行,在return前执行

 

9、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?

答:是值传递。Java 编程语言只有值传递参数。

当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的.

 

10、ArrayList和Vector的区别,HashMap和Hashtable的区别?

答:就ArrayList与Vector主要从二方面来说.

  一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的

  二.数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半

就HashMap与HashTable主要从三方面来说。

  一.历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现

  二.同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的

  三.值:只有HashMap可以让你将空值作为一个表的条目的key或value

 

11、GC是什么? 为什么要有GC?

答:GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。

 

12、介绍JAVA中的Collection FrameWork(包括如何写自己的数据结构)?

答:Collection FrameWork如下:

  Collection

  ├List

  │├LinkedList

  │├ArrayList

  │└Vector

  │ └Stack

  └Set

  Map

  ├Hashtable

  ├HashMap

  └WeakHashMap

  Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)

  Map提供key到value的映射.

 

1.3、String与StringBuffer的区别?

答:String的长度是不可变的,StringBuffer的长度是可变的。

如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法

 

14、谈谈final, finally, finalize的区别

答:final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载

  finally—再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)

  finalize—方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的

 

15、运行时异常与一般异常有何异同?

答:异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。

  java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。

 

16、说出ArrayList,Vector, LinkedList的存储性能和特性

答:ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢。

Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差。

LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。

 

17、HashMap和Hashtable的区别?

答:HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。

  HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。

  HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。

  最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。

 

18、java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?

答:字节流,字符流。字节流继承于InputStream OutputStream,字符流继承于InputStreamReader OutputStreamWriter。在java.io包中还有许多其他的流,主要是为了提高性能和使用方便。

 

19、List、Map、Set三个接口,存取元素时,各有什么特点?

答:List 以特定次序来持有元素,可有重复元素。Set 无法拥有重复元素,内部排序。Map 保存key-value值,value可多值。

以上是关于Java基础知识篇的主要内容,如果未能解决你的问题,请参考以下文章

Java语言基础之方法的设计

JSP基础

Java安全-入门篇开发基础(MavenJavaMVC反射类加载代码远程调试)

java复习基础篇——代码执行顺序

配置 VScode 编辑器 (前端篇)

Android开发太难了:Java Lambda ≠ Android Lambda (上)