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);
    	}
    

      

  • 相关阅读:
    详解Java API之正则表达式
    ios UIWindow 错误使用导致无法接收motionEnded(摇一摇)函数
    ios NSTimer的强引用问题
    ionic 接触的第一个Hybrid项目
    iOS 小经验:UIAnimation空对象导致crash
    iOS GCD 必读推荐,有关于单例使用问题
    ios NSString 转 float的注意
    iOS UIViewController 和 nib 相关的3个方法
    ios delegate 使用注意 assign,weak
    ios 使用autolayout 后button 的frame 无法设置问题!
  • 原文地址:https://www.cnblogs.com/-gongxue/p/14329581.html
Copyright © 2011-2022 走看看