Java面试题之Java基础(一)

1、Java的几种基本类型?

byte、short、int、long、float、double、char、boolean;

2、什么是字符串常量池?String为什么是不可变的?

字符串常量池即存储在Java堆内存中的字符串池;字符串的分配会耗费高昂的时间与空间代价。JVM为了提高性能和减少内存开销,在实例化字符串常量的时候进行了一些优化。为 了减少在JVM中创建的字符串的数量,字符串类维护了一个字符串池,每当代码创建字符串常量时,JVM会首先检查字符串常量池。如果字符串已经存在池中, 就返回池中的实例引用。如果字符串不在池中,就会实例化一个字符串并放到池中。Java能够进行这样的优化是因为字符串是不可变的。

3、String s = new String("xyz");究竟产生了几个对象,从JVM角度谈谈?

分两种情况:

第一种情况:在字符串常量池中,若存在“xyz”这个字符串常量,则不会在创建"xyz"字符串,只需要创建new String("xyz");即只创建一个对象;

第二种情况:在字符串常量池中,若不存在“xyz”这个字符串常量,则会在创建"xyz"字符串并存入字符串常量池种,同时需要创建new String("xyz");即创建两个对象。

4、equals() 与 == 的区别?

== 比较的是变量(栈)内存中存放的对象的(堆)内存地址,用来判断两个对象的地址是否相同,即是否是指相同一个对象。比较的是真正意义上的指针操作。

equals用来比较的是两个对象的内容是否相等。

5、Java中方法参数的传递规则?

Java 编程语言只有值传递参数。如果参数类型是原始类型,那么传过来的就是这个参数的一个副本,也就是这个原始参数的值,这个跟之前所谈的传值是一样的。如果在函数中改变了副本的值不会改变原始的值;如果参数类型是引用类型,那么传过来的就是这个引用参数的副本,这个副本存放的是参数的地址。如果在函数中没有改变这个副本的地址,而是改变了地址中的 值,那么在函数内的改变会影响到传入的参数。如果在函数中改变了副本的地址,如new一个,那么副本就指向了一个新的地址,此时传入的参数还是指向原来的 地址,所以不会改变参数的值。

6、Java中throw和throws的区别是什么?

throws:用来声明一个方法可能产生的所有异常,不做任何处理而是将异常往上传,谁调用我我就抛给谁。
  用在方法声明后面,跟的是异常类名
  可以跟多个异常类名,用逗号隔开
  表示抛出异常,由该方法的调用者来处理
  throws表示出现异常的一种可能性,并不一定会发生这些异常
throw:则是用来抛出一个具体的异常类型。
  用在方法体内,跟的是异常对象名
  只能抛出一个异常对象名
  表示抛出异常,由方法体内的语句处理
  throw则是抛出了异常,执行throw则一定抛出了某种异常  
7、重载和重写的区别?

重载:在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同甚至是参数顺序不同)则视为重载;

重写:子类会继承父类的所有的属性和方法(使用private修饰的无法直接访问到),但是父类的方法可能并不能够完全的满足子类的需要,这个时候在方法名,参数列表,返回类型(除过子类中方法的返回值是父类中方法返回值的子类时)都相同的情况下,在子类中,修改或者重写父类的方法称为重写。

8、JDK、JRE、JVM?

①  JDK: Java Development kit   Java 开发工具包

②  JRE: Java Runtime Environment  包含JVM标准实现及Java核心类库。JRE是Java运行环境

③  JVM: Java virtual Machine  Java虚拟机, java运行时的环境

9、Java可以多继承吗,那多实现呢?

Java是单继承,多实现的。

10、集合类有哪些?

Java的集合类主要包括List(包括ArrayList、vector,LinkedList)、set(包括HashSet、LinkedHashSet、TreeSet、EnumSet)、Map(包括HashMap、LinkedHashMap、TreeMap、WeakHashMap)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值