String类(Java)

1.String类基本用法
  1. String类就是字符串类 是引用类型
    构造方法(字符串的创建)
//字符串的创建
//方式一
String str1 = "abcdef";

//方式二
String str2 = new String("abcdef");

//方式三
char[] array = {'a','b','c','d'};
String str3 = new String(array);

字符串是引用类型,在内存中的存储如图
在这里插入图片描述

2. 字符串常量池

String str1 = "abcdef" 这种方式创建的字符串直接存放在在堆中的常量池 ,并将字符串所在常量池的地址给str1

String str1 = new String("hello").intern() ; 而这种方式创建的在堆中但不在常量池,而是在堆中new了一块内存,并且存放的是常量池“abcdef”字符串的引用
使用 String 的 intern 方法来手动把 String 对象加入到字符串常量池
String str1 = new String("hello").intern() ;在这里插入图片描述

3. 字符串的常用方法
  1. 字串串的获取长度
String str1 = "abcdef";
int len = str1.length();//length() 是一个方法

数组的获取长度
char[] ch = {1,2,3,4,5};
int len = str1.length;//length 是一个属性
  1. 字符串比较
String str1 = "abcdef";
String str2 = new String("abcdef");
System.out.println(str1 == str2);//false

在这里插入图片描述

        String str3 = new String("abcdef");
        System.out.println(str2 == str3);//false

在这里插入图片描述

3.1字符串比较相等
1.//如果两个字符串常量直接拼接+ 那么在编译期间就处理为拼接的结果,并且在常量池中只存在一份拼接后的结果
	String str4 = "ab"+"cdef";//abcdef   final int a = 10
        System.out.println(str1 == str4);//true
        
2.// 和 int或者double拼接都一样,因为编译时,只要有字符串,则其它都转化为字符串,
//而且在常量池储存的也是拼接后的结果
        String str10 = "hello" + 10;//"hello10"
        String str11 = "hello10";
        System.out.println(str10 == str11);

3.//这种拼接是在 运行时 才进行的拼接,new 一个新的对象都是运行时进行,在常量池中"ab"存一份,"cdef"存一份
  	String str5 = "ab" + new String("cdef");
        System.out.println(str1 == str5);//false
        //str1.equals(str5) 比较两个字符串是否相等,是按照ASCII码表值进行比较,返回true/false
        //str1.equalsIgnoreCase(str5) 是不区分大小比较相等,
        System.out.println(str1.equals(str5));//true
        System.out.println(str5);
        
4.//运行时进行相加,相加完之后会在堆中(不是在常量池,运行时new的都在堆上)创建一个新的对象,并将新对象的引用赋值给str8
	String str6 = "ab";
        String str7 = "cdef";
        String str8 = str6+str7;
        System.out.println(str1 == str8);// false
        System.out.println(str1.equals(str8));        

5.比较大小:
	str1.equals(str5) 比较两个字符串是否相等,是按照ASCII码表值进行比较,返回true/false
        str1.equalsIgnoreCase(str5) 是不区分大小比较相等,
        str1.compareTo(str5) 按照ASCII码表值比较大小,返回值为int 
         /**
         * 如果对应位置相同一直往后走
         * 找到不一样的字符 进行比较,
         * str1和str2
         * str1 > str2  >0
         * str1 < str2  <0
         * str1 == str2 =0
         * 比较完成之后,返回差值,结束。不再进行向下比较
         */
        String str1 = "abcdef";
        String str2 = "abfdef";
        System.out.println(str1.equals(str2));//true
        System.out.println(str1.equalsIgnoreCase(str2));
        System.out.println(str1.compareTo(str2));
                                                  
3.2字符(char)和字符串

 	1. //数组  --》  字符串
 	char[] value = {'a','b','c','d','e'};
        String str = new String(value);//将字符数组转为字符串
        System.out.println(str)// String copyValueOf(char data[])也可以将数组转为字符串,		
	//但类型只能为字节类型(char)
        String str1 = String.copyValueOf(value);
        
        2. //数组  --》  字符串 (从某个位置开始转成字符串)
        //String str2 = new String(value,1,4)
        //将字符数组 从偏移量offset位置(下表位置1)开始的count个字符(4个字符)来构造字符串
        //运行时期的异常:StringIndexOutOf.....
        String str2 = new String(value,1,4);
        System.out.println(str2);
        String str3 = "abcdef";        
        
        String copyValueOf(char data[], int offset, int count)
       
        3.//.....charAt(参数:下标-》0)  获取字符串的下表位置的 字符
        /*char ch = str3.charAt(4);
        System.out.println(ch);*/
        System.out.println(str3.charAt(3));
        
        4. //字符串  --》  数组
        char[] crray = str3.toCharArray();
        System.out.println(Arrays.toString(crray));

3.3 字节(byte)和字符串
	1.// 字节数组  --》  字符串
 	 byte[] brray= {97,98,99,100};
        System.out.println(Arrays.toString(brray));
	
	2. // 字节数组  --》  字符串(从某个位置开始转成字符串)
        //从偏移量1的位置开始的length个字节来构造字符串
        String string = new String(brray,1,3);
        System.out.println(string);
  
	3.// 字符串  --》  字节数组
        String string1 = "abcdef";
        byte[] bytes = string1.getBytes();
        System.out.println(Arrays.toString(bytes));
  	
  	4. // 字符串  --》  字节数组 可设置转换的编码方式
         //编码转换处理
        String string2 = "中";
        byte[] bytes2 = string2.getBytes("unicode");
        System.out.println(Arrays.toString(bytes2));

  
3.4.字符串的查找

在这里插入图片描述

3.5.字符串的替换

在这里插入图片描述

3.6字符串的拆分

在这里插入图片描述

String str = "hello world hello bit" ;  
String[] result = str.split(" ") ; // 按照空格拆分 
for(String s: result) {     
System.out.println(s); 
}

String str = "hello world hello bit" ;  
String[] result = str.split(" ",2) ;  
for(String s: result) {     
System.out.println(s); 
} 
3.7字符串的截取

在这里插入图片描述

String str = "helloworld" ;  
System.out.println(str.substring(5)); //world
System.out.println(str.substring(0, 5));//hello  范围为 前闭后开
3.8其它操作方法

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值