Java基础知识点(一)

1.面向对象的特征有以下四点:抽象、继承、封装、多态; 

2.String:不是最基本的数据类型,String是一个对象, 因为对象的默认值是null,所以String的默认值也是null,String 类是 final 类,故不可以继承;

3.float和double的区别

代码float f=0.1是错误的,编译会报错,上述语句等号右边为0.1,我们以为它是个float,但是编译器却把它认为是个double(因为小数默认是double)一般改成0.1f就没事了,或者改成float f = (float)0.1;

4.goto

goto 是 java 中的保留字,现在没有在 java 中使用;

5.基本数据类型和其包装类的区别

例如int 是基本数据类型,Integer是其包装类,注意是一个类。

为什么要提供包装类呢???

一是为了在各种类型间转化,通过各种方法的调用。否则 你无法直接通过变量转化;

6.、heap(堆) 和 stack (栈)有什么区别?

栈是一种线形集合,其添加和删除元素的操作应在同一段完成,栈按照后进 先出的方式进行处理;堆是栈的一个组成元素;

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

Math.round(11.5)==12 Math.round(-11.5)==-11 round 方法返回与参数 最接近的长整数,参数加 1/2 后求其 floor;

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

switch(expr1)中,expr1 是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。long,string 都不能作用 于 swtich;

9.  2 << 3=16,16>>3=2;

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

在最外层循环前加 label 标识,然后用 break:label 方法即可跳出多重循环;

11.length:

数组没有 length()这个方法,但是有 length 的属性。String 有 length()这个 方法;

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

不对,有相同的 hash code;

13.构造器 (Constructor )是否可被重写 (override)? 

构造器 不能被继承,因此不能重写,但可以被重载,重载的方法是可以改变返回值的类型,重写不可以;

重写:重写(overriding)是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变;

重载:重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同;

14.、String 和 StringBuffer 、StringBuilder的区别? 

String 的长度是不可变的; StringBuffer 和StringBuilder的长度是可变的,

JAVA 平台提供了两个类:String 和 StringBuffer,它们可以储存和操作字 符串,即包含多个字符的字符数据。这个 String 类提供了数值不可改变的字符 串。而这个 StringBuffer 类提供的字符串进行修改。当你知道字符数据要改变 的时候你就可以使用 StringBuffer。典型地,你可以使用 StringBuffers 来动 态构造字符数据,如果最后需要String,那么使用StringBuffer的toString()方法;

StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。

StringBuilder和StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。

由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。

15.char 型变量中能不能存贮一个中文汉字?为什么? 

能够定义成为一个中文的,因为 java 中以 unicode 编码,一个 char 占 16 个字节,所以放一个中文是没问题的;

16.描述一下 JVM 加载 class 文件的原理机制? 

Java中的所有类,都需要由类加载器装载到JVM中才能运行。类加载器本身也是一个类,而它的工作就是把class文件从硬盘读取到内存中;

17.抽象类和接口有什么区别?

接口和抽象类的概念不一样。接口是对动作的抽象,抽象类是对根源的抽象;

抽象类要被子类继承,接口要被类实现;

接口可继承接口,并可多继承接口,但类只能单根继承;

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

18.java中会内存泄露吗?

会;存在无嵌套类和用但可达的对象,这些对象不能被 GC 回收,导致耗费内存资源;

19.嵌套类和内部类的区别:嵌套类是被声明为静态(static)的内部类,它可以不依赖 于外部类实例被实例化。而通常的内部类需要在外部类实例化后才能实例化;

20.静态变量和实例变量的区别:静态变量也称为类变量,归全类共有,它不依赖于某个对象,可通过类名直 接访问;而实例变量必须依存于某一实例,只能通过对象才能访问到它;

21.String s=new String(“xyx”);创建了几个 String Object?

两个,一个是"xyx",一个是指向"xyx"的引用对象 s;

22.内部类

一个“.java”源文件中可以包含多个类(不是内部类),但只能有一个 public 的类,并且 public 的类名必须与文件名相一致;

23.Java中常用的类、包、接口:

类:BufferedReader, BufferedWriter, FileReader, FileWirter, String ,HashMap,List

包:java.lang, java.io,  java.util , java.sql, javax.servlet , java.util 

接口: List, Map, Document  ,NodeList, Servlet,Remote 

24.多态性:

方法的重写和重载是 java 多态性的不同表现;重写是父类与子类之间多态性的一种表现,重载是一个 类中多态性的一种表现;

25:final:

一个类被声明为 final 类型,表示该类不能被继承,是顶级类;

26.字符串操作:

可用字符串构造一 StringBuffer 对象,然后调用 StringBuffer 中的 reverse 方法即可实现字符串的反转,调用 replace 方法即可实现字符串的替换;

27.Java和Jsp的区别:

1)基于对象和面向对象: Java 是一种真正的面向对象的语言,即使是开发简单的程序,必须设计对象; JavaScript 是种脚本语言,它可以用来制作与网络无关的,与用户交互作用 的复杂软件。它是一种基于对象(Object Based)和事件驱动(Event Driver) 的编程语言。因而它本身提供了非常丰富的内部对象供设计人员使用;

 2)解释和编译: Java 的源代码在执行之前,必须经过编译; JavaScript 是一种解释性编程语言,其源代码不需经过编译,由浏览器解释 执行; 

3)强类型变量和类型弱变量: Java 采用强类型变量检查,即所有变量在编译之前必须作声明; JavaScript 中变量声明,采用其弱类型。即变量在使用前不需作声明,而是 解释器在运行时检查其数据类型;

 4)代码格式不一样。

28.==和equals的区别:

==操作符专门用来比较两个变量的值是否相等,equals 方法是用于比较两个独立对象的内容是否相同;

29.final, finally, finalize 的区别:

final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。 内部类要访问局部变量,局部变量必须定义成 final 类型。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载;

finally 是异常处理语句结构的一部分,表示总是执行。 

finalize 是 Object 类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可 以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。JVM 不保证此方法总被 调用;

30.字符流与字节流:

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

你可能感兴趣的:(Java基础知识点(一))