zoukankan      html  css  js  c++  java
  • Java探索之旅(13)——字符串类String

    1.初始化

               String类是Java预定义类,非基本类型而是引用类型。

    public class StudyString {
    	public static void main(String[] args) {
    		String s1="Hello World";//初始化1
    		String s2=new String("Hello World");<span style="font-family: Arial, Helvetica, sans-serif;">//初始化2</span>
    		char[] charArray={'H','e','l','l','o',' ','W','o','r','l','d'};
    		String s3=new String(charArray);<span style="font-family: Arial, Helvetica, sans-serif;">//初始化3</span>
    		String s4=s1;//相同指向,true
    		String s5="Hello World";//相同字符串直接量,s1==s5,true
    
        System.out.println((s1==s2)+
        		      " "+(s1==s3)+
        		      " "+(s2==s3)+
        		      " "+(s1==s4)+
        		      " "+(s1==s5));//false false false true true,相同的字符串序列的直接量,使用同一个实例
        System.out.println(s1.equals(s2)+
        		" "+s1.equals(s3)+
        		" "+s2.equals(s3)+
        		" "+s1.equals(s4));//true true true true<pre name="code" class="java"><span style="font-family:Arial, Helvetica, sans-serif;">      }}</span>

    
    

           JVM中默认,具有相同字符串序列的字符串直接量使用同一个实例。如s5==s1为真。

    2.常用函数

       ❶字符串间比较(是否相等,是否区域匹配,头匹配和尾匹配)

       ❷字符串长度和字符串拼接

                  length():int                         返回长度,数组则为成员变量length
                  charAt(int):char                 返回指定下标的字符
                  concat(String s1):String     返回与s1拼接的字串,‘+’也可以实现

          计算机中,字符串的值以私有数组的形式储存。可以使用字符串常量直接调用相关函数。

       ❸获取子串: 
              substring(int startIndex,int endIndex):String;//后一个参数可以为空,默认为末尾,割取索引 startIndex-endIndex-1的子字符串

       ❹字符串的转换、替换和分割成字串(大小写转换,替换,分割子串,正则表达式的匹配和分割)


        replace(old,new)。用来进行字符串或者字符替换。均不改变原来的数据,只是返回变动后的字符串。默认匹配的字符或者字符串全部替换,可以使用replaceFirst仅仅更改第一匹配位置。

        正则表达式的多字符匹配和分割
    
         ⑴matches()匹配检查比equals()更加强大。比如匹配目标可以是正则表达式“Java.*”,所有以“Java”开头的字符串都与之匹配。返回boolean。如
        ⑵使用replaceFirst,replaceAll,替换源目标为正则表达式。
          String s="a+b$#c".replaceAll("[$+#]","NNN");//输出aNNNbNNNNNNc,所有的$,+,#均被替换
         ⑶使用splitf分割字符串成字符串数组
                  String[] s="Java,chb.china?ppp".split("[,.?]");//[]里面都认为是分界符号,返回以这些字符为分界符分割成字符串数组。 

       ❺将字符或数值转换为字符串

                 Double.parseDouble(str)或者Integer.parseInt(str)将字符串转换成double或者Int型

       ❻字符串中匹配字符串或字符的位置


          注明:返回的所有下标,均是指是在源字符串中的下标。indexof返回的是fromindex之后的最先一次坐标,lastindexof返回的是fromIndex之前的最后一次下标

       ❼字符串和数组的相互转换
         toArray()将String转换成字符数组
         getcChars(int srcBegin,int srcEnd,dst,int dstBegain);//将[srcBegain srcEnd-1]的字符复制到字符数组dst从下标dstBegain开始的位置
         字符数组到字符串:使用String构造法或者valueOf()。

     子函数测试代码:

    public class StudyString {
    	public static void main(String[] args) {
    		String s1="Hello World";
    
        System.out.println(s1.regionMatches(2, "Hello",2,3)+"  "
        +s1.regionMatches(true, 2, "HeLLo",2,3));//true true
        
        
        System.out.println(s1.concat(new String(" Java!")));//字符拼接,输出 Hello World Java!
        System.out.println("Java!".charAt(0));//可以 使用直接量直接调用函数
        
        System.out.println(" abcd  ".trim());//去掉两边的空格,返回"abcd"
        
        System.out.println("abcdabca".replace("a","CHB"));//返回"CHBbcdCHBbcCHB"
        
    	String[] s="abcd,fg.gs#t".split("[,.#]");//返回"abcd"
    	for(String u:s)
    		System.out.println(u);//输出abcd fg gs t
    
    	}
    }
    ⑴  ""+i
    ⑵ new Integer(i).toString();
    ⑶ String.valueOf(i);
    ⑷ Integer.toString(i);

      可读性:1差,2次之,3和4很好,.
      性能:1最差,2次之,4最佳,3几乎直接调用4。
    测试循环执行一段转换时所用时间大概为 3:2:1:1.


    4.控制台读取String

          ❶忽略开头的空格字符,使用next()读取以空白字符(' ',' ','f',' ',' ',空格,制表,换纸,回车,换行)结束的字符串;

      ❷使用nextline读取一整行文本(以回车键' '结束)的字符串。

      输入16进制转换成10进制数:
    import java.util.Scanner;
    public class StudyString {
    	private static Scanner input;
    	public static void main(String[] args) {
    		input = new Scanner(System.in);
    		String hexNumber=input.next();
    		int decimalNumber=0;
    		for(int i=0;i<hexNumber.length();i++)
    			decimalNumber=16*decimalNumber+hexTodecimal(hexNumber.charAt(i));
    		
    		System.out.println(hexNumber+"对应的10进制数为"+decimalNumber);
    
    	}
    	public static int hexTodecimal(final char ch)
    	{
    		if('A'<=ch&&ch<='F')
    			return 10+ch-'A';
    		else
    			return ch-'0';
    	}
    }


  • 相关阅读:
    Jenkins安装和初始化配置
    KVM环境下vCPU绑定到物理CPU
    关于自动化测试环境的集成(Jenkins+RobotFramework+TestLink+SVN)
    Linux下PPPoE Server测试环境搭建
    CentOS安装使用vnc进行远程桌面登录
    linux下PPTP Server测试环境搭建
    202020211 20209301《Linux内核原理与分析》第一周作业
    博弈论学习笔记(一)四个入门结论
    官宣!Amazon EMR正式支持Apache Hudi
    LessCss学习笔记 CCH
  • 原文地址:https://www.cnblogs.com/engineerLF/p/5393084.html
Copyright © 2011-2022 走看看