String类、多态、instanceof关键字

本文详细介绍了Java中的String类,包括其不可变性、常用及不常用方法,特别是`length()`和`equals()`方法的使用。接着讨论了多态的概念,如向上转型和向下转型,并强调了多态的实现条件。最后,探讨了`instanceof`关键字在类型转换中的作用,指出在向下转型前进行类型检查的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、String类

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

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

	public static void method() {
		//replace()替换
		String url = "http://www.tieba.baidu.com";
		System.out.println(url.replace("baidu", "bilibili"));
		System.out.println(url);
		//substring()截取 如果只有一个参数 代表开始,知道末尾结束
		System.out.println(url.substring(20));
		//如果有两个参数 参数一代表开始 参数二代表结束(不包含)
		System.out.println(url.substring(5, url.length()));
		System.out.println(url.length());
		//split() 分割 参数代表拆分的依据
		String[] urlArr =url.split("\\.");
		System.out.println(urlArr);
		for(int i=0;i<urlArr.length;i++) {
			System.out.println(urlArr[i]);
		}
		System.out.println("转换为大写"+url.toUpperCase());
		
	}

1.21.1、String类中不常用的方法

	public static void method2() {
		String str = "hello word";
		//对应下标为3的值 
		System.out.println("制定索引出的char值:"+str.charAt(3));
		//找出该字母对应的下标
		System.out.println("指定char值对应的索引:"+str.indexOf('d'));
		//如果有重复默认是第一个 last是最后一个
		System.out.println("指定char值对应的索引:"+str.lastIndexOf('l'));
		String compare1 = "asc";
		String compare2 = "aac";
		//两个数比较  在前的减去后面的
		System.out.println(compare2.compareTo(compare1));
		//字符拼接 concat
		System.out.println(compare2.concat(compare1));
		//有的话则为ture 否则 false
		System.out.println("是否包含指定的字符串:"+str.contains("hello"));
		String url = "https://www.baidu.com";
		//查看结尾是否是cn 对的话为ture 否则 false
		System.out.println(url.endsWith("cn"));
		//查看结尾是否为http开头  对的话为ture 否则 false
		System.out.println(url.startsWith("http"));
		//将字符串转换为字节数组
		byte[] bts = str.getBytes();
		//print(bts); 
		System.out.println("判断字符串是否为空字符:"+"".isEmpty());
	}

注意:数组中使用的length属性,String中使用的是length()!!!!

2、String中equal方法
ava中==和equals的区别:==号如果比较的是基本数据类型,那比较的值是否相等,如果比较的是引用数据类型,那比较的是地址是否相同;在String类中equals先比较地址,地址不相同再比较值是否相同。

	public static void main(String[] args) {
		String sr1 = new String("abc");//创建了两个对象 常量在变量池中 对象在堆中
		String sr2 = new String("abc");// 新创建一个对象 sr1 sr2两个对象的地址不相同
		System.out.println(sr1 == sr2); //所以结果为false
		System.out.println(sr1.equals(sr2));  //先对比对象的地址 然后对比内容 内容相同 则返回为true
		String sr3 = "a";//这时一个常量
		String sr4 = "b";//这也是一个
		String sr5 = sr3+sr4;//将两个地址的常量拼接在一起产生一个新的地址
		String sr6 = "ab";// sr6是一个新的地址 所以结果为false
		System.out.println(sr5 ==sr6);
		System.out.println(sr5.equals(sr6));  //先对比对象的地址 然后对比内容 内容相同 则返回为true
		String sr7 = "a"+"b"+"c";  //先做字符串的拼接再创建对象 所以结果是ture
		String sr8 = "abc";
		System.out.println(sr7 == sr8); //共用一个对象地址 结果为true
		System.out.println(sr7.equals(sr8));//true
	}

3、字符串常量池:

字符串常量池:字符串是常量,所有的字符串常量都是存储在常量池中的,每个常量在常量池中都有地址;在常量池中,如果定义的常量在常量池中已经存在,则不会再进行创建,而是直接拿来用,如果不存在就创建一个常量扔进常量池中

二、多态

多态就是多种形态: 分为向上转型、向下转型两种。例如:猫,既可以成为猫,也可以归为猫科动物,还可以归为动物
多态要求:必须是有继承或实现的关系,(而且有方法重写)
1、向上转型
语法格式:父类类型 变量名 = new 子类类型()
2、向下转型
语法:子类类型 变量名 = (子类类型) 父类形变量名;
向下转型,为了使用子类中的特有方法

public class DuoTaiDemo {
	public static void main(String[] args) {
	 	User u1 = new VipUser();  // 子----->父  向上类型转换 只能调用父类的方法
	 	u1.goShop();	 	
	 	int a = 1;  byte b = (byte)a;
	 	VipUser u2 = (VipUser)u1;// 父------>子   向下类型转换  强制类型转换 可以调用子类中的方法
	 	u2.vip();
	 		 	
	}
}

/**
 * 客户总类
 */
class User{
	public void welcome() {
		System.out.println("欢迎光临");
	}
	public void goShop() {
		System.out.println("购买·····");
	}
}

class commonUser extends User{
	public void common() {
		System.out.println("我是普通用户");
	}
}

class VipUser extends User{
	public void vip() {
		System.out.println("我是VIP用户!!");
	}
}

三、instanceof关键字

什么时间 在对类型进行向下转型时,一定要使用instanceof 运算符进行判断
语法 : (引用 instanceof 类型)
instanceof运行的结果只能为true /false

	 	if(u1 instanceof commonUser ){
	 		commonUser x = (commonUser )u1;
	 		x.common ();
	 	}else if(u1 instanceof VipUser) {
	 		VipUser x = (VipUser)u1;
	 		x.vip();
	 	}
	}
	 	System.out.println(u1 instanceof commonUser); 输出的结果为false
	 	System.out.println(u1 instanceof (VipUser);输出结果为true
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值