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

  • 相关阅读:
    关于postman返回参数
    字典(dict)
    序列(tuple)
    列表(List)
    字符串截取
    条件及循环语句
    函数
    变量和类型
    post请求
    django学习-5.获取url参数和name的作用
  • 原文地址:https://www.cnblogs.com/AllenIverson/p/4487276.html
Copyright © 2011-2022 走看看