Java 中 String 类的常规操作
String类型详解
String本身就是一个类,只是Java对其进行了特殊处理。
两种实例化方式原理及区别:
/* 两种创建 String 对象的方法
* 1. 直接赋值:(推荐按这种方法)
* 2. 使用构造方法
* */
String str1 = "123";
String str2 = new String("123");
/*两者的区别
* 1. 直接赋值: 只会开辟一块堆内存空间,并且该对象会保存在对象池中,以供下次使用
* 2. 使用构造方法: 会开辟两块堆内存空间,并且一块将会成为垃圾,并且不会自动保存到对象池中,但可以通过 str1.intern() 方法手工入池
* */
// 两种创建 string 对象的区别
String str3 = "123"; // 与 str1 共享 "123" 数据所占的堆内存空间
System.out.println(str1 == str3); // 值为: true; JVM的常量共享
// 字符串的比较
System.out.println(str1 == str2); // 结果为 false
System.out.println(str1.equals(str2)); // 结果为 true
/*
* 原因分析:
* "==" 只能进行数值的比较,str1 == str2 实际比较的是两个字符串内存地址的数值
* "equals()" 比较的才是两者的内容的区别
* */
/*
* 在以后的开发中强烈建议采用 way_2 比较字符串.
* 原因在于:
* way_1 中 str1 如果为空的话会产生空指针异常,导致程序终止
* way_2 中 str1 即使为空,只会得到的结果为 false,不会出现异常
* */
// way_1
str1.equals("hello");
// way_2
"hello".equals(str1);
常用操作分类:
构造函数:
String(byte[] bytes)
String(byte[] bytes, Charset charset)
String(byte[] bytes, String charsetName)
String(byte[] bytes, int offset, int length)
String(char[] value)
String(char[] value, int offset, int count)
String(StringBuffer buffer)
String(StringBuilder builder)
字符串与字符数组:
char[] | toCharArray() |
字节与字符串:
byte[] | getBytes() |
byte[] | getBytes(Charset charset) |
byte[] | getBytes(String charsetName) |
字符串比较:
int | compareTo(String anotherString) 比较字符串的大小(-1、0、1) |
int | compareToIgnoreCase(String str) 忽略大小写比较字符串大小 |
boolean | equals(Object anObject) |
boolean | equalsIgnoreCase(String anotherString) |
字符串查找:
boolean | contains(CharSequence s) 是否包含 |
boolean | endsWith(String suffix) |
int | indexOf(String str) 返回找到的 str 的首字母索引值 |
int | indexOf(String str, int fromIndex) 从指定位置查找 |
int | lastIndexOf(String str) 倒着查找 |
int | lastIndexOf(String str, int fromIndex) |
boolean | matches(String regex) 使用正则表达式匹配 |
boolean | startsWith(String prefix) |
boolean | startsWith(String prefix, int toffset) |
字符串替换:
String | replace(char oldChar, char newChar) |
String | replaceAll(String regex, String replacement) |
String | replaceFirst(String regex, String replacement) |
字符串拆分:
String[] | split(String regex) |
String[] | split(String regex, int limit) 限制拆分后的个数 |
字符串截取:
String | substring(int beginIndex) |
String | substring(int beginIndex, int endIndex) |
其他常用方法
char | charAt(int index) 返回指定索引位置的字符 |
String | concat(String str) 连接两个字符串类似 “+” |
boolean | isEmpty() |
String | intern() |
int | length() |
String | toLowerCase() 转换为小写 |
String | toUpperCase() 转换为大写 |
String | trim() 去除开头结尾的空格(注意只有这一种方法:1.8) |
PS:上面的方法是直接从 Java 1.8 API 文档中提取出来的,这里主要作为一个个人总结,由于较为简单所以没有符详细代码。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
