Java学习笔记之常用方法类(一)String类、正则表达式

以下是博主学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相同,返回falsetrue

(2)public boolean endsWith(String s)  判断字符串对象的后缀是否和s相同,返回falsetrue

(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)的用法相同,当bture时,忽略大小写。

(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)返回整数ip进制表示。

:

<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) 将当前字符串从startend-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”;



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值