JAVA学习12--string类的特性

  • string类被关键字final修饰,代表该类不可被继承
  • final修饰的方法不能被重写,
  • final修饰的变量子只被赋值一次,string内部定义了final char[] value用于存储字符串数据,具有不可变性。String代表不可变的字符序列,即不可变性

“=="比较的是两个变量的地址值,字符串相同的变量在存储中存放在同一个位置,即变量指向同一个位置。当要修改字符串变量的值时,会重新开辟一个存储位置存储该字符串,不会在原位置进行修改,在此印证了不可变性。当对现有的字符串进行连接操作时,也需要重新指定内存区域赋值,不能在原有区域赋值。当调用string的方法修改字符串时,也需要重新指定内存区域赋值。

equals()比较的是变量的值

String对象的创建
可以直接创建:(数据存放在方法区的字符串产常量池中)

String str = “hello”

也可以利用

string str=new string()

进行创建(此时str是数据在堆空间中开辟空间后以后对应的地址值) 此时str是指向堆中的地址值,对应的堆中的地址值又指向常量池中的地址,修改str后,对应的堆中的地址值又指向新的常量池中的地址

String s = new String(“abc”)方式常见对象,在内存中创建了两个对象,一个是堆中new结构,另一个是char[]对应的常量池中的数据:“abc”。

  • 常量与常量的拼接结果在常量池中,且常量池中不会存在相同的内容的常量。
  • 只要拼接中有一个是变量,结果就会在堆中。
  • 只要拼接的结果调用intern(),返回值就在常量池中。

对于值传递: 基本数据类型传递的是传递的是数据,引用数据类型传递的是地址值。
什么是基本数据类型和引用数据类型? 数组是引用数据类型。

常用方法:

String s1 = "Hello world";
        System.out.println(s1.length());//长度
        System.out.println(s1.charAt(0));//获取对应索引位置的值
        System.out.println(s1.charAt(3));
        System.out.println(s1.isEmpty());
        String s2 = s1.toLowerCase();//将字符串转小写,s1不变
        System.out.println(s2);
        System.out.println(s1);
        String s3 = s1.toUpperCase();//将字符串转小写,s1不变
        System.out.println(s3);
        String s5 = "  world";
        String s6=s5.trim();//去除首尾的一个或多个空格
        System.out.println(s5+"----"+s6);
        System.out.println(s2.equals(s3));//判断支付穿的内容是否相同
        System.out.println(s2.equalsIgnoreCase(s1));//忽略大小写的前提下再判断字符串内容是否相同
        String s9 = s2.concat("def");//实现对字符串的拼接
        System.out.println(s2+"----"+s9);

        System.out.println(s9.compareTo(s2));//比较字符串大小,从前往后一个一个进行比较,只要不一样就会做减法,涉及到字符串排序
        String s10 = s2.substring(2);//从原字符串中截取字符串
        System.out.println(s10);
        String s11 = s2.substring(2, 4);//截取字符串,大于等于2小于4
        System.out.println(s11);
        System.out.println(s2.endsWith("d"));//判断紫字符串是否以某字符串结尾
        System.out.println(s2.startsWith("h") );//判断是否以某字符串开始
        System.out.println(s2.startsWith("he",2));//字符串从2开始是否是以he开头
        System.out.println(s2.contains("he"));//判断字符串中是否含有he字符串
        System.out.println(s2.indexOf("he"));//判断字符串是否存在"he",如果存在则返回第一次出现时的索引位置
        System.out.println(s2.indexOf("me"));//不存在则返回-1
        System.out.println(s2.indexOf("lo",1));//2表示从某一位值开始找,返回出现的位置,没有则返回-1.
        System.out.println(s2.lastIndexOf("ld"));//返回词字符串在最右边出现的位置
        System.out.println(s2.lastIndexOf("ld",6) );//返回字字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索
        System.out.println(s2.replace("l","r"));//替换某个字符
        System.out.println(s2);
        System.out.println(s2.replace("l","r") );//替换一段字符串,全部替换
        System.out.println(s2);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值