JAVA企业面试题精选 Java SE 1-10

3.Java SE

3.1 int 和 Integer 有什么区别?

参考答案:

  Java语言是一个面向对象语言,但是Java中的基本数据类型却不是面向对象的,这在实际使用时存在很多的不方便,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型对应的类统称为包装类(Wrapper Class).
  Java语言提供两种不同的类型:引用类型和基本数据类型;int是Java语言中的原始数据类型,Integer是Java为int提供的包装类.Java为每一个基本数据类型提供了封装类,其中,基本数据类型包括byte,short,int,long,float,double,char,boolean这八个基本数据类型,这八个基本数据类型对应的封装类为Byte,Short,Integer,Long,Float,Double,Character,Boolean.
  在这八个类名中,除了Integer和Character类以外,其他六个类名和基本数据类型一致,只是类名的第一个字母大写即可.对于包装类来说,这些类的用途主要包含两种:
1)作为和基本数据类型对应的类类型存在,方便涉及到对象的操作;
2)包含每种基本类型数据的相关属性如最大值,最小值等,以及相关的操作方法.

3.2.请看以下示例代码:

    String s1 = "Hello";
    String s2 = "Hello";
    System.out.println(s1 == s2);//输出:true
    String s3 = new String("Hello");
    String s4 = new String("Hello");
    System.out.println(S3 == s4);//输出:false

请解释一下为什么上述代码中”System.out…”两句代码输出完全不同的结果?

参考答案:

  ”Hello”是一个字符串常量,它存放在内存的常量池中.在第一行代码执行后创建此对象,而创建s2对象的时候首先会到常量池中检查是否存在字符串”Hello”,如果存在,则直接引用已存在的对象.
  s3和s4所引用的对象是通过new关键字创建的,会在堆中分别创建.这两个引用分别指向不同的两个对象,”==”只有在两个变量引用指向同一个对象时才返回true,因此出现如上结果.

3.3.如何将int型变量转换成String类型变量?如何将String类型变量转换成int类型变量?

参考答案:

  int型变量转换成String类型变量,可以使用String类的静态方法valueOf,请看如下代码示例:

    //将int类型变量i转成String类型
    String s = String.valueOf(i);

  将String类型变量转换成int类型变量使用Integer类的静态方法parseInt,请看如下代码:

    //将String类型变量s转换成int类型
    int i = Integer.parseInt(s);

3.4.加法运算符”+”可以施加于原始数据类型(比如int)的变量,但我们发现一些对象类型(比如Integer)的变量,也支持”+”运算,请看如下代码:

    Integer v1 = 100;
    Integer v2 = 200;
    System.out.println(v1 + v2);//输出:300

这看上去好像Integer类型重载了”+”运算符,一些编程语言比如C++可以重载运算符,但Java本身并不支持这一特性.依你的理解或猜测,Java采用什么方法处理两个Integer对象直接”+”的语句?

参考答案:

  Java5.0以后提供了自动装箱和自动拆箱功能,如下代码:

    Integer v1 = 100;

  实际上系统为我们执行的代码为:

    Integer i = new Integer(100);

  上述代码即实现了基本数据类型的自动装箱功能,然后,执行如下代码:

    System.out.println(v1 + v2);

  实际上系统为我们执行的代码为:

    System.out.println(v1.intValue() + v2.intValue()

  上述代码即实现了自动拆箱,然后,以int类型计算值的方式计算相加后的结果.

3.5.通过正则表达式判断一个字符串:首位是字母,后面可以是字母,数字或者下划线,总长度6-18位

参考答案:
    ^[a-zA-Z]\w{5-17}$

3.6.请写出中国身份证号的正则表达式

参考答案:
    ^\d{15}(\d{2}[0-9xX])?$

3.7.Java中字符串转换到数字的API有哪些?

  将String类型变量s转换成Byte类型,Short类型,Integer类型,Long类型,Float类型,Double类型的API如下:

    Byte.parseByte(s);
    Short.parseShort(s);
    Integer.parseInt(s);
    Long.parseLong(s);
    Float.parseFloat(s);
    Double.parseDouble(S);

3.8.Anonymous Inner Class(匿名内部类)是否可以extends(继承)其他类?是否可以implements(实现)interface(接口)?

参考答案:

  匿名内部类可以继承其他类或实现其他接口,在Java编程中常用此方式.

3.9.内部类可以引用他包含类的成员吗?有没有什么限制?

参考答案:

  完全可以.如果不是静态内部类,那没有什么限制.
  如果你把静态内部类当作内部类的一种特例,那么这种情况下不可能访问外部类的普通成员变量,而只能访问外部类中的静态成员,例如下面的代码:

class Outer(){
    static int x;
    static class Inner{
        void test(){
            System.out.println(x);
        }
    }
}

3.10.内部类的实现方式

参考答案:

  本题以成员内部类为例说明内部类的实现方式,示例代码如下:

public class OuterClass{

    private class InterClass{

        public InterClass(){
            System.out.println("InterClass Create");
        }
    }

    public OuterClass(){
        InterClass ic = new InterClass();
        System.out.println("OuterClass Create");
    }

    public static void main(String[] args){
        OuterClass oc = new OuterClass();
    }
}

  以上代码的输出结果为:

    InterClass Create
    OuterClass Create
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值