字符串转数组怎么转
java面试会问什么问题
java面试问题(一)
  1、问题:程序中可以允许多个类同时拥有都有main方法吗?
  答案:可以。当程序运行的时候,我们会指定运行的类名。JVM只会在你指定的类中查main方法。因此多个类拥有main方法并不存在命名冲突的问题。
  2、问题:静态变量在什么时候加载?编译期还是运行期?静态代码块加载的时机呢?
  答案:当类加载器将类加载到JVM中的时候就会创建静态变量,这跟对象是否创建无关。静态变量加载的时候就会分配内存空间。静态代码块的代码只会在类第一次初始化的时候执行一次。一个类可以有多个静态代码块,它并不是类的成员,也没有返回值,并且不能直接调用。静态代码块不能包含this或者super,它们通常被用初始化静态变量。
  3、问题:一个类能拥有多个main方法吗?
  答案:可以,但只能有一个main方法拥有以下签名: public static void main(String[] args) {}
  否则程序将无法通过编译。编译器会警告你main方法已经存在。
  4、问题:简单的介绍下JVM是如何工作的?
  答案:JVM是一台抽象的计算机,就像真实的计算机那样,它们会先将.java文件编译成.class文件(.class文件就是字节码文件),然后用它的解释器来加载字节码。
  5、问题:如果原地交换两个变量的值?
  答案:先把两个值相加赋值给第一个变量,然后用得到的结果减去第二个变量,赋值给第二个变量。再用第一个变量减去第二个变量,同时赋值给第一个变量。
  代码如下: int a=5,b=10;a=a+b; b=a-b; a=a-b;
  使用异或操作也可以交换。第一个方法还可能会引起溢出。异或的方法如下: int a=5,b=10;a=a+b; b=a-b; a=a-b; int a = 5; int b = 10;
  a = a ^ b;
  b = a ^ b;
  a = a ^ b;
  6、问题:什么是数据的封装?
  答案:数据封装的一种方式是在类中创建set和get方法来访问对象的数据变量。一般来说变量是private的,而get和set方法是public的。封装还可以用来在存储数据时进行数据验证,或者对数据进行计算,或者用作自省(比如在struts中使用javabean)。把数据和功能封装到一个独立的结构中称为数据封装。封装其实就是把数据和关联的操作方法封装到一个独立的单元中,这样使用关联的这些方法才能对数据进行访问操作。封装提供的是数据安全性,它其实就是一种隐藏数据的方式。
  7、问题:什么是反射API?它是如何实现的?
  答案:反射是指在运行时能查看一个类的状态及特征,并能进行动态管理的功能。这些功能是通过一些内建类的反射API提供的,比如Class,Method,Field, Constructors等。使用的例子:使用Java反射API的getName方法可以获取到类名。
  8、问题:JVM自身会维护缓存吗,是不是在堆中进行对象分配,操作系统的堆还是JVM自
己管理的堆?为什么?
  答案:是的,JVM自身会管理缓存,它在堆中创建对象,然后在栈中引用这些对象。
  9、问题:虚拟内存是什么?
  答案:虚拟内存又叫延伸内存,实际上并不存在真实的物理内存。
  10、问题:方法可以同时即是static又是synchronized的吗?
  答案:可以。如果这样做的话,JVM会获取和这个对象关联的java.lang.Class实例上的锁。这样做等于: synchronized(XYZ.class) {}
java面试问题(二)
  1、问题:在System.out.println()里面,System, out, println分别是什么?
  答案:System是系统提供的预定义的final类,out是一个PrintStream对象,println是out对象里面一个重载的方法。
  2、问题:封装,继承和多态是什么?
  答案:简单来说,多态是指一个名字多种实现。多态使得一个实体通过一个通用的方式来实现不同的操作。具体的操作是由实际的实现来决定的。
  多态在Java里有三种表现方式:方法重载通过继承实现方法重写通过Java接口进行方法重写。
  3、问题:显式的类型转化是什么?
  答案:显式的类型转化是明确告诉了编译器来进行对象的转化。
  代码示例: long i = 700.20;
  int j = (int) i; //Explicit casting
  4、问题:什么是Java虚拟机?
  答案:Java虚拟机是能移植到不同硬件平台上的软件系统。
  5、问题:类型向下转换是什么?
  答案:向下转换是指由一个通用类型转换成一个具体的类型,在继承结构上向下进行。
  6、问题:Java的访问修饰符是什么?
  答案:访问权限修饰符是表明类成员的访问权限类型的关键字。使用这些关键字来限定程序的方法或者变量的访问权限。
  它们包含:
  public: 所有类都可以访问
  protected: 同一个包内以及所有子类都可以访问
  private: 只有归属的类才能访问
  默认: 归属类及相同包下的子类可以访问
  7、问题:所有类的父类是什么?
  答案:Object.
  8、问题:Java的基本类型有哪些?
  答案:byte,char, short, int, long, float, double, boolean。
  9、问题:静态类型有什么特点?
  答案:静态变量是和类绑定到一起的,而不是类的实例对象。每一个实例对象都共享同样一份静态变量。也就是说,一个类的静态变量只有一份,不管它有多少个对象。类变量或者说静态变量是通过static这个关键字来声明的。类变量通常被用作常量。静态变量通常通过类名字来进行访问。当程序运行的时候这个变量就会创建直到程序结束后才会被销毁。类变量的作用域和实例变量是一样的。它的初始值和成员变量也是一样的,当变量没被初始化的时候根据它的数据类型,会有一个默认值。类似的,静态方法是属于类的`方法,而不是类对象,它的调用并不作用于类对象,也不需要创建任何的类实例。静态方法本身就是final的,因为重写只会发生在类实例上,静态方法是和类绑定在一起的,不是对象。父类的静态方法会被子类的静态方法屏蔽,只要原来方法没有声明为final。非静态方法不能重写静态方法,也就是说,你不能在子类中把一个静态方法改成实例方法。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。