博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
String常见面试题及与StringBuffer区别
阅读量:5320 次
发布时间:2019-06-14

本文共 2126 字,大约阅读时间需要 7 分钟。

1 public class StringDemo 2 { 3     public static void main(String[] args) 4     { 5         String s1 = "abc"; 6         String s2 = "abc"; 7         sop("s1==s2: "+(s1==s2));//true 8         sop("=============="); 9         /*10             1.这里的结果是true. 由于字符串是常量(内存中创建对象后不能修改), 而且字符串在程序中经常使用. 11             所以Java对其提供了缓冲区. 缓冲区内的字符串会被共享. 12             使用双引号的形式定义字符串常量就是存储在缓冲区中的. 13             使用"abc"时会先在缓冲区中查找是否存在此字符串, 没有就创建一个, 有则直接使用. 14             第一次使用"abc"时会在缓冲区中创建, 第二次则是直接引用之前创建好的了.15         */16         String s3 = "de";17         String s4 = "abcef";18         String s5 = s1+s3;19         sop("s4==s5: "+(s4==s5));//false20         sop("==============");21         /*22             2.这里的结果是false. Java中字符串的相加其内部是使用StringBuilder类的append()方法和toString()方法23               来实现的. 而StringBuilder类toString()方法返回的字符串是通过构造函数创建的.24         */25 26         String s6 = new String("abc");27         String s7 = new String("abc");28         sop("s6==s7: "+(s6==s7));//false29         sop("==============");30         /*31             3.这里的结果是false. 使用构造函数创建的字符串都是在缓冲区外面创建一个新的.32             所以只要是使用构造函数创建的字符串, 和任何字符串都不会相等.33         */34         35         String s8 = "xyz";36         String s9 = "xy"+"z";37         sop("s8==s9: "+(s8==s9));//true38         sop("==============");39         /*40             4.这里的结果是true. 其实这里的s2并没有进行字符串相加, 两个双引号形式的字符串常量相加, 41               在编译的时候直接会被转为一个字符串"abc".42         */43 44         String str = "abc";45         str.substring(3);46         str.concat("123");47         sop(str);//abc48         sop("==============");49         /*50             5.这里结果是"abc". 由于字符串是常量(内存中创建对象后不能修改), 该类中所有方法都不会改变字符串的值. 如果希望使用一个可变的字符串, 可以使用StringBuilder或StringBuffer类.51         */52 53         /*54         String和StringBuffer有什么区别?55         JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。56         这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。57         当你知道字符数据要改变的时候你就可以使用StringBuffer。58         */59 60     }61     public static void sop(Object obj)62     {63         System.out.println(obj);64     }65 }

 

转载于:https://www.cnblogs.com/hacket/archive/2013/04/21/3034011.html

你可能感兴趣的文章
数据类型转换
查看>>
HNOI2018
查看>>
Android中检测网络连接状况的方法
查看>>
【理财】关于理财的网站
查看>>
Ubunt中文乱码
查看>>
《当幸福来敲门》读后
查看>>
python3基础知识自学笔记3-集合字典元组
查看>>
session的属性/方法/事件
查看>>
【转】系统无法进入睡眠模式解决办法
查看>>
思维导图 第六章 项目进度管理
查看>>
[Tex学习笔记]尝试数学公式
查看>>
省市县,循环组装,整合大数组
查看>>
C语言中返回字符串函数的四种实现方法
查看>>
Jmeter学习及使用(一)安装
查看>>
H5 调用手机摄像机、相册功能
查看>>
Google Closure Compiler 高级模式及更多思考(转)
查看>>
python--闭包函数、装饰器
查看>>
【坑】linux目录软连接的相关操作--很容易误操作
查看>>
Phpstorm中使用SFTP
查看>>
stm32中字节对齐问题(__align(n),__packed用法)
查看>>