本文主要是介绍Java学习笔记:字符、字符串、操纵字符串及比较字符串,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
#.字符
$.保存一个字符的时候使用char
public abstract class YXQ {
public abstract void sout();
public static void main(String[] args) {
char c1 = 'a';
char c2 = '1';//字符1,而非数字1
char c3 = '中';//汉字字符
}
}
$.char对应的封装类Character
#.字符串String详解
$.创建字符串
- 字符串即字符的组合,在Java中,字符串是一个类,所以我们见到的字符串都是对象
- 常见创建字符串手段:
- 1. 每当有一个字面值出现的时候,虚拟机就会创建一个字符串
- 2. 调用String的构造方法创建一个字符串对象
- 3. 通过+加号进行字符串拼接也会创建新的字符串对象
$.immutable不可改变的
- 比如创建了一个字符串对象
- String garen ="盖伦";
- 不可改变的具体含义是指:
- 不能增加长度
- 不能减少长度
- 不能插入字符
- 不能删除字符
- 不能修改字符
- 一旦创建好这个字符串,里面的内容 永远 不能改变
- String 的表现就像是一个常量
$.字符串的常用方法
- 字符串长度:length方法返回当前字符串的长度
- 获取字符:charAt(int index)获取指定位置的字符
- 获取对应的字符数组:toCharArray()获取对应的字符数组
- 截取子字符串:subString 截取子字符串
- 分隔:split 根据分隔符进行分隔
- 去掉首尾空格: trim 去掉首尾空格
- 大小写:toLowerCase 全部变成小写
toUpperCase 全部变成大写
- 定位:indexOf 判断字符或者子字符串出现的位置
contains 是否包含子字符串
- 替换:replaceAll 替换所有的
replaceFirst 只替换第一个
$.比较字符串
- str1和str2的内容一定是一样的!
- 但是,并不是同一个字符串对象
public class YXQ {
public static void main(String[] args) {
String str1 = "the light";
String str2 = "the light";
String str3 = new String(str1);
String str4 = new String(str1);
//==用于判断是否是同一个字符串对象
System.out.println( str1 == str4);
}}
- 使用equals进行字符串内容的比较,必须大小写一致
- equalsIgnoreCase,忽略大小写判断内容是否一致
- startsWith //以...开始
- endsWith //以...结束
#.String
String是不可变对象,即对象一旦生成,就不能被更改。对String对象的改变会引发新的String对象的生成。
#.StringBuffer
StringBuffer是可变长的字符串
- append 追加
- delete 删除
- insert 插入
- reverse 反转
StrinhBuffer:每次都对对象本身进行操作,而不是生成新的对象。所以在字符串内容不断改变的情况,建议使用StringBuffer。
String对象的字符串拼接其实是被JVM解释成了StringBuffer对象的拼接,所以这些时候String对象的速度并不会比StringBuffer慢。
public class YXQ {
public static void main(String[] args) {
String a ="there is a "+"simple"+"test";
StringBuffer b = new StringBuffer("there is a ").append("simple").append("test");
}}
这是因为,在JVM眼里:String S1 = “This is only a” + “ simple” + “ test”;就是String S1 = “This is only a simple test”;
#.StringBuild
StringBuild是JDK1.5新增加的一个类,与StringBuffer具有相同的操作。区别在于:StringBuffer是线程安全的类。StringBuild不是线程安全的类,在单线程中性能要比StringBuffrer高。
描述HashTable和HashMap区别一样,就是因为HashTable支持线程同步、保证线程安全而导致的性能下降。
HashTable是线程安全的,很多方法都是synchronized方法。
HashMap不是线程安全的,但在单线程程序中的性能比HashTable要高。
这篇关于Java学习笔记:字符、字符串、操纵字符串及比较字符串的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!