Java进阶之路~适配器设计模式amp;字符串方法
一 适配器设计模式
1.类适配器(没有关系的类和接口产生联系,可以扩展功能,增加已有代码的复用性)
2.对象适配器(装饰者,使用对象进行连接,来扩展功能)
3.缺省适配器
eg:iphone6 3.5mm的插口听歌
iphone7 直接使用充电口 -- 需要使用转换头
//目标接口
interface Target{// 耳机连接的抽象方法public abstract void connection() ;
}
class Iphone6 implements Target{@Overridepublic void connection() {// TODO Auto-generated method stubSystem.out.println("使用3.5mm听");}}
在此程序基础上,
class Iphone7{//听音乐方法public void listenMusic() {System.out.println("直接使用充电口听");}
}
要让iphone7有个"使用转接头"的连接方法
使用继承来实现,让你类和接口方式产生关系
这是,需要使用一个适配器类(第三方),通过这个类,是类和接口产生联系,提高接口的兼容性
class Adapter extends Iphone7 implements Target{//实现抽象方法@Overridepublic void connection() {// TODO Auto-generated method stubSystem.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{@Overridepublic void run() {// TODO Auto-generated method stub}@Overridepublic void woTui() {// TODO Auto-generated method stub}@Overridepublic void yaLing() {// TODO Auto-generated method stub}
}
此时,再继承这个适配器类
class Wl extends MyAdapter{//重写适配器类的方法@Overridepublic 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进阶之路~适配器设计模式amp;字符串方法相关推荐
- 《Java 进阶之路》 下--推荐书籍
真正想提升自己,我感觉最主要的是先把 JVM.并发.网络这三块知识点学会.学通,这三块是基础,后面所有的框架.中间件等相关的都是基于这三块知识点之上的.学完这三块知识点,可以快速的掌握其它的知识,新框 ...
- 《java 进阶之路》 上--推荐书籍
整整一月没有更新博客了,因为十月份和双十一新入手的6本技术相关的书,这个月看完了3本,后面的3本还得慢慢肯. 下面我就介绍下进阶高级工程师必须也是我自己都看的一些书和知识点. 1.深入理解Java虚拟 ...
- JAVA进阶之路-CountDownLatch源码走读
前言 本章用到了之前谈到的AQS,就是在该FIFO阻塞框架的基础上改造的,不理解的,可以去看JAVA进阶之路-AbstractQueuedSynchronizer(AQS)源码走读 用途 CountD ...
- 【java进阶之路】(Java基础篇)[扩展]深入解析String.intern()及字符串常量池问题
申明 : 此文仅仅作为个人学习使用 , 如果有人对于String.intern() 十分想要究其原理 , 请参考此文深入解析String#intern - 美团技术团队 8种基本类型的常量池都是系统协 ...
- java进阶之路学习笔记
如果你现在是Web前端零基础学员,大致可以按如下思路学习系统学习: 一.基础部分 1.HTML + CSS 这部分学习,可以模仿一些网站做些页面.在实践中积累了一些经验后,可以系统的读一两本书,推荐& ...
- JAVA进阶教学之(StrngBuffer进行字符串拼接)
使用StringBuffer字符串拼接目的就是为了让字符串占用的内存空间减少,提高效率 思考:我们在实际的开发中,如果需要进行字符串的频繁拼接,会有什么问题? 答案: 因为java中的字符串是不可变的 ...
- Java进阶之路——从初级程序员到架构师,从小工到专家必会的技能
怎样学习才能从一名Java初级程序员成长为一名合格的架构师,或者说一名合格的架构师应该有怎样的技术知识体系,这是不仅一个刚刚踏入职场的初级程序员也是工作三五年之后开始迷茫的老程序员经常会问到的问题.希 ...
- Java进阶之路——从初级程序员到架构师
怎样学习才能从一名Java初级程序员成长为一名合格的架构师,或者说一名合格的架构师应该有怎样的技术知识体系,这是不仅一个刚刚踏入职场的初级程序员也是工作三五年之后开始迷茫的老程序员经常会问到的问题.希 ...
- 怎样重java初级到java中级_(续)Java进阶之路--从初级菜鸟到高级工程师
基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语法,集合的语法,io的语法,虚拟机方面的语法. 1.一个".java"源文件中是否可以包括 ...
最新文章
- 购物搜索引擎架构的变与不变——淘宝网曲琳
- es分词器错误分析_了解ElasticSearch分析器
- IDispose和Finalize的区别和联系
- 卡方分布的期望和方差_T检验、F检验、卡方检验详细分析及应用场景总结
- Linux学习:gcc 编译工作流程
- LeetCode 717. 1比特与2比特字符
- 黑客可利用 TeamViewer 缺陷远程窃取系统密码
- Oracle学习之DATAGUARD(八) Switchover与failover
- AtomicInteger的CAS算法浅析
- SQLServer游标详解
- 设计模式【2】——责任链模式
- 百度推广的优势和劣势
- 【电子设计大赛】2017 年全国大学生电子设计竞赛 仪器和主要元器件清单
- 顺利通过2021年上工信部的网络工程师考试,在此感悟一下
- stc单片机“全自动下载”(程序版)
- 摘自《大江大河1949》
- linux补齐命令,Linux中10个有用的命令行补齐命令
- c语言大作业俄罗斯方块,C语言自己写俄罗斯方块(完整版)
- 基于C语言实现的足球信息查询系统 课程报告+项目源码+演示PPT+项目截图
- python调用默认播放器_python使用Tkinter实现在线音乐播放器
热门文章
- DAZ3D STUDIO渲染设置:基础和技巧
- 读季琦《创始人·手记》
- android+自定义dns解析,安卓手机玩dnsmasq 搭建自己的DNS服务器
- 服务器bios界面usb无线网卡,BIOS怎么开启无线网卡
- PPT技巧分享,教你制作美美的PPT图表
- (转) 深度学习在目标跟踪中的应用
- 【Cherno的OpenGL视频】Vertex buffers and drawing a triangle in OpenGL
- 工具一栏,就是小锤子右边的一排都没亮
- 第十三周练兵区——编程题——不计入总分
- linux ccid驱动下载,ccid驱动支持