zoukankan      html  css  js  c++  java
  • 面试题之String s="a"+"b"+"c"+"d";

    今天遇到了一个面试题的选择,我当时真的没怎么在意,其实挺好玩的。

    1.这条语句String s="a"+"b"+"c"+"d";一共创建了多少个对象()
    A.1
    B.4
    C.6
    D.7
    这道题放在了第一题 没动脑子数了数 感觉是八个 但是没有选项 又数了数 难道是五个 还是没有选项 然后我就选了B... 
    纯属瞎写了(主要是谁没事这么声明变量啊)
    我的答案肯定不对啊 回来的路上仔细想了想 感觉应该是选择D.7个
    因为:
      "a" "b" "c" "d" 各为一个,一共四个 然后 "ab" "abc" "abcd" 一共三个 我把s给算上了一个 所以是八个 如果不算 就是七个。
    但是感觉还是有点别扭 后面的"a" "b" "c" "d"顶多算是常量,对于常量,编译时就直接存储它们的字面值而不是它们的引用,我感觉我想复杂了,感觉就一个对象(主要是看到这题也不可能直接选择A呀肯定会想的多一些)。
    然后我回去试了试 然后查看编译后的class文件,呵,瞬间感觉自己当时太傻了,真的是没想到,编译器还是很聪明的,自己把这个很长(傻)的声明总结起来了,直接提取成String s = "abcd";然后根据这个想一下,当执行到这个变量的时候,会先去String常量池里找,如果没有的话肯定就会创建一个对吧,所以这道题我觉得应该选择A。
    image image image 
    最重要的来了,我去网上搜了一下,好多人都在讨论这个问题。。。问题讨论传送(我觉得我肯定是和社会脱节了,主要当时看见这个题自然而然的和String s="a"+"b"+new String("c");这类题目联想到一起了,再加上自己有点紧张,哈哈,不能解释,这就是自己技术不行)
    最后我查了几篇文章,感觉就是自己太自作聪明了,一看题就觉得面试官出的题目会有坑,然后就自作的想很多,其实这道题也是一种坑,只怪自己基础知识不扎实,看了这篇文章感觉明白了 文章传送
    这道题虽然很小 但是还是记录一下吧 很容易就懵了 感觉这道题是很基础的一道面试题 我第一次遇到 是不是很幸运同时又很可悲呢。。。
    基础啊~真的很重要!!!菜鸟要进步!!!
     
  • 相关阅读:
    wpf图片查看器,支持鼠标滚动缩放拖拽
    Python 3.x 学习笔记--杂
    Python 3.x 模块
    python 连接kafka
    Oracle问题
    Device Mapper Multipath(DM-Multipath)
    各种书籍
    Centos 6.x系统
    老男孩Python 3.x 讲义
    Python 3.x 学习笔记
  • 原文地址:https://www.cnblogs.com/wanghao1874/p/11009361.html
Copyright © 2011-2022 走看看