zoukankan      html  css  js  c++  java
  • Java面试题(一) String相关

    1.String是Java的基本数据类型吗?

    不是,Java中基本的数据类型有八种:int,byte,char,short,long,float,boolean,char。String不是Java中的基本数据类型,它是一种引用类型。

    Java为每一种基本类型提供了一种封装类,分别为Int,Byte,Char,Short,Float,Boolean,Char。

    引用类型和原始类型具有不同的特征和行为,存储方式以及大小和速度。引用类型的默认值为null而基本类型的默认值跟具体类型有关。

    引申:

    String是final类型的,不允许被改变。它被放入常量池内,常量池是类在编译期间确定的,并且被保存再编译后的.class文件中,包括类和接口里面的常量,以及字符串常量。如下代码段:

    String s1="abcde";

    String s2="abcde";

    String s3="abc"+"de";

    System.out.println(s1==s2);

    System.out.println(s2==s3);

    的运行结果为 true true

    我们知道==是对比对象存放的地址是否相同,而equal对比的是对象指向地址中的值是否相同。

    Strings1="abcde"在运行时,jvm首先先检查string常量池中是否存在"abcde"这个字符串,如果存在则将该字符串的引用赋给s1,如果不存在,则在常量池中创建该对象,然后将该对象的的引用赋给s1,因此s1和s2再编译阶段已经被确定,指向的地址是相同的。

    而Strings3="abc"+"de";中的"abc"和"de"都是常量,在编译阶段,被处理成"abcde",jvm可以在常量池中找到该字符串常量,因此s3指向的地址跟s1以及s2相同。

    而使用new String创建的字符串,因为无法再编译阶段确定,所以不会被放入字符串常量池中。

    String和StringBuffer的区别?

  • 相关阅读:
    element-ui 和ivew-ui的table导出export纯前端(可用)
    webstrom 2019 注册码(可用 2019年10月14日08:59:18)
    intellji IDEA 2019版激活码(亲测可用 2019年10月14日08:53:54)
    java开发相关工具安装包分享
    js有关字符串拼接问题
    js增删class的方法
    有关定位问题
    关于网页元素居中常见的两种方法
    有关css编写文字动态下划线
    js获取时间及转化
  • 原文地址:https://www.cnblogs.com/AllenIverson/p/4487276.html
Copyright © 2011-2022 走看看