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类设计为不可变主要目的是为了安全和高效.

java面试之String的理解(自我理解)的更多相关文章

  1. java面试-垃圾回收器谈谈你的理解

    一.垃圾回收算法: 引用计数 复制算法 标记-清除 标记-整理 二.垃圾回收的方式: 串行(Serial).并行(Parallel).并发(CMS).G1 1.串行垃圾回收器(Serial) 它为单线 ...

  2. java面试-谈谈你对OOM的理解

    一.OOM(OutOfMemoryError): 对象无法释放或无法被垃圾回收,造成内存浪费,导致程序运行速度减慢,甚至系统崩溃等严重后果,就是内存泄漏.多个内存泄漏造成可使用内存变少,会导致内存溢出 ...

  3. java面试-谈谈你对volatile的理解

    一.volatile特性: volatile是Java虚拟机提供的轻量级的同步机制.主要有三大特性: 保证可见性 不保证原子性 禁止指令重排序 1.保证可见性 1)代码演示 AAA线程修改变量numb ...

  4. java面试必备String详解

    引言 众所周知在java里面除了8种基本数据类型的话,还有一种特殊的类型String,这个类型是我们每天搬砖都基本上要使用它. String 类型可能是 Java 中应用最频繁的引用类型,但它的性能问 ...

  5. Java面试之String、StringBuffer和StringBuilder的区别和原理

    首先我们先来谈谈String: String 对象一旦创建,其值是不能修改的,如果要修改,会重新开辟内存空间来存储修改之后的对象,即修改了 String 的引用. 因为 String 的底层是用数组来 ...

  6. java面试之String源码中equals具体实现

    废话不多说,直接看代码,注释已经写在上面了: public boolean equals(Object anObject) { if (this == anObject) {//比较两个对象的地址 r ...

  7. 深入理解Java中的String

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

  8. 【转】深入理解Java中的String

    原文链接:http://www.cnblogs.com/xiaoxi/p/6036701.html 一.String类 想要了解一个类,最好的办法就是看这个类的实现源代码,来看一下String类的源码 ...

  9. 【Java面试】面试遇到宽泛的问题,这么回答就稳了,谈谈你对Redis的理解

    "谈谈你对Redis的理解"! 面试的时候遇到这类比较宽泛的问题,是不是很抓狂? 是不是不知道从何开始说起? 没关系,今天我用3分钟教你怎么回答. 大家好,我是Mic,一个工作了1 ...

随机推荐

  1. JAVA连接SAP

    1.首先需要在SAP事务码SE37中新建一个可以被远程调用的RFC 事务码:SE37 新建一个函数组:输入事务码SE37回车后,来到函数构建器屏幕,到上面一排菜单栏:转到 -> 函数组 -> ...

  2. Hibernate学习笔记三 多表

    一对多|多对一 表中的表达 实体中的表达 实体代码: package com.yyb.domain; import java.util.HashSet; import java.util.Set; p ...

  3. C语言第三次博客作业—循环结构

    一.PTA实验作业 题目1 1.实验代码 int N,i; //N为用户数 char sex; //sex表示性别 double High; //Hight表示身高 scanf("%d&qu ...

  4. java web 初学

    我希望在本学期本堂课上学会使用java web 框架 精通mvc架构模式 学会通过框架和数据库对产品进行构造与编写. 我计划每周用16小时的时间进行学习java web 一周4学时上课时间 周一到周五 ...

  5. 项目Beta冲刺Day1

    项目进展 李明皇 今天解决的进度 点击首页list相应条目将信息传到详情页 明天安排 优化信息详情页布局 林翔 今天解决的进度 前后端连接成功 明天安排 开始微信前端+数据库写入 孙敏铭 今天解决的进 ...

  6. [知识梳理]课本1&2.1-2.5

    面向对象的语言 出发点:更直接地描述客观世界中存在的事物(对象)以及它们之间的关系. 特点: 是高级语言. 将客观事物看作具有属性和行为的对象. 通过抽象找出同一类对象的共同属性和行为,形成类. 通过 ...

  7. linux cenots7安装mysql

        1.下载mysql 下载的话先确认好版本. system:centos7 mysql:5.7 下面的版本自己选择,一般是86位的. 下载好的文件 2.上传到服务器 soft文件夹,终端也进入了 ...

  8. Ubuntu命令行连接WPA/WPA2无线网线

    一,连接无加密无线网络zhang:sudo ip link set wlan0 up sudo iw dev wlan0 connect zhangsudo dhclient wlan0 二,连接WP ...

  9. ### Cause: org.apache.ibatis.binding.BindingException: Parameter 'name' not found. Available parameters are [arg1, arg0, param1, param2]

    org.apache.ibatis.exceptions.PersistenceException: ### Error updating database. Cause: org.apache.ib ...

  10. WPF 自定义DataGrid控件样式

    内容转自https://www.cnblogs.com/xiaogangqq123/archive/2012/05/07/2487166.html 一.DataGrid基本样式(一) 小刚已经把Dat ...