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);
}