Java进阶之路~适配器设计模式&字符串方法

一 适配器设计模式

1.类适配器(没有关系的类和接口产生联系,可以扩展功能,增加已有代码的复用性)

2.对象适配器(装饰者,使用对象进行连接,来扩展功能)

3.缺省适配器

eg:iphone6 3.5mm的插口听歌

    iphone7 直接使用充电口 -- 需要使用转换头

//目标接口
interface Target{
	// 耳机连接的抽象方法
	public abstract void connection() ;
}
class Iphone6 implements Target{

	@Override
	public void connection() {
		// TODO Auto-generated method stub
		System.out.println("使用3.5mm听");
	}
	
}

在此程序基础上,

class Iphone7{
	//听音乐方法
	public void listenMusic() {
		System.out.println("直接使用充电口听");
	}
}

要让iphone7有个"使用转接头"的连接方法

使用继承来实现,让你类和接口方式产生关系

这是,需要使用一个适配器类(第三方),通过这个类,是类和接口产生联系,提高接口的兼容性

class Adapter extends Iphone7  implements Target{
	//实现抽象方法
	@Override
	public void connection() {
		// TODO Auto-generated method stub
		System.out.println("使用转接头");
		super.listenMusic();
	}
	
}

用此创建对象

public class Demo01 {
	public static void main(String[] args) {
		Target iphone6 = new Iphone6();
		iphone6.connection();
		//使用适配器的类
		Target iphone7 = new Adapter();
		iphone7.connection();
	}
}
缺省适配器:

使用一个类作为桥梁,来连接 接口 与 类

让适配器类来实现接口(适配器类只对接口方法的空实现,具体怎么实现,不归它管)

eg:健身房规则(接口)

跑步机/史密斯架/哑铃

而现在需要创建一个对象,他只接受健身房中的一种规则

//健身房接口
interface JSF{
	//跑步机方法
	public abstract void run();
	//卧推方法
	public abstract void woTui();
	//哑铃
	public abstract void yaLing();
}

这时需要一个适配器类,对接口方法的空实现

abstract class MyAdapter implements JSF{
	
	@Override
	public void run() {
		// TODO Auto-generated method stub
		
	}
	
	@Override
	public void woTui() {
		// TODO Auto-generated method stub
		
	}
	
	@Override
	public void yaLing() {
		// TODO Auto-generated method stub
		
	}
}

此时,再继承这个适配器类

class Wl extends MyAdapter{
	//重写适配器类的方法
	@Override
	public void run() {
		System.out.println("跑步半小时");
	}
}
二 字符串

注意:字符串是常量

String s1 = "abc";
s1 = "pengqian";

修改的是字符串引用(地址),指向了不同地址,而不是字符串本身被修改

String s2 = "abc";
//s3是在堆内存中开辟一块空间
String s3 = new String("abc");
String s4 = "abc";
// == 对象的话,比的是 地址
System.out.println(s2 == s4);//T
System.out.println(s2.equals(s4));//T
System.out.println(s2 == s3);//F

==比较的话,比的是地址

且,需要注意的是,s1 是一个对象,s3是两个对象"abc"和new出来的对象

字符串方法

1.判断是否包含

String string = "www.baidu.com";
boolean rel1 = string.contains("jia");
System.out.println(rel1);

2.判断前缀

String string = "www.baidu.com";
boolean rel2 = string.startsWith("www");	
System.out.println(rel2);

3.判断后缀

String string = "www.baidu.com";
boolean rel3 = string.startsWith("com");	
System.out.println(rel3);

4.判断两个字符串相等

String string = "www.baidu.com";
boolean rel4 = string.equals("haah");
System.out.println(rel4);

5.判断两个字符串相等忽略大小写

String string = "www.baidu.com";
boolean rel5 = string.equalsIgnoreCase("Www.baiDu.Com");
System.out.println(rel5);

6.字符串转大小写

String string = "www.baidu.com";
String cas1 = string.toUpperCase();
System.out.println(cas1);
String cas2 = string.toLowerCase();
System.out.println(cas2);

7.获取索引

String s1 = "jiemangseng";
int i = s1.indexOf("e");
System.out.println(i);//2

8.从传入的索引这一位开始查找,留头不留尾

int j = s1.indexOf("a", 2);
System.out.println(j);//4

9.输入字符串,查找对象的角标

int index1 = s1.indexOf("ang");
System.out.println(index1);//4

10.替换

public static void fun1() {
	String string = "wanglong";
	String s1 = string.replace('x', 'l');
	System.out.println(s1);
	//替换字符串
	String s2 = string.replace("long", "ba");
	System.out.println(s2);
}

11.字符串的分割 返回一个字符串数组

public static void fun2() {
	String string = "wanglong.pengqian.liushangkun";
	//使用转义符\\
	String[] strings = string.split("\\.");
	System.out.println(Arrays.toString(strings));
}

12.获取子串,包头不包尾

public static void fun3() {
	String string = "wanglong";
	String s1 = string.substring(3);
	System.out.println(s1);
	String s2 = string.substring(2, 5);
        System.out.println(s2);
}

13.去空格--trim只能去首尾的空格

public static void fun4() {
	String string = "  abc     def      ";
	String s1 = string.trim();
	System.out.println(s1);
}

14.字符串的比较

public static void fun5() {
	//相等返回0  
	//字符不一样的时候,按ackii表 返回两个字符差值
	//长度不一样 返回的是位数的 差值
	//一位一位进行比较 字符不一样就做差值
	String s2 = "abcAB";
	String s3 = "abcAb";
	int num = s2.compareTo(s3);
	System.out.println(num);
}

15.把字符串数组转化为字符串,字符串转为数组

public static void fun6() {
        char[] arr = {'w','a','n','g'};
	//使用构造方法 转换
	String string = new String(arr);
	System.out.println(string);
	//字符串转化成 字符数组
	String s1 = "wanglong";
	char[] arr2 = s1.toCharArray();
	for (char c : arr2) {
		System.out.println(c);
	}
}

16.判断字符串是否为空,字符串拼接

public static void fun7() {
	String string = "";
	boolean rel = string.isEmpty();
	System.out.println(rel);
		
	String s1 = "wang";
	String s2 = "long";
	String s3 = s1 + s2;
	System.out.println(s3);
	String s4 = s1.concat(s2).concat("haah");
	System.out.println(s4);
}



你可能感兴趣的:(Java进阶之路~适配器设计模式&字符串方法)