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

不是,是对象,引用数据类型

2.String是可变吗?

不可变,String是final类型的.

3.怎样比较两个字符串的值相同,怎样比较两个字符串是否为同一对象?

比较值相同用equals,比较是否为统一对象用 ==

4.switch中可以用String吗?

在jdk5中switch支持枚举,在7中支持String,但是通过反编译可以看出就是本质还是int,case后是hashcode,之后使用equals进行比较,所以String的效率会比较低

5.String str = new String("abc");这条语句创建了几个对象?为什么?

创建了两个对象,"abc"本身就创建在常量池中,通过new又创建在堆中.

6.String,StringBuffer,StringBuilder有什么区别?

String是字符串常量,不可变,其余两个是可变的.StringBuffer是线程安全,但是效率较低,StringBuilder是线程不安全,但是速度较快.

7.String.trim()方法去掉的是哪些字符?

去掉的是首尾的空白字符.

8.String可以被子类继承吗?

既然是final类,肯定不能被继承.

9.可以自定义java.lang.String类并使用吗?

可以自定义java.langString类并编译成功,但不能被加载使用.

10.String与byte[]如何进行相互转换?

String->byte[] 使用String类的getBytes方法.  byte[]->String通过new String(byte[])构造器

这里额外说一下String被设计成final的好处?

1.缓存Hashcode,java中经常会用到字符串的哈希码,字符串的不可变保证其hashCode永远保持一致,这样可以变不必要的麻烦,每次使用字符串的hashcode不用重新计算,更加高效.

2.安全性.String类被广泛的使用在java类中充当参数,如果字符串可变,那么网络连接,打开文件等操作可能导致安全问题,可变的字符串也可能导致反射的安全问题,因为他的参数也是字符串.

3.不可变对象天生就是线程安全.不可变对象可以自由在线程间共享,不需要同步处理.

总之,String类设计为不可变主要目的是为了安全和高效.

转载于:https://www.cnblogs.com/wadmwz/p/8798786.html

java面试之String的理解(自我理解)相关推荐

  1. SWIFT MX报文基础函数与Java语言中String的方法对照理解

    SWIFT MX报文基础函数与Java语言中String的方法对照理解 前言 一.SWIFT是什么? 二.SWIFT MX是什么? 二.报文基础函数与Java语言中String的方法对照表 总结 前言 ...

  2. Java面试之谈谈对Volatile的理解

    谈谈对Volatile的理解 Volatile在日常的单线程环境是应用不到的 Volatile是Java虚拟机提供的轻量级的同步机制(三大特性) 保证可见性 不保证原子性 禁止指令重排 可能这么说,还 ...

  3. Java面试之谈谈对CAS的理解

    CAS底层原理 概念 CAS的全称是Compare-And-Swap,它是CPU并发原语 它的功能是判断内存某个位置的值是否为预期值,如果是则更改为新的值,这个过程是原子的 CAS并发原语体现在Jav ...

  4. java里面的string类型,java中的String类型(不知道理解的好不,请教大神)

    当执行String a = "abc"; 时候(前提条件是:执行这行代码之前在常量池中没有abc,若有,a直接引用在常量池中abc不在创建一个对象,若无,执行下面的描述) java ...

  5. 深入理解Java中的String

    一.String类 想要了解一个类,最好的办法就是看这个类的实现源代码,来看一下String类的源码: public final class Stringimplements java.io.Seri ...

  6. 深入理解Java中的String(原地址https://www.cnblogs.com/xiaoxi/p/6036701.html)

    深入理解Java中的String 一.String类 想要了解一个类,最好的办法就是看这个类的实现源代码,来看一下String类的源码: public final class Stringimplem ...

  7. Java常量字符串String理解

    Java常量字符串String理解 以前关于String的理解仅限于三点: 1.String 是final类,不可继承 2.String 类比较字符串相等时时不能用" == ",只 ...

  8. Java面试一百道题目(第一题)-什么是面向对象,谈谈你对面向对象的理解

    Java面试一百道题目(第一题) 1,什么是面向对象,谈谈你对面向对象的理解. 思路:用面向过程和面向对象做对比来突出什么是面向对象. 答:高级语言分为,面向对象语言和面向过程语言,面向过程语言,距离 ...

  9. 常见java面试遇到的ORM框架理解

    常见ORM框架理解 前言: JAVA编程免不了和数据库打交道,那么如何高效便捷地操作数据库,也是一个需要而对的问题,原生的基于JDBC的方式当然是非常低效,而且要写一大堆无用的模板代码,不值得选取.好 ...

  10. Java面试宝典系列之基础面试题String、变量、类与对象、集合类、SSH(三)

    Java面试宝典之数据结构基础 -- 线性表篇 作者:egg 邮箱:xtfggef@gmail.com 微博:http://weibo.com/xtfggef 博客:http://blog.csdn. ...

最新文章

  1. 梯度下降理解和梯度下降计算检查斯坦福
  2. js基础到精通全面教程--JS教程(转载)--推荐
  3. python编程与特征提取_Python进行特征提取的示例代码
  4. 【Java】Java 语言的初步认识及工作应用范围
  5. show()和exec()的区别
  6. java中如何关闭文件,在Java中捕获IOException后如何关闭文件?
  7. Bailian2713 肿瘤面积【基础】
  8. 基于深度极限学习机DELM的回归预测
  9. AOD实践,modis数据下载,modis数据处理,
  10. Sketch54 for mac汉化破解版
  11. PHP自动识别电话名字地址,你用PHP,如何实现地址自动识别的功能
  12. 为什么书呆子不受欢迎
  13. 【研一小白论文精读】《Big Self-Supervised Models are Strong Semi-Supervised Learners》
  14. 苹果手机快速获取UDID方式
  15. thingsboard安装源码编译
  16. duxing201606很快乐
  17. web前端 | 一条“不归路” - 学习路线
  18. python基础实例教程 微课版-Python爬虫开发实战教程(微课版)
  19. mac u盘linux 双系统安装教程,U盘安装MAC双系统完美方案实现在MAC系统下使用双系统...
  20. 叉包舍 - PPPoE之常见拨号错误代码及处理

热门文章

  1. 十亿级同步,百亿级调用,千亿级访问量的开放技术平台如何炼成?
  2. 蚂蚁金服CTO程立:金融级分布式交易的技术路径
  3. 惊爆!一行正则表达式引发的 CPU 惨案
  4. 在 Google 工作是什么体验?
  5. onSaveInstanceState onRestoreInstanceState
  6. python替换word中字符串_python:替换/替换字符串中的所有wholeword匹配
  7. 如何在你的blog中添加炫酷的飘雪动画效果
  8. Java并发编程:进程和线程之由来__进程让操作系统的并发性成为可能,而线程让进程的内部并发成为可能...
  9. Android真武剑之PopupWindow之三国杀
  10. 筛选DataTable数据的方法