zoukankan      html  css  js  c++  java
  • 0126 String类

    在API中的String类代表字符串例如Sring s=“abc”中的“abc”就是此类的实例化展示,也就是一个String类的对象

    字符串的本质就是一个数组Sring s=“abc”中相当于是一个char[] arr={'a','b','c'};

    在String类中也可以通过构造方法去实现创建对象

    测试一下

    public static void main(String[] args) {
    		String s="abc";
    		String s2="abc";
    		String s3=new String("abc");
    		System.out.println(s==s2);//true
    		System.out.println(s.equals(s2));//true
    		System.out.println(s==s3);//false
    		System.out.println(s.equals(s3));//true
    	}
    

      上述代码中当s和s2进行比较的时候,结果是true,因为“a,b,c”作为string对象是一个用private final修饰的常量char数组,一次赋值终身不变。此时这个常量是进入的堆中的常量池,常量池中不允许有重复的常量存在,所以当我再创建s2=“a,b,c”时,他会将已经创建好的“a,b,c”的地址值赋值给s2,所以s和s2的地址值是一样的所以为true。那么当s与s3比较时结果为false,因为当new String("abc");的时候此时是两个对象其中“a,b,c”是一个对象,new string又是一个对象,此时new string的对象是在堆中附新的地址值,将新的地址值赋值给了s3,所以在比较时为false。那么看当调用equals方法的时候都为true,此时调用的是string类中的equals方法,重写了object类中的equals,所以比较的是内容。

    图解

    String类的构造方法

     (1)String()初始化一个新创建的 String 对象,使其表示一个空字符序列。

    例:String s=new String();

    (2)String(byte[] bytes)将一个byte字节数组转成字符串

    例:

    byte[] bytes={65,66,67,68};

    String s=new String(bytes);
    System.out.println(s);//ASCII表

    运行结果:ABCD

    注:将一个字节转为字符串的时候,当字节为整数的时候它对应的是ASCII码表,码表中66对应的是A,67对应的B,67对应的C,68,对应的是D。48对应的是0,97对应的是a

      那当字节中的数为负数的时候对应的是中文码表,一个中文代表两个字节

    (3)String(byte[] bytes, int offset, int length)将一个byte数组从offiset开始,传入多长length 返回一个新的字符串

    例:String s2=new String(bytes,1,2);从下标1开始,传入两个

    (4)String(char[] value)将一个字符数组转为字符串数组

    例:

    char[] ch={'a','b','0','1'};
    String s3=new String(ch);
    System.out.println(s3);

    运行结果为:

    ab01

    (5)String(char[] value, int offset, int count)将一个char数组从offiset开始,传入多多少个count返回一个新的字符串

    例:

    String s4=new String(ch,2,2);
    System.out.println(s4);//01

    String类的方法(常见)

     (1)length()返回字符串的长度

    (2)substring(int index)返回从index开始截取到字符串末尾的字符串

    (3)subsring(int index,int end)返回从index开始截取,截取end个的字符串

    (4)startsWhith(string index)判断该字符串是否以index开头

    (5)endsWith(string index)判断是否以index结尾

    (6)contains(string s)判断该字符串是否存在s字符

    (7)indexOf(string str)str字符串在该字符串中第一次出现的位置

    (8)getBytes()将该字符串转为字节数组

    (9)toCharArray() 将该数组转为字符数组

    (10)equals(string anotherString)判断该字符串是否与anotherString字符串相同

    (11)equalsIgnoreCase(String anotherString)判断该字符串是否与anotherString形同,不区分大小写

    (12)toString()返回该字符串本身

    例:

    public static void main(String[] args) {
    		// TODO Auto-generated method stub
    
    		String s="hello java,java is good";
    		//字符串长度
    		int len=s.length();
    		System.out.println(len);
    		//截取字符串
    		String s1=s.substring(6);
    		//包头不包尾
    		String s2=s.substring(2,6);
    		System.out.println(s1);
    		System.out.println(s2);
    		//判定以小字符串开头
    		boolean f1=s.startsWith("hello");
    		//判定以小字符串结尾
    		boolean f2=s.endsWith(".java");
    		System.out.println(f1);
    		System.out.println(f2);
    		//判断大字符串中是否包含小字符串
    		boolean f3=s.contains("java");
    		System.out.println(f3);
    		//获取小字符串在大字符串中第一次出现的索引值//若不存在就会返回-1
    		int a=s.indexOf("java");
    		System.out.println(a);
    		//将字符串转为字节数组
    		byte[] arr=s.getBytes();
    		for(int i=0;i<arr.length;i++){
    			System.out.print(arr[i]+"	");
    		}
    		System.out.println();
    		//字符串转字符出租
    		char[] arr1=s.toCharArray();
    		for(int i=0;i<arr1.length;i++){
    			System.out.print(arr1[i]+"	");
    		}
    		System.out.println();
    		//判断两个字符串是否相同
    		System.out.println("abc".equals("ABC"));
    		//忽略大小写比较
    		System.out.println("abc".equalsIgnoreCase("ABC"));
    		System.out.println(s);
    	}
    

      

  • 相关阅读:
    PAT (Basic Level) Practise 1013 数素数
    PAT (Basic Level) Practise 1014 福尔摩斯的约会
    codeforces 814B.An express train to reveries 解题报告
    KMP算法
    rsync工具
    codeforces 777C.Alyona and Spreadsheet 解题报告
    codeforces 798C.Mike and gcd problem 解题报告
    nginx + tomcat多实例
    MongoDB副本集
    指针的艺术(转载)
  • 原文地址:https://www.cnblogs.com/-gongxue/p/14329581.html
Copyright © 2011-2022 走看看