"景先生毕设|www.jxszl.com

核心Java面试问题和答案(四)

2023-09-12 15:40编辑: www.jxszl.com景先生毕设

核心Java面试问题和答案()

 

Ijava中的三元运算符是什么?

  Java三元运算符是唯一一个有三个操作数的条件运算符。

  它是对if-then-else语句的一个替换,在java编程中使用了很多。

  我们可以使用三元运算符if-else条件,甚至可以使用嵌套的三元运算符交换条件。

  java三元操作符中可以找到一个示例。

 

II超级关键字做什么?

  当您在子类中覆盖了方法时,超级关键字可以被用来访问超类方法。

  我们可以使用super关键字在子类构造函数中调用超类构造函数,但在这种情况下,它应该是构造函数方法中的第一个语句。

  package com.journaldev.access;

  public class SuperClass {

    public SuperClass(){

    }

    public SuperClass(int i){}

    public void test(){

      System.out.println("super class test method");

    }

  }

超级关键字的使用可以在子类的实现中看到。

  com.journaldev.access;

  公共类子类继承超类

  公共ChildClass(String str){

  //使用超级关键字访问超类构造函数

  超级();

  / /子类方法的访问

  测试();

  //使用super来访问超类方法

  super.test();

  }

  @Override

  公共空白测试(){

  system . out

  println(“儿童类测试方法”);

  }

}
 

III break  and continue ?

  我们可以使用break语句来终止for循环,也可以使用while循环。

  我们可以在switch语句中使用break语句,以退出switch案例。

  您可以在java break中看到break语句的示例。

  我们可以使用中断与标签来终止嵌套循环。

  continue语句跳过了for循环的当前迭代,也跳过了while循环。

  我们可以使用标签的continue语句来跳过最外层循环的当前迭代。
 

IV 关键字

这个关键字提供对当前对象的引用,它主要用于确保使用对象变量,而不是使用相同名称的本地变量。

//构造函数(constructor

public Point(int x, int y) {

    this.x = x;

    this.y = y;

}

我们还可以使用这个关键字从构造函数调用其他构造函数。

public Rectangle() {

    this(0, 0, 0, 0);

}

public Rectangle(int width, int height) {

    this(0, 0, width, height);

}

public Rectangle(int x, int y, int width, int height) {

    this.x = x;

    this.y = y;

    this.width = width;

    this.height = height;

}
 

V 默认构造函数是什么?

  没有一个类的参数构造函数被称为默认构造函数。

  当我们不为类定义任何构造函数时,java编译器会自动为类创建默认的无args构造函数。

  如果定义了其他构造函数,那么编译器就不会为我们创建默认的构造函数。

 

VI 我们可以试一试没有挡块吗?

  是的,我们可以使用try-finally语句,因此避免了catch块。

 

VII 垃圾收集是什么?

  垃圾收集是查看堆内存的过程,确定哪些对象在使用,哪些对象没有,并删除未使用的对象。

  Java中,回收内存的过程是由垃圾收集器自动处理的。

  我们可以使用代码runtime().gc()或使用效用方法system.gc()来运行垃圾收集器。

  有关堆内存和垃圾收集的详细分析,请阅读Java垃圾收集。

  

VIII什么是序列化和反序列化?

  我们可以将一个Java对象转换为一个称为序列化的流。

  一旦将对象转换为流,就可以将其保存为文件或发送到网络或在套接字连接中使用。

  该对象应该实现Serializable接口,我们可以使用java.io。

  ObjectOutputStream将对象写入文件或任何OutputStream对象。

  更多地阅读Java序列化。

  将通过序列化方式创建的流数据转换为对象的过程称为反序列化。

  更多地阅读JAVA/265.html">Java反序列化。

 

IX 如何通过命令提示运行JAR文件?

  我们可以使用java命令运行一个jar文件,但是它需要jar清单文件中的主类条目。

  主类是jar的入口点,java命令使用它来执行类。

  java jar文件中学习更多。

 

X 系统类的使用是什么?

  Java系统类是核心类之一。

  用于调试信息的最简单方法之一是system.out.print()方法。

  系统类是final的,因此我们不能子类化并通过继承来覆盖它的行为。

  系统类不提供任何公共构造函数,所以我们不能实例化这个类,这就是为什么它的所有方法都是静态的。

  系统类的一些实用方法是用于数组复制、获取当前时间、读取环境变量。

  Java系统类中阅读更多信息。

 

XI运算符关键字是什么?

我们可以使用instanceof关键字来检查对象是否属于类。

我们应该尽量避免使用它。

示例使用:

public static void main(String args[]){

Object str = new String("abc");

 

if(str instanceof String){

System.out.println("String value:"+str);

}

 

if(str instanceof Integer){

System.out.println("Integer value:"+str);

}

}

因为str在运行时是String类型的,首先if语句的值为true,第二个为false。

 

XII我们可以使用带有开关的字符串吗?

  Java 7的一个特性是改进了允许字符串的开关情况。

  因此,如果您使用的是Java 7或更高版本,您可以在开关-case语句中使用字符串。

 

XIII Java是通过值传递还是通过引用传递?

  这是一个非常令人困惑的问题,我们知道对象变量包含了堆空间中的对象的引用。

  当我们调用任何方法时,将传递这些变量的副本,并将其存储在方法的堆栈内存中。

  我们可以测试任何语言,无论它是通过引用传递的,还是通过一个简单的通用交换方法传递的值,以了解更多的读Java是通过值传递的,而不是通过引用传递的。

 

XIV 堆和堆栈内存之间的区别是什么?

  Heap和堆栈记忆之间的主要区别是:

    堆内存被应用程序的所有部分使用,而堆栈内存只被一个执行线程使用。

    每当创建一个对象时,它总是存储在堆空间中,堆栈内存中包含对它的引用。

    堆栈内存只包含本地原始变量和堆空间中的对象的引用变量。

    堆栈中的内存管理是用LIFO方式完成的,而在堆内存中则更复杂,因为它在全局中使用。

    更多请阅读Java堆和堆栈内存。
 

JXV  ava编译器存储在JDK、JRE或JVM中?

java编译器的任务是将java程序转换成字节码,我们有javac可执行的可执行文件。

因此它必须存储在JDK中,我们不需要它在JRE中,而JVM只是规范。

下列程序的输出将是什么?

静态方法在类

package com.journaldev.util;

 

public class Test {

 

public static String toString(){

System.out.println("Test toString called");

return "";

}

 

public static void main(String args[]){

System.out.println(toString());

}

}

代码不会编译,因为我们不能使用静态关键字的对象类方法。注意对象类有toString()方法。

您将得到编译时错误,因为“这个静态方法不能将实例方法从对象中隐藏”。原因是静态方法属于类,

因为每个类都是对象,所以我们不能在类中有相同的方法。如果将方法名从toString()更改为超类对象中不存在的其他内容,则不会出现此错误。

 

静态方法调用

package com.journaldev.util;

public class Test {

public static String foo(){

System.out.println("Test foo called");

return "";

}

 

public static void main(String args[]){

Test obj = null;

System.out.println(obj.foo());

}

}

当我们在对象上调用一个NULL的方法时,我们都看到了NullPointerException。

但是在这里,这个程序将会工作并打印出“测试foo”。

 

这样做的原因是java编译器代码优化。

当将java代码编译为生成的字节代码时,它会发现foo()是一种静态方法,应该使用类来调用。

因此,它将方法调用obj.foo()更改为test.foo(),因此不会出现NullPointerException。

 http://www.itemperor.com/a/JAVA/258.html


原文链接:http://www.jxszl.com/biancheng/JAVA/446610.html