Java 总结 3 字符串

字符串
字符串实际属于类,不是简单类型,实际上所谓的字符串就是指一组字符的有序序列,可以使用双引号进行定义
String s=”字串内容”;
(1)

字符串指的是字符的序列,有两种类型的字符串,可以使用3个不同的类进行定义。
一种是创建以后不需要改变的,称为字符串常量,在Java中String类用于存储和处理字符串常量
另外一种字符串是创建以后,需要对其进行改变的,称为字符串变量,在Java中StringBuilder/StringBuffer类用于存储和操作字符串变量

String类型的基本使用
字符串在Java中以String类别的一个实例存在,不是简单类型,所以存放时有栈和堆之分
不可变immutable字符串。含义是一个字符串对象一旦被配置,它的内容就是固定不可变的immutable,如果需要进行修改则会引发对象的新建。
(2)

结论:
==针对引用类型比较的是两个变量中存储的对象的地址值
equals针对医用类型比较的是两个变量所指代具体对象中保存的值,是内容
不要以为下面的操作就是改变一个字符串对象的内容
String str = “Just”; str = “Justin”;

Java为了提高字符串的处理效率,提供了一个池子,其中存放一些常用的字串。对于一些可以共享的字符串对象,会先在String池中查找是否存在相同的String内容
(3)

当直接在程序中使用""来包括一个字符串时,该字符串就会在String池中
(4)
创建字串对象
new String()空的字符串常量,例如String s=new String();
new String(String value),例如String s=new String(“abcd”);
new String(char value[])例如char[] c=new char[]{‘a’,’b’}; String s=new String©;实际上就是创建一个字符串”ab”
new String(StringBuffer buffer)
还可以直接使用””进行赋值

字串的使用
字符串必须使用“”来包括您的文字,在Java中单双引号具有不同的含义,特别注意:单引号只能是char类型,其中包含一个字符或者使用\转义字符,属于简单类型,数据直接存储在栈中;双引号是String类型【注意S首字母大写】,属于引用类型,还有个特殊的常量池的问题。在Java中的字符是使用Unicode编码字符来建构
123系统识别为int类型,”123”系统识别为String类型
=是进行赋值操作,比较【简单类型比较的就是直接的数据,引用类型比较的是地址】,没有=比较

字符串的串接在Java中可以直接使用’+’,Java语法规则不允许用户重新定义运算符,但是Java重新定义了两个运算符:+和+=
(5)

+=的用法:
s1=s1+“bbc”;可以简化为s1+=“bbc”
这里可以根据需要的计算方式进行合理的类型转换,类型转换可以使用前面的包装类中提供的方法: xxx.parseXxx,例如double类型Double.parseDouble,Integer类型的Integer.parserInt写法,如果转换失败则报错NumberFormatException
在这里插入图片描述

其它类型转字符串
推荐写法:String s1=” ”+其它数据
在这里插入图片描述
字符串的使用
String msg =“哈啰!”;
msg = msg + “Java程序设计!”;
System.out.println(msg);
concat方法可以实现字符串的拼接操作,但是具体应用中还是使用+比较简单
在这里插入图片描述

字符串方法
length() 取得字符串的字符长度
(9)

注意【考点】:数组中的length是属性,调用方法为arr.length。而String中的length是方法,调用方法为string.length()

equals()	判断原字符串中的字符是否相等于指定字符串中的字符

==针对复杂类型是比较两个对象的地址值,并不比较内容
equals是String中定义的方法,用于比较内容,而不是地址
在这里插入图片描述
(10)

toLowerCase() 转换字符串中的英文字符为小写
toUpperCase() 转换字符串中的英文字符为大写
(11)
public int compareTo(String anotherString);如果当前字符串与参数字符串完全相同,则compareTo()方法返回0;如果当前字符串按字母序大于参数字符串,则compareTo()方法返回大于0的整数;反之,则返回小于0的整数
(12)(13)

public boolean equals(Object anotherObject);equals重载Object类的方法,如果当前字符串与参数字符串完全相同,则返回真,否则返回假.不可用==比较字符串的字符内容是否相同

public boolean equalsIgnoreCase(String anotherString);与方法equals的用法相似,只是它比较时不计大小写.实现机制实际上就是将字串转换为全大写或者全小写再进行比较
public String concat(String str); 该方法把参数字符串连接到当前字符串的尾部,并返回这个连接而成的字符串,但当前字符串本身不改变

(14)

使用+来串接字符串以达到附加新字符或字符串的目的,但+会产生一个新的String实例。不建议使用+来进行字符串的串接,建议使用StringBuilder或者StringBuffer

(15)
字符相关的操作
charAt(int):char 获取指定位置上的字符,这个值取值范围为0到string.length()-1,下标位置从0开始
(16)

加深总结

public static void main(String[] args) {
		
		String str  = "";
		String str1 = "";
		String str2 = "woaini";
		String str3 = "woaini";
		String str4 = new String("woaini");
		String str5 = new String("woaini");
		String str6 = str2+"";
		String str7 = str4.intern();//将str4 的东西推到常量池里面去
		
				
				
		//==比较的是两个字符串的物理地址 而equals则比较的是两个字符串的值
				
		System.out.println(str == str1);//true
		System.out.println(str2 == str3);//true
		System.out.println(str3 == str4);//false
		System.out.println(str2.equals(str4));//true
		System.out.println(str4 == str5);//false
		System.out.println(str6.equals(str2));//true
		System.out.println(str2 == str7);//true
		
		String st = "disjhfilsa. ";
		System.out.println(st.length());//字符串求长
		System.out.println(st.charAt(5));//给数组角标返回字符串中的具体字符
		System.out.println(st.indexOf("f"));//给出字符串中具体的字符 返回角标
		System.out.println(st.indexOf("di"));//找到具体参数 若找到返回第一个字符的角标 若没有找到 返回-1
		System.out.println(st.contains("sj"));//字符串中的字符数组是否包含方法中的字符 若包含 返回true 反之false
		System.out.println(st.lastIndexOf((int)'i'));//从后往前找 返回找到的第一个字符的角标
		System.out.println(st.indexOf("i", 4));//寻找第一个参数里的字符 并且把第二个参数作为角标并开始寻找 返回下一个参数字符的角标
		System.out.println(st.indexOf("i", st.indexOf("i")+1));//上一个的通用模式-
		System.out.println(st.substring(4));//代表从角标为4的字符到结束截取出来
		System.out.println(st.substring(4, 7));//代表从4开始截取到7 包含4 不包含7 
		System.out.println(st.substring(4, st.length()));//从4截取到结束
		
		
		//若想使用replace方法  由于String数组底层是一个由final修饰的字符数组 所以String字符串不能被改变 只能使用一个新的字符串来接受旧的字符串
		String ss = st.replace("dis", "sb");
		System.out.println(ss);//sbjhfilsa . 
		
		String s4 = st.concat("---------");//实现字符串连接
		System.out.println(s4);
		
		String s5 = st.toLowerCase();//将字符串中的大写字母变成小写
		String s6 = st.toUpperCase();//将字符串中的小写字母变成大写
		
		String s7 = st.trim();//删除字符串首尾的空格 不包含字符串里面的空格
		//String s = null;
		//String s1 = "";
		//判断返回值是否为空 若为空 返回 true 若不为空 返回 false
		//System.out.println(s.isEmpty());// 报错 null代表根本不存在 所以报错
		//System.out.println(s1.isEmpty());// true
		
		String [] array = st.split("i");//把split中的参数当作刀 将目标字符串切割    //若要使用"."来切割 则会因为正则表达式的原因 切割失败 若要切割成功 则需要以"//."来切割
		for(int i = 0; i < array.length; i ++) {//若要切割的刚好在处在字符串的第一个 且字符串后在没有这个字符 则返回一个空格和一个字符串
			System.out.println(array[i]);//若要切割的字符处在字符串的最后面 且前面在没有这个字符 则只返回一个字符串 不在返回那个空格
		}
	}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值