美文网首页
My Coding Notes

My Coding Notes

作者: 葵sunshine | 来源:发表于2019-03-09 21:02 被阅读0次

String

1. Java中String判断相等时equals与==的区别
  • equals :两个字符串对象所存放的内容相同,不需要存放的内存地址相同
  • == :当判断的两个变量所使用的内存地址为相同时才返回true
  • 当我们使用字符串连接--连接方式一般为+或concat("substring")--的方式创建字符串时,都会构建一个新的String对象,即在内存中开辟一个新的地址来存放,所以这个时候即使内容相同,用==判断的话,也是返回false;而使用等号赋值时,若内存中有该字符串,则该变量指向此内存地址,不是重新创建一个,所以此时用==时会返回true。

Java中String判断相等equals与==的区别以及StringBuilder的equals

2. Java 中 String、StringBuffer、StringBuilder 的区别
  • 运行速度:StringBuilder > StringBuffer > String
    String最慢的原因:
      String为字符串常量,创建后不可更改,而StringBuilder和StringBuffer均为字符串变量。在大量的string拼接操作出现的时候,JVM由于内存紧张,基本实时进行GC,引起速度变慢;
  • 线程安全:StringBuilder是线程不安全的,而StringBuffer是线程安全的
    原因:StringBuffer中很多方法可以带有synchronized关键字
  • 总结:String:适用于少量字符串操作的情况
    StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况
    StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况

Java中的String,StringBuilder,StringBuffer三者的区别

3. 常用方法
  • toCharArray() :将字符串转换为字符数组
  • 替换字符串中特定位置的字符:
法1:
String myName = "domanokz";
String newName = myName.substring(0,4)+'x'+myName.substring(5);
法2:
StringBuilder myName = new StringBuilder("domanokz");
myName.setCharAt(4, 'x');
System.out.println(myName);
4. HashSet和HashMap的区别
HashMap HashSet
HashMap实现了Map接口 HashSet实现了Set接口
HashMap储存键值对 HashSet仅仅存储对象
使用put()方法将元素放入map中 使用add()方法将元素放入set中
HashMap中使用键对象来计算hashcode值 HashSet使用成员对象来计算hashcode值,对于两个对象来说hashcode可能相同,所以equals()方法用来判断对象的相等性,如果两个对象不同的话,那么返回false
HashMap比较快,因为是使用唯一的键来获取对象 HashSet较HashMap来说比较慢

相关文章

网友评论

      本文标题:My Coding Notes

      本文链接:https://www.haomeiwen.com/subject/yfiepqtx.html