以下是博主学java的时候记的一些笔记,分享给大家,如果有错误或者以为的话,可以在下方留言
String 类
可以使用String类声明字符串对象,
String s;
s = new String (“we are students”);
或者自己创建另一个字符串
String s = new String(“we are students”);
String类还有两种常用的方法
(1)String(char a[]) 用一个字符数组a创建一个字符串对象。
例:char a[] = {‘a’,’b’,’c’};
String s = new String(a);
相当于String s = new String(“abc”);
(2)String(char a[],int startIndex,int count) 提取数组a中第startIndex位置的字符开始,长度为count的字符串。
例:char a[] = {‘a’,’b’,’c’,’d’,’e’,’f’,’g’};
String s = new String(a,2,3);
相当于String s = new String(“cde”);
String类的常用方法
(1)public int length() 获得一个字符串的长度
(2)public boolean equals(String s) 比较当前字符串对象的实体和s是否相同,返回false或者true.
String tom = new String(“we are students”);
String boy = new String(“you are students”);
String jet = new String(“we are students”);
boy.equals(tom)的值是false.
注意:if(tom==jet)也是false,因为两者的内存是不同的。
(3)public boolean equalsIgnoreCase(String s) 和(2)作用相同,只是可以不区分大小写。
例:
<span style="font-size:18px;">package com.string;
public class chuan {
public static void main(String []args){
String s1,s2,s3,s4;
s1=new String("how are you!");
s2=new String("how old are you?");
s3=new String(s1);
char as[]={'a','c','d','g','h'};
s1=new String(as,2,2);
System.out.println(s1);
int a="nishizhu ".length();
System.out.println(s1.equals(s2));
System.out.println(s1==s3);
System.out.println(s1.equalsIgnoreCase(s3));
System.out.println(s1.length()+"\n"+a);
s1="how are you!";
s2="how are you!";
s3="how old are you?";
System.out.println(s1==s2);
System.out.println(s1==s3);
}
}</span>
答案:
<span style="font-size:18px;">dg
false
false
false
2
9
true
false</span>
(1)public boolean startsWith(String s) 判断字符串对象的前缀是否和s相同,返回false或true。
(2)public boolean endsWith(String s) 判断字符串对象的后缀是否和s相同,返回false或true。
(1)public boolean regionMathes(int start,String s,int orstart,int length)
从当前字符串的start位置开始,取长度length的字符串与s串的orstart位置开始长度为length的字符串比较,相同返回true,否则返回false。
(2)public boolean regionMathes(boolean b,...,...,...,...)
和(6)的用法相同,当b取ture时,忽略大小写。
(3)public int compareTo(String s) 按照字典序比较当前字符串和s的大小,如果相同,返回0,大于返回正值,小于的话返回负值.
例:
String str = “abcde”; str.compare(“boy”)小于0;
(4)public int compareToIgnoreCase(String s)和(8)相同,只是忽略大小写。
例:
<span style="font-size:18px;">package com.strings;
public class fangfa {
public static void main(String []args){
String s1,s2;
s1=new String("nishizhuba");
s2=new String("nishizhu");
String s3=new String("nishinishininishi");
String s4=new String("abcbab");
if(s4.compareToIgnoreCase("ABCbab")>0){
System.out.println("字典序较大");
}
else{
if(s4.compareToIgnoreCase("abcbab")<0){
System.out.println("字典序较小");
}
else{
System.out.println("字典序相同");
}
}
if(s1.endsWith("nishi")){
System.out.println("匹配!");
}
else{
System.out.println("不匹配!");
}
if(s2.startsWith("nishi")){
System.out.println("匹配!");
}
else{
System.out.println("不匹配!");
}
int m=0;
for(int i=0;i<s3.length();i++){
if(s3.regionMatches(i,"ni",0,2)){
m++;
System.out.println("第"+m+"次匹配");
}
}
}
}</span>
答案:
<span style="font-size:18px;">字典序相同
不匹配!
匹配!
第1次匹配
第2次匹配
第3次匹配
第4次匹配</span>
(1)public boolean contains(String s) 判断当前字符串是否含有s。
(2)public int indexOf(String s) 检索当前字符串中是否找到s,如果没有找到,则返回-1,否则返回首次出现s的位置。
(1)public int indexOf(String s,int start) 从当前的第start个字符的位置开始检索s,并返回首次出现s的位置。
(2)public int laseIndexOf(String s) 从当前字符串的头开始检索s,并返回最后一次出现s的位置,否则返回-1。
(3)public String substring(int start) 获得一个字符串,这个字符串是当前字符串从start开始截取到最后的字符串。
(4)public String substring(int start,int end) 获得一个字符串,这个字符串是从start开始截取到end(不包括end)的字符串。
(5)public String trim() 获得一个字符串,这个字符串是当前字符串去掉空格后的字符串。
(6)public static int parseInt(String s) 可以将由“数字”字符组成的字符串转换成int类型的数据。
例:String s = ”12345620”;
int x = Integer.parseInt(s); //x的值转化为int型的12345620
(7)public static byte parseByte(String s) 可以将由“数字”字符组成的字符串转化为byte类型的数据。
例:byte x = Byte.parseByte(s);
(8)public static short parseShort(String s) 可以将由“数字”字符组成的字符串转化为short类型的数据。
例:short x = Short.parseShort(s);
(9)public static long parseLong(String s) 可以将由“数字”字符组成的字符串转化为long类型的数据。
例:long x = Long.parseLong(s);
(10)public static float parseFloat(String s) 可以将由“数字”字符组成的字符串转化为float类型的数据。
例:float x = Float.parseFloat(s);
(11)public static double parseDouble(String s) 可以将由“数字”字符组成的字符串转化为double类型的数据。
例:double x = Double.parseDouble(s);
可以使用String类的以下方法将123456.12等数值转换为字符串:
(1)public static String valueOf(byte n)
(2)public static String valueOf(int n)
(3)public static String valueOf(long n)
(4)public static String valueOf(float n)
(5)public static String valueOf(double n)
例: String str = String.valueOf(124354.142);
可以使用Long类中的以下方法得到整数的各种进制的字符串表示:
(1)public static String toBinaryString(long i)
(2)public static String toOctalString(long i)
(3)public static String toHexString(long i)
(4)public static String toString(long i,int p)
其中的toString(long i,int p)返回整数i的p进制表示。
例:
<span style="font-size:18px;">package com.Stringss;
import java.util.Arrays;
class zhuahuan{
void sort(String a[]){
for(int i=0;i<a.length-1;i++){
for(int j=i+1;j<a.length;j++){
if(a[i].compareTo(a[j])>0){
String temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
}
}
public class StringSort{
public static void main(String []args){
String s1[]={"njk","uieh","jkhk","jhuiu"};
String s2[]=Arrays.copyOf(s1, s1.length);
String a="nishizhuzhuzhu";
String b="akjh khiuh lh ughu gf";
System.out.println(a.contains("zhu"));
System.out.println(a.indexOf("zhu",6));
System.out.println(a.lastIndexOf("zhu"));
System.out.println(a.substring(3,6));
System.out.println(b.trim());
zhuahuan z=new zhuahuan();
z.sort(s1);
//zhuahuan.sort(s1);
for(String s:s1){
System.out.println(s);
}
String s4="a\\bc\\f\\dsf\\afsf";
System.out.println(s4.length());
String s3="123456";
int x=Integer.parseInt(s3);
double y=Float.parseFloat(s3);
System.out.println(y);
System.out.println(x);
String str=String.valueOf(x);
System.out.println(str);
}
}</span>
答案:
<span style="font-size:18px;">true
8
11
hiz
akjh khiuh lh ughu gf
jhuiu
jkhk
njk
uieh
15
123456.0
123456
123456</span>
(1)public void getChars(int start,int end,char c[],int offset) 将当前字符串从start到end-1位置上的字符复制到数组c中,并且从数组的offset开始负值。但是,必须要保证数组c能够存下这些被复制的字符。
(2)public char[] toCharArray() 将当前字符串的全部字符复制到字符数组中
例:
<span style="font-size:18px;">package com.argss;
import java.util.Date;
class Student{
String name;
public Student(){
}
public Student(String s){
name=s;
}
public String toString(){
String oldStr=super.toString();
return oldStr+"\nI am a student,my name is "+name;
}
}
public class argss {
public static void main(String []args){
Date date=new Date();
System.out.println(date.toString());
Student zhang=new Student("zhang san");
System.out.println(zhang.toString());
System.out.println(new Student("li xiao").toString());
char []a,b,c;
String s="德国足球队击败巴西足球队";
a=new char[2];
s.getChars(5,7,a,0);
System.out.println(a);
b=new char[s.length()];
s.getChars(7,12,b,0);
s.getChars(5,7,b,5);
s.getChars(0,5,b,7);
System.out.println(b);
c=s.toCharArray();
System.out.println(c);
for(char t:c){
System.out.print(t);
}
System.out.println();
String result="123jhg75454fds".replaceAll("\\p{Alpha}+","你好");
System.out.println(result);
}
}</span>
答案:
<span style="font-size:18px;">Sun Jan 03 21:44:22 CST 2016
com.argss.Student@422ed1e8
I am a student,my name is zhang san
com.argss.Student@fd6f84a
I am a student,my name is li xiao
击败
巴西足球队击败德国足球队
德国足球队击败巴西足球队
德国足球队击败巴西足球队
123你好75454你好</span>
正则表达式及其字符串的替换和分解
正则表达式就是含有一些具有特殊意义字符的字符串,比如:“\\d”。
public boolean matches(String regex) 判断当前字符串对象是否和参数regex指定的正则表达式匹配。
方括号中元字符的意义如下:
[abc]:代表a,b,c中任何一个。
[^abc]:代表除a,b,c中的任何一个
[a-zA-Z]:代表英文字母中的任何一个
[a-d]:代表a至d中的任何一个
[a-d[m-p]]:代表a至d,或m至p中的任何字符
[a-z&&[def]]:代表d,e,f中的任何一个
[a-f&&[^bc]]:代表a,d,e,f。
注意:如果要使用普通意义的点字符,必须使用[.]。
字符串的替换
public String replaceAll(String regex,String replacement) 该方法将当前字符串的与regex正则表达式相同的子字符串用replacement字符串替换,并且返回字符串。
例:String s = “123hello4512”.replaceAll(“\\d+”,”你好”);
s=“你好hello你好”
注意:当前字符串调用replaceAll()方法返回一个字符串,但不改变当前字符串。
例:
<span style="font-size:18px;">package com.zhengze;
import java.util.Scanner;
public class zhengze {
public static void main(String []args){
String re="[0-9]*[.]?[0-9]*";
String s1="12d45ds6";
String s2="123.45667";
if(s1.matches(re)){ //s1是否和正则表达式re相同
System.out.println(s1+"可以表示数字");
}
else{
System.out.println(s1+"不能表示数字");
String res=s1.replaceAll("\\D+","");
System.out.println("修改后的字符是:"+res);
}
if(s2.matches(re)){
System.out.println(s2+"可以表示数字");
}
Scanner rer=new Scanner(System.in);
String se=rer.nextLine();
String regex="[\\d\\s\\p{Punct}]+";
String as[]=se.split(regex);
int i=1;
for(String s:as){
System.out.print("第"+i+"组");
i++;
System.out.println(s);
}
}
}
</span>
答案:
<span style="font-size:18px;">12d45ds6不能表示数字
修改后的字符是:12456
123.45667可以表示数字
</span>
字符串的分解
public String[] split(String regex) 该方法将正则表达式regex作为分隔符,把分隔的每一项存放在字符串数组中。
例:String s = “1931年09月18日,日本发动侵华战争”;
String regex = “\\D+”; //代表任意多个非数字字符
String re[] = s.split(regex);
那么re数组的值分别是“1931”,“09”,“18”;