Java中的String类

String类

String类概念:

String是引用数据类型,表示字符串(其实是由多个字符组成的)

String类特点:

String是final修饰的,所以是最终类,最终类是不能被继承的,既然不能被继承也就意味着里面的方法不能被重写

String中常见的方法:

public static void method() {
		//replace()替换
		String url="http://www.news.baidu.com";
		String newUrl=url.replace("baidu ", "jd");
		System.out.println(newUrl); // 输出:http://www.jd.com
		
		//substring()截取 如果只有一个参数,代表开始,直到末尾结束,String类按照数组的下标来排序
		System.out.println(url.substring(7));//输出:www.news.baidu.com
		System.out.println(url.length());     // 输出:25
		//substring()截取,如果有两个参数,参数一代表开始,参数二代表结束位置(不包含)
		System.out.println(url.substring(7, url.length()-1)); //输出:www.news.baidu.co
		
		//split 分割 参数代表要拆分的依据 \\.
		String []urlArr=url.split("\\.");
		System.out.println(urlArr[urlArr.length-2]);//输出:baidu
		System.out.println("转换为纯大写:"+url.toUpperCase());//输出:转换为纯大写:HTTP://WWW.NEWS.BAIDU.COM
	}

String中不常见的方法:

public static void method2() {
	String str="hihi2";
	
		System.out.println("指定索引出的char值:"+str.charAt(1)); // 下标从0开始,charAt(1)对应的是i
		System.out.println("指定char值对应的索引:"+str.indexOf('i'));// 指定char值对应的索引:1
		System.out.println("指定char值对应的索引:"+str.lastIndexOf('i'));// 指定char值对应的索引:3
		String compare1="adc";
		String compare2="aac";
		System.out.println(compare2.compareTo(compare1));// -3
		System.out.println(compare2.concat(compare1));  // aacadc
		System.out.println("是否包含指定的字符串:"+str.contains("hello"));// 是否包含指定的字符串:false
		String url="https://www.baidu.com";
		System.out.println(url.endsWith("cn"));//输出:false
		System.out.println(url.startsWith("http"));//true
		//将字符穿转换为字节数组
		byte[] bts=str.getBytes();
		//print(bts);
		System.out.println("判断字符串是否为空字符:"+"".isEmpty());//true

地址判断:

1.将传递过来的字符串转换为字符数组。判断长度是否相同

2.根据下标位置,逐个比较字符是否相同

面试题:

​ ==和equals的区别
​ ==用于基本数据类型时 比较的是值 , 用于引用数据类型时 比较的是地址
​ equals 在字符串中是先比较地址后比较内容

public static void method3() {
		//equals() 重写了Object中的equals方法,先比较地址,地址不同,再比较内容,地址相同就止直接返回true
		String str=new String("hello");
		String str2=new String("hello");
		System.out.println(str==str2);//false 地址不同
		System.out.println(str.equals(str2));//true 虽然地址不同,但是内容相同
	}

字符串对象的创建:

1.字符串本身是引用数据类型,可以通过new关键字进行对象创建

2.字符串有比较特殊,它也可以直接赋值的形式进行字符串对象的创建

问: 上述的区别在哪里?

答:API中说明:字符串都是常量,字符串常量都在常量池(方法区)中存储,是有自己的地址的,通过new关键字创建出来的对象在堆内存中。 常量池:如果要指定某一个常量进行使用,首先会先去常量池中查看该常量是否已存在,如果存在就直接拿来用,如果不存在就创建一个放进常量池

public static void method4() {
		String str=new String("haha");
		String str2=new String("haha");
		System.out.println(str==str2);//false 地址不同
		String str3="hehe";
		String str4="hehe";
		System.out.println(str3==str4);//true 使用的都是常量池中的同一个
		System.out.println("------");
		
		String str6="hello";
		String str7="world";
		String str8="helloworld";
		String str9=str6+str7; //对象已创建好了 再进行拼接
		System.out.println(str8==str9);//false
		System.out.println(str8.equals(str9));// true 虽然地址不同,但是内容相同
		System.out.println("------");
		
		String str0="a"+"b"+"c"; //先拼接再创建的对象
		String str01="abc";
		System.out.println(str0==str01);//ture
		System.out.println(str0.equals(str01));//ture
		
	}

面试题:数组当中使用的是length属性还是length方法?

答:数组中使用的length属性,String中使用的是length()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值