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来说比较慢 |
网友评论