java之适配器设计模式与字符串

   适配器设计模式

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

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

      3.缺省适配器(缺省适配模式为一个接口提供缺省实现,这样的类型可以从这个

             缺省实现进行扩展,而不必从原有接口进行扩展。)


  类适配器

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("直接使用充电口听");
	}
}

//目标接口
//当前接口 没有对IPhone7 进行 兼容
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();
	}
}

  缺省适配器

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

//使用一个类作为桥梁 来连接 接口 与 类
//让适配器类 来实现 接口---空实现 具体怎么实现 不管
//不希望 这个适配器类 直接被使用
abstract class MyAdapter implements JSF{
	@Override
	public void paoBuJi() {	
	}

	@Override
	public void woTui() {	
	}

	@Override
	public void yaLing() {	
	}
}

//这时 就可以直接继承 适配器类
class WL extends MyAdapter{
	//重写适配器类的方法
	@Override
	public void paoBuJi() {
		System.out.println("跑步半小时");
	}
}

class KDL extends MyAdapter{
	//重写适配器类的方法
	@Override
	public void paoBuJi() {
		System.out.println("跑步3小时");
	}
	@Override
	public void yaLing() {
		System.out.println("10公斤100举");
	}
}

   字符串

      字符串(系统类 提供一些方法)

      注意:字符串是常量

      学习系统类的目的:学习系统的方法

       方法:

      关键字 有没有static修饰

      返回值类型

      方法名(见名知意)

      参数列表(方法需要什么)

public class Demo01 {
	public static void main(String[] args) {
		//修改是字符串引用(地址)
		//指向不同的地址 而不是字符串本身被修改
		//看系统方法时 拼接 截取等操作字符串的一类方法
		//都是返回一个新的字符串
		String s1="abc";
		s1="def";
		System.out.println(s1);
		//s2的创建方式相当于在方法区中的常量池中
		//创建一个字符串
		String s2="abc";
		//s3是在堆内存中开辟一块空间
		String s3=new String("abc");
		String s4="abc";
		// ==号 对象的话 比的是地址
		System.out.println(s2==s4);
		//equals 把两个字符串变成字符数组
		//一位一位的进行比较
		System.out.println(s2.equals(s4));
		System.out.println(s2==s3);
		//s2和s3有什么区别?
		//s2是一个对象
		//s3是两个对象"abc"和new出来的对象
	}
}

     判断返回值都是布尔类型

     是否包含这个字符串

     是否以这个前缀开头

     是否以这个后缀结尾

public class Demo02 {
	public static void main(String[] args) {
		//fun1();
		String string="www.baidu.com";
		//判断包含
		boolean rel1 = string.contains("baidu");
		System.out.println(rel1);
		//判断前缀
		boolean rel2 = string.startsWith("www");
		System.out.println(rel2);
		//判断后缀 
		boolean rel3 = string.endsWith("com");
		System.out.println(rel3);
		//判断两个字符串相等
		boolean rel4 = string.equals("haha");
		System.out.println(rel4);
		//判断两个字符串忽略大小写相等
		boolean rel5 = string.equalsIgnoreCase("WWW.BAIDU.COM");
		System.out.println(rel5);
		//字符串转小写
		String s1 = string.toLowerCase();
		System.out.println(s1);
		//字符串转大写
		String s2 = string.toUpperCase();
		System.out.println(s2);	
	}
	public static void main(String[] args) {
                String string="asdfghjk";
		//注意:角标不要越界
		char c = string.charAt(5);
		System.out.println(c);
		//获取索引
		String s1="asdfghjk";
		int index = s1.indexOf('f');
		System.out.println(index);
		//从传入的索引 这一位开始查找
		//[0.0,1.0) 留头不留尾
		int index1 = s1.indexOf('f',4);
		System.out.println(index1);
		//传入字符串 查找对应的角标
		int index2=s1.indexOf("ghjk");
		System.out.println(index2);
	}

     以下是字符串的一些方法 

      替换 切割 获取子串 转换大小写 去空格 比较 

      判断两个字符串相等(忽略大小写) 

      把字符数组转化为字符串 

      把字符串转化为字符数组 判断字符串是否为空

public class Demo03 {
	public static void main(String[] args) {
		//fun1();
		//fun2();
		//fun3();
		//fun4();
		//fun5();
		//fun6();
		
		//基本数据类型 转化 为字符串(类方法)
		String string = String.valueOf(10);
		System.out.println(string);
		
	}

	private static void fun6() {
		//判断字符串是否是空
		String string="";
		boolean rel = string.isEmpty();
		System.out.println(rel);
		//字符串拼接
		String s1="asdf";
		String s2="ghjk";
		String s3=s1+s2;
		System.out.println(s3);
		String s4 = s1.concat(s2);
		System.out.println(s4);
	}

	private static void fun5() {
		//把字符数组 转化为 字符串
		char[] array= {'a','s','d','f'};
		//使用构造方法 转化
		String string=new String(array);
		System.out.println(string);
		//字符串转化成 字符数组
		String s1="asdfghjk";
		char[] charArray = s1.toCharArray();
		for (char c : charArray) {
		System.out.println(c);
		}
	}

	private static void fun4() {
		//去空格
		String string="   abc def   ";
		String s1 = string.trim();
		System.out.println(s1);
		// 字符串比较
		String s2="abcAB";
		String s3="abcAb";
		//相等 返回0
		//返回正数 前面大
		//返回负数 前面小
		//字符串不一样的时候 按ackii表 返回两个字符差值
		//长度不一样 返回的是位数的差值
		//一位一位进行比较 字符不一样 就做差值
		int num = s2.compareTo(s3);
		System.out.println(num);
	}

	private static void fun3() {
		// 获取子串
		String string="asdfghjk";
		//从传入的索引这一位开始截取(包括3)
		String s1=string.substring(3);
		System.out.println(s1);
		// [0,3) 留头不留尾 实际截取[0,2]
		String s2 = string.substring(4,string.length());
		System.out.println(s2);
	}

	private static void fun2() {
		//字符串分割 返回值 数组 String[]
		String string="asdfghjk,qwertyui,zxcvbnm";
		//使用转义符 \\.
		String[] strings = string.split(",");
		System.out.println(Arrays.toString(strings));
		for (String s:strings) {
			// String s 相当于 表示容器中的每一个元素
			System.out.println(s);
		}
	}

	private static void fun1() {
		//替换
		String string="asdfghjk";
		String s1 = string.replace('a','g');
		System.out.println(s1);
		//替换字符串
		String s2 = string.replace("ghjk", "haha");
		System.out.println(s2);
	}

}


阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页