目录
1 String类常用方法
1.String的构造方法
1)String(String original):把字符串数据封装成字符串对象
2)String(char[] value):把字符数组的数据封装成字符串对象
3)String(char[] value, int index, int count):把字符数组中的一部分数据封装成字符串对象
2.String类的获取功能:
String str = "adsfaxsdfas沙发上案发地方";
System.out.println(str.length());
运行结果:
18
2)charAt(int index):获取指定索引处的字符
String str = "adsfaxsdfas沙发上案发地方";
char[] c = {'a','d','s','f','a'};
System.out.println(str.charAt(12));
运行结果:
发
3)indexOf(String str):获取str在字符串对象中第一次出现的索引
String str = "adsfaxsdfas沙发上案发地方";
System.out.println(str.indexOf('a',5));
运行结果:
9
4)substring(int start):从start开始截取字符串
String str = "adsfaxsdfas沙发上案发地方";
System.out.println(str.substring(1));
运行结果:
dsfaxsdfas沙发上发地方
5)String substring(int start,int end):从start开始,到end结束截取字符串。包括start,不包括end
String str = "adsfaxsdfas沙发上案发地方";
System.out.println(str.substring(1, 12));
运行结果:
dsfaxsdfas沙
3.String判断功能
1)equals(Object obj):比较字符串的内容是否相同
String str = "adsfaxsdfas沙发上案发地方";
System.out.println(str.equals("adsfaxsdfas沙发上发地方"));
System.out.println(str.equals("adsfaxsdfas"));
运行结果:
true
false
2)equalsIgnoreCase(String anotherString):比较字符串的内容是否相同,忽略大小写
String str = "adsfaxsdfas沙发上案发地方";
System.out.println(str.equalsIgnoreCase("ADsfaxsdfAs沙发上发地方"));
运行结果:
true
3)startsWith(String prefix):判断字符串对象是否以指定的字符开头(区分大小写)
String str = "adsfaxsdfas沙发上案发地方";
System.out.println(str.startsWith("a"));
System.out.println(str.startsWith("A"));
运行结果:
true
false
4)startsWith(String prefix,int toffset):判断字符串对象是否以指定的字符开头,参数toffset为指定从哪个下标开始
String str = "adsfaxsdfas沙发上案发地方";
System.out.println(str.startsWith("f", 3));
System.out.println(str.startsWith("f", 4));
运行结果:
true
false
5)endsWith(String str):判断字符串对象是否以指定的字符结尾
String str = "adsfaxsdfas沙发上案发地方";
System.out.println(str.endsWith("x"));
System.out.println(str.endsWith("方"));
运行结果:
false
true
7)startsWith(String prefix):判断字符串是否以指定字符开头
String str = "adsfaxsdfas沙发上发地方";
System.out.println(str.startsWith("a"));
运行结果:
true
4.String类中的转化方法:
public static void main(String[] args) {
String str = "adsfaxsdfas沙发上发地方";
char arr[] = str.toCharArray();
printArray(arr);
}
public static void printArray(char a[]) {
for(int i=0;i<a.length;i++) {
System.out.print(a[i]+"--");
}
}
运行结果:
a–d--s–f--a–x--s–d--f–a--s–沙--发–上--发–地--方–
String str1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
System.out.println(str1.toLowerCase());
运行结果:
abcdefghijklmnopqrstuvwxyz
String str1 = "abcdefghijklmnopqrstuvwxyz";
System.out.println(str2.toUpperCase());
运行结果:
ABCDEFGHIJKLMNOPQRSTUVWXYZ
5.其他常用方法
String str3 = " a c e x u a n x u a n ";
System.out.println(str3.trim());
System.out.println(str3);
运行结果:
a c e x u a n x u a n
a c e x u a n x u a n
2)split():去除字符串中指定的的字符,然后返回一个新的字符串
public static void main(String[] args) {
String str = "adsfaxsdfas沙发上发地方";
String array[] = str.split("a");
printString(array);
}
public static void printString(String a[]) {
for(int i=0;i<a.length;i++) {
System.out.print(a[i]);
}
}
运行结果:
dsfxsdfs沙发上发地方
3)subSequence(int beginIndex,int endIndex ):截取字符串中指定位置的字符组成一个新的字符串
String str = "adsfaxsdfas沙发上发地方";
System.out.println(str.subSequence(1, 10));
运行结果:
dsfaxsdfa
4)replace(char oldChar, char newChar):将指定字符替换成另一个指定的字符
String str = "adsfaxsdfas沙发上发地方";
System.out.println(str.replace('a', 's'));
运行结果:
sdsfsxsdfss沙发上发地方
2 Integer类常用方法
① parseInt(String s)方法
String year = "2018";
int i = Integer.parseInt(year);
System.out.println(i/2);//1009
② parseInt(String s,int radix)方法
解释:将字符串s按照radix进行转换相应的进制数,然后运行的结果都是以十进制的形式打印
String year = "1110";
String age = "A";
//指定year的进制为2进制
int i = Integer.parseInt(year,2);
//指定age的进制为16进制
int i2 = Integer.parseInt(age,16);
System.out.println(i);//14
System.out.println(i2);//10
③ 任何类型+"" 变成String类型
int src = 3;
String dest = src + "";
System.out.println(dest+1);//31
④ toString()方法
解释:Integer类中的静态方法toString()转换成字符串
int src = 50;
String dest = Integer.toString(src);
System.out.println(dest+1);//501
⑤ toString(int ,int 进制)
解释:将int整数转成指定的进制数
int src = 32;
//将int整数转换成指定的进制数
String dest = Integer.toString(src,2);
System.out.println(dest);//100000
⑥ Integer valueOf(String s)方法 和 Integer valueOf(String s, int radix)方法
解释:返回保存指定的 String 的值的 Integer 对象。
解释:返回一个 Integer 对象,该对象中保存了用第二个参数提供的基数进行解析时从指定的 String 中提取的值。
String age1 = "22";
System.out.println(Integer.valueOf(age1));//22
总结:valueOf()与parseInt()区别
源码分析:
public static int parseInt(String s)
public static Integer valueOf(String s)
public static Integer valueOf(String s) throws NumberFormatException
{
return new Integer(parseInt(s, 10));
}
由源码知:valueOf()的内部其实就是调用了parseInt()方法
由源码知区别1:parseInt返回的是基本类型int,而valueOf返回的是对象
由源码知区别2:Integer.ValueOf()会比Integer.parseInt()多创建一个Integer对象
最后得出:从效率上考虑,建议首先考虑parseInt方法。
3 StringBuilder常用方法
一.append 的用法:实现字符串的连接,可接:String . Char
二 .toString 的用法:返回一个与构造器或缓冲器内容相同的字符串
三..CharAt(int Index):检索特定索引下的字符
四.setCharAt(int i,char c):将第i个代码单元设置为c
五.insert(int offset,String str/Char c):在指定位置前插入字符串或者字符
六.delete(int start,int end):删除包含起始位置但是不包含结尾位置之间的字符串
/**
* 测试StringBulider
* @author administrator
*
*/
public class TestStringBuilder {
public static void main(String[] args) {
StringBuilder sb1 = new StringBuilder();
//append:链接字符串或者字符
System.out.println("StringBuilder:"+sb1.append("Hello").append('-'));
//return StringBuilder:Hello-
//toString:返回一个与构造器或者缓冲器内容相同的字符串
System.out.println("StringBuilder:"+sb1.toString());
//return StringBuilder:Hello-
//CharAt:检索特定索引下的字符
System.out.println("StringBuilder:"+sb1.charAt(0));
//return StringBuilder:H
//setCharAt:将指定索引的字符设置为指定字符 (可理解为替换)
sb1.setCharAt(sb1.length()-1, '+');
System.out.println("StringBuilder:"+sb1);
//return StringBuilder:Hello+
//insert:在指定索引前插入字符串/字符
sb1.insert(5, "World");
System.out.println("StringBuilder:"+sb1);
//return StringBuilder:Hello World+
//delete:从初始位置start(包含)开始删除与i知道结束位置end(不包含)
System.out.println("The fifth is:"+sb1.charAt(5));
System.out.println("The eleventh is:"+sb1.charAt(10));
sb1.delete(5, 10);
System.out.println("StringBuilder:"+sb1);
/*return The fifth is:W
The eleventh is:+
StringBuilder:Hello+*/
}
}
4 Character类的常用方法
在对象中包装一个基本类型 char 的值。Character 类型的对象包含类型为 char 的单个字段。 以确定字符的类别(小写字母,数字,等等)
构造方法:
public Character(char value)
构造一个新分配的 Character 对象,用以表示指定的 char 值
Character类的判断功能:
public static boolean isDigit(char ch)
确定指定字符是否为数字。
public static boolean isLetter(char ch)
确定指定字符是否为字母。
public static boolean isLowerCase(char ch)
确定是否是小写字母字符
public static boolean isUpperCase(char ch)
确定是否大写字母字符
两个转换功能:
public static int toLowerCase(char ch)
使用取自 UnicodeData 文件的大小写映射信息将字符参数转换为小写。
public static int toUpperCase(char ch)
使用取自 UnicodeData 文件的大小写映射信息将字符参数转换为大写。
5 数据转换方法
1 String与char转换
//1.String类的toCharArray()方法,将字符串转为字符(char)数组
String ss=”abc”;
char[] cc;
cc=ss.toCharArray();
这时cc={‘a’,’b’,’c’};
//2.String类的valueOf()方法,将字符(char)数组转换为字符串
char[] cc={‘a’,’b’,’c’};
ss=String.valueOf(cc);
这时ss=“abc”;
//3 创建新空间
String ss="abc";
char[] cc;
cc=ss.toCharArray();
String res=new String(cc);
System.out.println(res);//res="abc"
2 String与StringBuilder转换
String类与StringBuilder类的相互转换
1.String类转换为StringBuilder类
public class String12 {
public static void main(String[] args){
String s = "hello";
StringBuilder sb = new StringBuilder(s);
System.out.println(sb);
}
}
2.StringBuilder类转换为String类
public class String12 {
public static void main(String[] args){
StringBuilder sb = new StringBuilder();
sb.append("abc").append("efg");
String s = sb.toString();
System.out.println(s);
}
}
StringBuilder sb = new StringBuilder();
for(int i = 0; i < a.length; i++)
sb.append(a[i]);
3 String与int转换
1 如何将字串 String 转换成整数 int?
A. 有两个方法:
1). int i = Integer.parseInt([String]); 或
i = Integer.parseInt([String],[int radix]);
2). int i = Integer.valueOf(my_str).intValue();
注: 字串转成 Double, Float, Long 的方法大同小异.
2 如何将整数 int 转换成字串 String ?
A. 有叁种方法:
1.) String s = String.valueOf(i);
2.) String s = Integer.toString(i);
3.) String s = "" + i;
注: Double, Float, Long 转成字串的方法大同小异.
4 int与char的互相转换
在引言中,我们可以看到,int
类型是一个32位的数据类型,因为其位有符号数,所以,其取值范围为:-2^31 至 2^31 - 1。
而char
为16位的数据,为无符号数,其范围为:0 至 2 ^ 16 -1,即 0 - 65535,用十六进制码来看,则为:’\u0000’ - ‘\uffff’。
再从前面引言中对于ascii码的描述,我们可以看出,无论是什么字符,在计算机中,其实也是以数字(本质为一个二进制数)的形式存储的,因此,在java中,无论是一个字符,还是一个字符型变量,实则也是一个数字,所以,可以直接将一个(不超过char的范围的)数字赋值给一个char变量,即可输出其结果:
char c1 = 97;
System.out.println(c1);
输出:
a
可以看到,正确输出了97的ascii码所对应的字符:‘a’。
同样的,我们可以将一个字符赋值给一个int变量,因为字符也是一个数字嘛
int num1 = 'a';
System.out.println(num1);
输出:
97
甚至,我们可以将一个数字与一个字符在一个表达式中进行计算:
char c2 = 'a' + 1;
int num2 = 'a' + 1;
System.out.println("c2: " + c2);
System.out.println("num2: " + num2);
System.out.println("(char) num2: " + (char) num2);
输出:
c2: b
num2: 98
(char) num2: b
因为字符’b’所对应的ascii码是98,比’a’所对应的97要大1,所以,将’a’加1之后,得到的便是字符’b’了。同时,将int型的num2直接进行强制转换,也可以得到所期望的’b’。
char数组转int
// 先转String,再转int
char nums[] = {'a','b','c'};
for (int i = 0; i < nums.length; i++) {
int temp = Integer.parseInt(String.valueOf(nums[i]));
}
int转char数组
// 先转String,再转char数组
int num = 9;
String str= String.valueOf(num);
char[] nums = str.toCharArray();
5 StringBuilder转换
字符数组->StringBuilder:
StringBuilder sb = new StringBuilder();
for(int i = 0; i < a.length; i++)
sb.append(a[i]);