Java 基础学习之字符串的简单操作和适配器设计模式
一 适配器设计模式
1.适配器是什么?
适配器模式将某个类的接口转换成客户端期望的另一个接口表示,主的目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作。其别名为包装器(Wrapper)。
2.适配器分类
1.类适配器:
让没有关系的类或接口产生联系,可以扩展功能 .增加代码的复用性.
2.对象适配器
使用对象来连接 来扩展功能
3.缺省适配器
看一个充电器的例子:(类适配器)
public class Demo01 {public static void main(String[] args) {Target iphone6 = new IPhone6();iphone6.connection();// 使用适配器的类Target iphone7 = new ListenAdapter();iphone7.connection();}}
//
//
class IPhone7{//听音乐的方法public void listenMusic() {System.out.println("直接使用充电口听");}
}
// 目标接口interface Target{// 耳机连接的方法public abstract void connection();
}class IPhone6 implements Target{
// 实现抽象方法@Overridepublic void connection() {System.out.println("使用3.5mm接口听");}}
// 使用继承来实现 让类和接口产生联系,提高接口的兼容性
//使用一个适配器类(第三方的) 通过这个类来实现.class ListenAdapter extends IPhone7 implements Target{
// 实现抽象方法@Overridepublic void connection() {System.out.println("使用转接头");//调用父类的专有方法super.listenMusic();}}
使用3.5mm接口听
使用转接头
直接使用充电口听
2.缺省适配器:
健身房(接口)跑步机史密斯架(卧推)哑铃
public class Demo02 {}
interface GYM {// 跑步public abstract void run();//卧推public abstract void woTui();//哑铃public abstract void yaLing();
}
// 使用一个类作为桥梁来连接 接口 与类
// 让适配器类来实现接口 -----空实现
//适配器类 只是对接口方法的空实现 ,不管具体怎么实现
// 不希望适配器类直接被实现
abstract class SportAdapter implements GYM{@Overridepublic void run() {}@Overridepublic void woTui() {}@Overridepublic void yaLing() {}}
// 这时可以继承 适配器类
class DH extends SportAdapter{// 重写适配器类的方法 @Overridepublic void run() {System.out.println("跑步半小时");}@Overridepublic void woTui() {System.out.println("卧推3小时");}
}
二 字符串的常用操作
主要是学习系统类的写法:
学习系统类的目的: 学习系统的方法 如何使用
方法:
关键字(有无 static 修饰) 方法的调用方式.
返回值类型(给我返回一个什么结果)
方法名
参数列表(方法需要什么)
字符串的一些主要注意事项"
public class Demo01 {public static void main(String[] args) {//修改的是字符串的引用,实际上字符串并没有改变,改变的是地址.//看方法时 拼接 截取 等字符串的操作方法时,都是返回一个新的字符串 String s1 = "abc";s1 = "123";System.out.println(s1);//123//s2 的创建方式 相当于在方法区的常量池中创建一个字符串 (字符数组)//s3 是在堆内存中开辟一块空间 String s2="abc";String s3 = new String("abc");String s4 = "abc";// == 对象的话比的是地址System.out.println(s2==s4);//true// equals 把两个字符串 变成字符数组 比较System.out.println(s2.equals(s4));//trueSystem.out.println(s2==s3);//false//s2和s3 有什么区别//s2是一个对象// s3 有两个对象 分别是 "abc" 和new出来的对象}}
1.字符串的获取
根据索引获取字符串中的字符 charAt(int index)
根据字符获取其在字符串中的位置 indexOf (int ch)
String str = "dahai";char c = str.charAt(3);// 注意索引值不要越界System.out.println(c); //a// 获取索引String s1 = "woshidahdai";int index = s1.indexOf('o');System.out.println(index);//1// 从传入的索引 这一位开始查找//[0.0,1.0) 留头不留尾int index1 = s1.indexOf('d', 0);System.out.println(index1);//5int index2= s1.indexOf("ah");System.out.println(index2);//6
2.字符串中的判断 返回的是Boolean值
1.判断是否包含这个字符串 contains(charSquenece s)
2.判断前缀, startsWith()
3.判断后缀 endsWith()
//字符串的判断// 判断包含String string = "woshidahai";boolean rell=string.contains("dadiaohai");System.out.println(rell);//判断前缀,以什么开头boolean rel2 = string.startsWith("w1");System.out.println(rel2);//false//判断后缀,以什么结尾boolean rel3 = string.endsWith("i");System.out.println(rel3);//true// 判断两个字符串相等boolean rel4 =string.equals("dahai");System.out.println(rel4);// 判断两个字符串忽略大小写相等boolean rel5 = string.equalsIgnoreCase("WoshidahaI");System.out.println(rel5);//字符串转小写String rel6 = string.toLowerCase();System.out.println(rel6);//字符串转大写String rel7 = string.toUpperCase();System.out.println(rel7);}
3.字符串的替换 replace(oldvalue ,newvalue)
public static void fun() {// 替换String str = "河流,我是你的水源";String s1= str.replace("你", "谁");System.out.println(s1);//替换字符串String s2 = str.replace("河流", "大海");System.out.println(s2);}
4.字符串的分割 split()
public static void fun2() {// 字符串分割 返回字符串类型的数组String string = "wanglong.pengqian.liushnagkun";String [] arr = string.split("\\."); // 转义字符System.out.println(Arrays.toString(arr));//[wanglong, pengqian, liushnagkun]//增强for循环 专为打印遍历/* for (容器中数据类型 名字:遍历容器) {表示数组中的每一个元素}*/for (String s:arr) {System.out.println(s);}}
5.获取子串 substring()
public static void fun3() {//获取子字符串 wanglong String str1 = "woshidahai";String str2 =str1.substring(3);String str3 =str1.substring(3, 5);//包括start值 不包括end值[3,5) 留头不留尾System.out.println(str2);System.out.println(str3);}
6.去空格 trim() 字符串比较
public static void fun4() {//去空格String str = " abc def ";String s1 = str.trim();System.out.println(s1);//字符串比较String str01 = "abcAB";String str02 = "Ab";//比较是一位一位的比较 字符不一样,就做差值返回//相等返回零//字符不一样时,按acill表 ,返回两个字符只差// 长度不一样时,返回的是位数的差值int compareTo = str02.compareTo(str01);System.out.println(compareTo);}
7.字符串 与字符数组的相互转化
public static void fun5() {//把字符数组 转化为 字符串char [] array = {'d','a','h','a','i'};//直接使用构造方法String string = new String(array);System.out.println(string);//dahai//把字符串转化为 字符数组String ss = "dahai";char[] cs = ss.toCharArray();for (char c :cs) {System.out.println(c);}}
8.判断字符串是否为空 拼接字符串
public static void fun6() {//判断字符串是否为空String string = "";boolean rel = string.isEmpty();System.out.println(rel);//字符串拼接String s1 = "da";String s2 = "hai";String s3 = s1+s2;System.out.println(s3);String s4 = s1.concat(s2).concat(s2);System.out.println(s4);}
9.基本数据类型转化为字符串
String v1 = String.valueOf(10);int a = 10;System.out.println(v1);System.out.println(a);
Java 基础学习之字符串的简单操作和适配器设计模式相关推荐
- Java基础篇:字符串的简单介绍
你可能注意到了,在前面关于数据类型和数组的讨论中没有提到字符串或字符串数据类型.这不是因为Java不支持这样一种类型,它支持.只是因为Java的字符串类型,叫做字符串(String),它不是一种简单的 ...
- 尚学堂JAVA基础学习笔记_2/2
尚学堂JAVA基础学习笔记_2/2 文章目录 尚学堂JAVA基础学习笔记_2/2 写在前面 第10章 IO技术 1. IO入门 2. IO的API 3. 装饰流 4. IO实战 5. CommonsI ...
- Java基础学习(12)
Java基础学习 一.不可变集合 二.Stream流 2.1 Stream流数据添加 2.2 Stream流的中间方法 2.3 Stream终结方法 三. 方法引用 3.1 方法引用的基本概念 3.2 ...
- java基础学习_IO流03_字符流、IO流小结、案例_day21总结
java基础学习_IO流03_字符流.IO流小结.案例_day21总结 ================================================================ ...
- java基础学习-6
Java基础学习-6 双列集合 Map的常见API Map的遍历方式 HashMap 小练习 LinkedHashMap TreeMap TreeMap--小练习1 TreeMap--小练习2 Tre ...
- JAVA基础学习精简心得笔记整理
JAVA基础学习精简心得笔记整理 配置java环境变量 Java的运行过程 基本数据类型 引用数据类型 逻辑运算符 数组 方法重载 封装 继承 多态 多态的作用 单例设计模式 接口interface ...
- Java基础学习——第十六章 Java8新特性
Java基础学习--第十六章 Java8 新特性 Java8(JDK8.0)较 JDK7.0 有很多变化或者说是优化,比如 interface 里可以有静态方法和默认方法,并且可以有方法体,这一点就颠 ...
- Java中大数据数组,Java基础学习笔记之数组详解
摘要:这篇Java开发技术栏目下的"Java基础学习笔记之数组详解",介绍的技术点是"java基础学习笔记.基础学习笔记.Java基础.数组详解.学习笔记.Java&qu ...
- Java基础学习:尚硅谷项目三 开发团队调度软件
Java基础学习:尚硅谷项目三 开发团队调度软件 一.软件功能与结构设计 1. 软件功能 该软件实现以下功能: 软件启动时,根据给定的数据创建公司部分成员列表(数组) 根据菜单提示,基于现有的公司成员 ...
最新文章
- 一文了解Python常见的序列化操作
- 单卡手机怎么变双卡双待全过程
- python识别latex公式_Python代码转Latex公式,这个开源库用一行代码帮你搞定
- ubuntu/mint 恢复模式 报read-only file system 的解决方法
- 紫书动规 例题9-10 UVA - 1626 Brackets sequence 区间dp
- Python入门学习---第三天
- 通信协议—HTTP、TCP、UDP
- 记录一下Junit测试MongoDB,获取MongoTemplate
- docker-compose(入门,与docker的区别)
- 违背常识、颠覆认知,终于有人把薛定谔的猫讲明白了
- DIV+CSS的好处和意义
- Smobiler字节小程序开发指南
- 4招教你们怎么做海报,想要宣传推广就来这
- 关闭计算机界面,电脑关机卡在关机界面怎么办?详细原因分析及解决方法来啦!...
- 仓库规模操作系统的背景之操作系统
- windows使用scrapy爬取微信评论
- 2022数学建模国赛ABC题思路
- SVN 查看用户名密码
- 基于SSM社区网格化小区管理系统设计
- div+CSS浏览器兼容问题整理(IE6.0、IE7.0 ,ie8 , FireFox...)
热门文章
- 《伤逝——涓生的手记》,读后有感
- 读英语计算机书籍读后感,英语读后感
- 【CSS基础】box-shadow盒子阴影(重点)
- 诛仙服务器技能修改,诛仙玩家浅析诛仙3技能修改所带来的轰动
- android 单元布局,在Android布局中挖洞
- 基于 钉钉认证 通过 华为、H3C 结合 OpenPortal认证计费系统 实现 网络准入 钉钉授权 实名认证
- 教程篇(7.0) 03. FortiGate安全 防火墙策略 ❀ Fortinet 网络安全专家 NSE 4
- 库存现金、现金管理制度、现金的账务处理、银行存款、银行存款的账务处理、银行存款的核对
- 新华三防火墙简单配置安全域
- Linux ARM平台开发系列讲解(IIO子系统) 2.8.1 IIO驱动开发分析