• 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的区别?

  • 相关阅读:
    各种加密解密函数(URL加密解密、sha1加密解密、des加密解密)
    php实现和c#一致的DES加密解密
    使用phpQuery轻松采集网页内容
    PHP 类与对象 全解析(三)
    PHP 类与对象 全解析( 二)
    PHP 类与对象 全解析( 一)
    iconv 中文截断问题的解决方法
    jQuery插件开发全解析
    jQuery ajax
    360手机新品牌5月6日公布 周鸿祎席地而坐谈AK47
  • 原文地址:https://www.cnblogs.com/AllenIverson/p/4487276.html
Copyright © 2020-2023  润新知