Java面试基础题(二)

2020-05-03  本文已影响0人  在error边缘疯狂试探

JDK 中常用的包有哪些?

import java和javax有什么区别?

java 中 IO 流分为几种?

Java Io流共涉及40多个类,这些类看上去很杂乱,但实际上很有规则,而且彼此之间存在非常紧密的联系, Java I0流的40多个类都是从如下4个抽象类基类中派生出来的。

按操作方式分类结构图:

按操作对象分类结构图:

BIO,NIO,AIO 有什么区别?

【详细解答:】

Files的常用方法都有哪些?

Java获取反射的三种方法

public class Student {
 private int id;     
  String name;   
  protected boolean sex;   
  public float score;
 }
public class Get {     //获取反射机制三种方式 
public static void main(String[] args) throws ClassNotFoundException {
         //方式一(通过建立对象)         
      Student stu = new Student(); 
      Class classobj1 = stu.getClass();         
      System.out.println(classobj1.getName());    
     //方式二(所在通过路径-相对路径) 
      Class classobj2 = Class.forName("fanshe.Student");         
      System.out.println(classobj2.getName());     
        //方式三(通过类名) 
      Class classobj3 = Student.class; 
      System.out.println(classobj3.getName());  
   }
 }

字符型常量和字符串常量的区别

什么是字符串常量池?

String 是最基本的数据类型吗?

String有哪些特性

String真的是不可变的吗?

不可变,下面只是给大家看两个有代表性的例子:

String str = "Hello"; 
str = str + " World";
System.out.println("str=" + str);
结果:str=Hello World
// 创建字符串"Hello World", 并赋给引用s
 String s = "Hello World"; 
 System.out.println("s = " + s); 
// Hello World 
// 获取String类中的value字段 
Field valueFieldOfString = String.class.getDeclaredField("value");
  // 改变value属性的访问权限
 valueFieldOfString.setAccessible(true);
  // 获取s对象上的value属性的值 
char[] value = (char[]) valueFieldOfString.get(s);
  // 改变value所引用的数组中的第5个字符 
value[5] = '_';  
System.out.println("s = " + s); 
// Hello_Worl
结果:s = Hello World s = Hello_World

是否可以继承 String 类

String str="i"与 String str=new String(“i”)一样吗?

【详解:】

String s = new String(“xyz”);
//创建了几个字符串对象? 两个对象,一个是静态区的"xyz",一个是用new创建在堆上的对象。
String str1 = "hello"; 
//str1指向静态区 
String str2 = new String("hello"); 
//str2指向堆上的对象 
String str3 = "hello"; 
String str4 = new String("hello");
System.out.println(str1.equals(str2)); //true 
System.out.println(str2.equals(str4)); //true 
System.out.println(str1 == str3); //true 
System.out.println(str1 == str2); //false
System.out.println(str2 == str4); //false 
System.out.println(str2 == "hello"); //false 
str2 = str1; 
System.out.println(str2 == "hello"); //true

数组有没有 length()方法?String 有没有 length()方法?

String 类的常用方法都有那些?

在使用 HashMap 的时候,用 String 做 key 有什么好处?

String和StringBuffer、StringBuilder的区别是什么?

【对于三者使用的总结:】

自动装箱与拆箱

int 和 Integer 有什么区别

Tips:如果整型字面量的值在-128到127之间,那么自动装箱时不会new新的Integer对象,而是直接引用常量池中的Integer对象,超过范围 a1==b1的结果是false

public static void main(String[] args) {
    Integer a = new Integer(3);     
    Integer b = 3;  // 将3自动装箱成Integer类型     
    int c = 3;     
    System.out.println(a == b); // false 两个引用没有引用同一对象 
    System.out.println(a == c); // true a自动拆箱成int类型再和c比较 
    System.out.println(b == c); // true 
    Integer a1 = 128;     
    Integer b1 = 128;     
    System.out.println(a1 == b1); // false 
    Integer a2 = 127;     
    Integer b2 = 127;     
    System.out.println(a2 == b2); // true 
  }
}
上一篇 下一篇

猜你喜欢

热点阅读