一.创建字符串
1.直接创建
String str = "123";
str = "1234";
-
编译器会使用该值创建一个 String 对象
-
String类是不可以改变的,所以一旦创建值就不能改变,但是可以改变指向关系,指向一个新的字符串。
String str1 = "asd";
String str2 = "asd";
//比较两个对象是否相同,比较地址
System.out.println(str1 == str2);
//true
//比较两个内容是否相同
System.out.println(str1.equals(str2));
//true
-
因为String类是不可以改变的,所以它在内存中是被共享的。所有内容相同的字符串的内存位置相同。
-
==
用来判断两个对象是否是同一个对象,所以比较的是两个对象的地址。 -
equals
比较的是两个字符串对象的内容是否相等。
2.构造方法
String 类有 11 种构造方法,这些方法提供不同的参数来初始化字符串。
- 字符串常量初始化
String temp = new String("nihao");
- 字节数组初始化
//结果相同都是abc
byte[] name = {'a','b','c'};
String str = new String(name);
byte[] name = {97,98,99};
String str = new String(name);
- 使用字节数组的一部分初始化
//第一个参数的索引处到第二个参数的索引处
//不包括第二个参数的索引
byte[] name = {'a','b','c'};
String str = new String(name,1,1);
- 使用字符数组初始化
char[] name = {'你','好','啊'};
String str = new String(name);
byte和char的区别:byte占据一个字节,char占据两个字节,byte更省内存。
二.创建格式化字符串
-
输出格式化数字可以使用 printf() 和 format() 方法。
-
String 类的静态方法 format() 能用来创建格式化字符串
String fs;
fs = String.format("浮点型变量的值为 " +
"%f, 整型变量的值为 " +
" %d, 字符串变量的值为 " +
" %s", floatVar, intVar, stringVar);
三.String方法
- 返回指定索引处的 char 值。
public char charAt(int index)
char[] name = {'你','好','啊'};
String str = new String(name);
char c = str.charAt(0);
//你
- 按字典顺序比较两个字符串。
//按照字典比较其实说的是比对ASCII码的值
//compareTo(String)方法中其实是从头开始
//一个一个字符的比对原字符串和参数字符串中的字符
//如果相同就下一个,直到字符出现不同(包括某一个字符串结束了)
//就计算这两个不同字符的ASCII码的差,作为返回值。
//如果参数字符串等于此字符串,则返回值 0;
//如果此字符串小于字符串参数,则返回一个小于 0 的值;
//如果此字符串大于字符串参数,则返回一个大于 0 的值。
int compareTo(String anotherString)
//不考虑大小写
int compareToIgnoreCase(String str)
- 将指定字符串连接到此字符串的结尾,返回一个新的字符串。
public String concat(String s)
char[] name1 = {'你','好','啊'};
String str1 = new String(name1);
byte[] name2 = {'a','b','c'};
String str3 = new String(name2);
String str = str1.concat(str2);
//你好啊abc
- 用于将此字符串与指定的 StringBuffer 比较,当且仅当字符串与指定的StringBuffer有相同顺序的字符时候返回真。
public boolean contentEquals(StringBuffer sb)
String str1 = "String";
StringBuffer str2 = new StringBuffer( "String");
boolean result = str1.contentEquals( str2 );
//true
- 返回指定数组中表示该字符序列的字符串。
public static String copyValueOf(char[] data)
//offset -- 子数组的初始偏移量,count -- 子数组的长度
//或者说从参数一的索引处到参数二的索引处,但是不包括参数二处的索引
public static String copyValueOf(char[] data, int offset, int count)
- 判断该字符串是否以指定的字符串为后缀/前缀。
public boolean endsWith(String suffix)
public boolean startsWith(String prefix)
//toffset -- 字符串中开始查找的位置
public boolean startsWith(String prefix, int toffset)
String url = "http://www.baidu.com";
if (url.endsWith(".com")){
System.out.println("网址");
}
if (url.startsWith("http")){
System.out.println("http协议");
}
if (url.startsWith("www",7)){
System.out.println("万维网");
}
- 判断一个字符串是否包含另外一个字符串。
public boolean contains(String var)
boolean source = "hello".contains("hel");
//true
- 将字符串与指定的对象比较。
public boolean equals(Object anObject)
if ("abc".equals("bcd")){
System.out.println("相同");
}else {
System.out.println("不相同");
}
//不相同
//不考虑大小写
public boolean equalsIgnoreCase(String anotherString)
- 将字符串转化为byte数组。
//使用平台的默认字符集将字符串编码为 byte 序列
//并将结果存储到一个新的 byte 数组中
public byte[] getBytes()
//使用指定的字符集将字符串编码为 byte 序列
//并将结果存储到一个新的 byte 数组中
public byte[] getBytes(String charsetName)
throws UnsupportedEncodingException
- 将字符从字符串复制到目标字符数组。
//srcBegin -- 字符串中要复制的第一个字符的索引。
//srcEnd -- 字符串中要复制的最后一个字符之后的索引。
//dst -- 目标数组。
//dstBegin -- 目标数组中的起始偏移量。
public void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
public class Test {
public static void main(String args[]) {
String Str1 = new String("www.runoob.com");
char[] Str2 = new char[6];
try {
Str1.getChars(4, 10, Str2, 0);
System.out.print("拷贝的字符串为:" );
System.out.println(Str2 );
} catch( Exception ex) {
System.out.println("触发异常...");
}
}
}
//拷贝的字符串为:runoob
- 返回字符串的哈希码。
public int hashCode()
- 返回指定内容在字符串中第一次出现的索引,如果没有,则返回 -1。
//返回指定字符在字符串中第一次出现处的索引
public int indexOf(int ch)
//返回从 fromIndex 索引处开始查找指定字符在字符串中第一次出现处的索引
public int indexOf(int ch, int fromIndex)
//返回指定字符串在字符串中第一次出现处的索引
public int indexOf(String str)
//返回从 fromIndex 索引处开始查找指定字符串在字符串中第一次出现处的索引
public int indexOf(String str, int fromIndex)
public class Main {
public static void main(String args[]) {
String string = "aaa456ac";
//查找指定字符是在字符串中的下标。在则返回所在字符串下标;不在则返回-1.
System.out.println(string.indexOf("b")); // indexOf(String str); 返回结果:-1,"b"不存在
// 从第四个字符位置开始往后继续查找,包含当前位置
System.out.println(string.indexOf("a",3));//indexOf(String str, int fromIndex); 返回结果:6
//(与之前的差别:上面的参数是 String 类型,下面的参数是 int 类型)参考数据:a-97,b-98,c-99
// 从头开始查找是否存在指定的字符
System.out.println(string.indexOf(99));//indexOf(int ch);返回结果:7
System.out.println(string.indexOf('c'));//indexOf(int ch);返回结果:7
//从fromIndex查找ch,这个是字符型变量,不是字符串。字符a对应的数字就是97。
System.out.println(string.indexOf(97,3));//indexOf(int ch, int fromIndex); 返回结果:6
System.out.println(string.indexOf('a',3));//indexOf(int ch, int fromIndex); 返回结果:6
}
}
- 返回指定内容在字符串中最后一次出现的索引,如果没有,则返回 -1。
//返回指定字符在字符串中最后一次出现处的索引
public int lastIndexOf(int ch)
//返回从 fromIndex 索引处开始查找指定字符在字符串中最后一次出现处的索引
public int lastIndexOf(int ch, int fromIndex)
//返回指定字符串在字符串中最后一次出现处的索引
public int lastIndexOf(String str)
//返回从 fromIndex 索引处开始查找指定字符串在字符串中最后一次出现处的索引
public int lastIndexOf(String str, int fromIndex)
- 返回字符串的长度。
public int length()
- 返回字符串的子字符串。
public String substring(int beginIndex)
//beginIndex -- 起始索引(包括), 索引从 0 开始
//endIndex -- 结束索引(不包括)
public String substring(int beginIndex, int endIndex)
- 将此字符串转化为一个新的字符数组。
public char[] toCharArray()
- 使用默认语言环境的规则将此 String 中的所有字符都转换为小写/大写。
//转换为小写
public String toLowerCase()
//转换为大写
public String toUpperCase()
- 用于删除字符串的头尾空白符。
public String trim()
- 返回给定类型参数的字符串表示形式。
static String valueOf(基本类型/对象类型 value)
public class Test {
public static void main(String args[]) {
double d = 1100.00;
boolean b = true;
long l = 1234567890;
char[] arr = {'r', 'u', 'n', 'o', 'o', 'b' };
System.out.println("返回值 : " + String.valueOf(d) );
System.out.println("返回值 : " + String.valueOf(b) );
System.out.println("返回值 : " + String.valueOf(l) );
System.out.println("返回值 : " + String.valueOf(arr) );
}
}
//返回值 : 1100.0
//返回值 : true
//返回值 : 1234567890
//返回值 : runoob
网友评论