java基础--适配器设计模式、String类

一.适配器设计模式
1.类适配器
 让没有关系的类和接口产生联系,可以扩展功能,增加已有代码的复用性
public class Demo01 {
	public static void main(String[] args) {
		Target iphone6 = new IPhone6();
		iphone6.connection();
		//使用适配器的类
		Target iphone7 = new Adapter();
		iphone7.connection();
	}
}
class IPhone7{
	//听音乐方法
	public void listenMusic() {
		System.out.println("直接使用充电口听");
	}
}
interface Target{
	//耳机连接的抽象方法
	public abstract void connection();
}
class IPhone6 implements Target{
	@Override
	public void connection() {
		System.out.println("使用3.5mm听");
	}
}

//使用继承 让类和接口产生联系
//使用一个适配器类(第三方的类)通过这个类
//类与接口产生联系 提高接口兼容性
class Adapter extends IPhone7 implements Target{
	@Override
	public void connection() {
		// 实现抽象方法
		System.out.println("使用转接头");
		super.listenMusic();
	}	
}
2.对象适配器
3.缺省适配器
//健身房
interface JSF{
	public abstract void run();
	public abstract void woTui();
	public abstract void yaLing();
	
}
//使用一个类作为桥梁 来连接接口与类
//让适配器类来实现接口 空实现
//适配器类 只是对接口方法的空实现
//不希望这个适配器类 直接被使用
abstract class MyAdapter implements JSF{
	@Override
	public void run() {
	}
	@Override
	public void woTui() {
	}
	@Override
	public void yaLing() {
	}
}
//这时就可以直接继承适配器类
class WL extends MyAdapter{
	//重写适配器类的方法
	@Override
	public void run() {
	}
}
二.String类
注意:字符串 是常量 字符串常量
        修改的是字符串引用(地址),指向不同的地址 ,而不是字符串自身被修改。
String s2 = "abcd";//在方法区的常量池创建一个字符串
String s3 = new String("abcd");//相当于是在堆内存中开辟一块空间
== 号 对象的话 比的是地址而  equals 把两个字符串变成字符数组,一位一位地进行比较
三.一些String中的方法
1.获取
根据索引获取字符串中字符
    char charAt(int index)
    根据字符获取在字符串中的位置
    整数和字符可以相互转换 ackii码表
    int indexOf(int ch)
//获取索引
String s1 = "wwwlooog";
int index = s1.indexOf('g');
System.out.println(index);
//从传入的索引这一位开始查找
int index1 = s1.indexOf('g', 3);
System.out.println(index1);
//传入字符串 查找对应的角标
int index2 = s1.indexOf("lo");
2.判断 返回值都是布尔类型
String string = "wwwlooog";
//判断包含
boolean rel1 = string.contains("wl");
System.out.println(rel1);
//判断前缀
boolean startsWith = string.startsWith("www");
//判断后缀
boolean rel3 = string.endsWith("oog");
//判断两个字符串相等
boolean rel4 = string.equals("haha");
//判断两个字符串忽略大小写相等
boolean rel5 = string.equalsIgnoreCase("wwwlooog");
//字符串转小写
String s1 = string.toLowerCase();
//字符串转大写
String s2 = string.toUpperCase();
3.替换
String string = "wanglong";
		String s1 = string.replace('w', 'l');
		System.out.println(s1);
		
		String s2 = string.replace("long", "ba");
		System.out.println(s2);
4.字符串分割
//字符串分割 返回值是数组 String[]
		String string = "wanglong,pengqian,liushangkun";
		//使用转义字符
		String[] split = string.split("\\.");
		System.out.println(Arrays.toString(split));
		//增强for循环(专门用来遍历)
		for(String s:split) {
			//String s 相当于表示容器中每一个元素
			System.out.println(s);
5.截取字符串
//获取子字符串
		String string = "wanglong";
		//从传入的索引这一位开始截取
		String s1 = string.substring(3);
		System.out.println(s1);
		//[0,3)留头不留尾
		String s2 = string.substring(0, 3);
6.去空格
String string = "  abc def  ";
		String s1 = string.trim();
		System.out.println(s1);
7.字符串比较
String string2 = "abcAB";
		String string3 = "abcAb";
		//相等返回0
		//返回正数 前面大
		//返回负数 前面小
		//字符串不一样的时候 按ackii表返回两个字符差值
		//长度不一样,返回的是位数的差值
		//一位一位进行比较 字符不一样 就做差值
		int num = string2.compareTo(string3);
		System.out.println(num);
8.字符串与数组相互转化
//把字符数组转换字符串
		char[] array = {'w','a','n','g'};
		//使用构造方法转化
		String string = new String(array);
		System.out.println(string);
		//把字符串转化字符数组
		String s1 = "wanglong";
		char[] charArray = s1.toCharArray();

9.字符串拼接
String s1 = "wang";
		String s2 = "long";
		String s3 = s1.concat(s2);
10.判断字符串是否为空
String string = "";
		boolean rel = string.isEmpty();
11.基本数据类型转换字符串
String string = String.valueOf(10);



猜你喜欢

转载自blog.csdn.net/hehanhh/article/details/80341509