String:字符串类型

字符串中常用的一些方法:
 * length和length()的区别
 * 1.length():获取字符串长度的方法
 * 2.toUpperCase():将字符串全部转换成大写
 *   toLowerCase():将字符串全部转换成小写
 * 3.int indexOf(Sting str):找到目标字符串中第一次出现str字符串的位置(下标值)
 * 注意:字符串的下标也是从0开始的  
 * 
 *   int indexOf(String str,int index):找到目标字符串中第一次出现str的位置,前提是,
 *   从目标字符串的index位置开始找起
 *   
 * 4.subString(int start,int end):字符串的截取
 * 从目标的start位置开始截取,截取到end位置
 * 注意:字符串的截取是含头不含尾的
 *   subString(int strat)
 *   从start位置开始截取,到尾部
 *   
 * 5.charAt(int index):获取目标字符串中指定index位置的字符,没找到会返回-1
 * 6.trim():去除字符串两边的空格

String str="123":这样的字符串定义和赋值,会在一个叫做常量池的地方生成字符串,而这个常量池是会重用已有的字符串对象的,下面的str==str3结果为true,是因为str在定义之后,会在常量池中会在常量池中存放一个"123",如果再定义一个字符串str3="123",就会先在常量池中先找是否存在这样一个值,如果存在,则直接将这个值引用过来了,所以他们使用==比较,地址是一样的,结果就是true.

 注:常量池在java8之前,是存在堆中的,而java8以后,常量池是存放在方法区中

注意:正因为字符串写出来就会在常量池中生成对象,所以,我们操作字符串的时候,一般都不使用String,因为一旦操作该字符串的值,就会生成新的字符串对象
 例如:String str="123"
      str="234";
      看起来是将str的值改变了,但实际,会在常量池中生成两个字符串对象
      一个是"123",一个是"234"

所以我们一般都用StringBuffer和StringBuild来生成字符串对象

API:java中的类库(别人写好的类,我们只需要使用这里面的方法来做事情)这里的StringBuffer和

StringBuild类就是一个API.

StringBuilder和StringBuffer:
  
因为String字符串在操作的时候,会不停的生成新的字符串对象,所以基于这个特点,
  如果频繁的操作字符串,会导致产生过多的废弃字符串对象,因此,StringBuild和StringBuffer
 是专门解决这个问题的,他们两个在操作字符串的时候,是基于原来的字符串来实现的
  
  面试:StringBuild和StringBuffer的区别?
  -StringBuild是非线程安全的,效率高(不用排队的)
  -StringBuffer是线程安全的,效率低(需要排队的)
  
 只有StringBuilder和StringBuffer里面才有这些方法
  append():往字符串末尾追加内容
  insert():往字符串的指定位置插入内容
  reverse():字符串的反转

正则表达式:

正则表达式:表示按照一定的规则定义出来的表达式,通常用来做前端或者后端的一些数据验证,例如:用户名和密码的格式等

这个其实就是给一个抽象格式的字符串,用来规范某一个字符串的格式,之后再用str.matches()去和这个抽象字符串比较如果匹配上了则会返回true;

匹配字符串的方法:str.matches(String regex)
 *str:指的是需要验证的字符串内容
 *regex:是正则表达式
 *如果匹配上了,则会返回一个true

[abc]:表示abc中的任意一个字符
   [a-z]:表示a-z中的任意一个 字符
 * [A-Z]:表示A-Z中的任意一个字符
 * [^abc]:表示除了abc的任意一个字符
 * [a-zA-Z]:表示a-zA-Z中的任意一个 字符
 * [0-9]:表示0-9中的任意一个 字符
 * [a-z && [^abc]]:表示a-z中除了abc的任意一个字符
 * \d:表示任意数字[0-9]
 * \w:表示任意的字符[a-zA-Z0-9]
 * \s:表示空白字符
 * \D:表示任意非数字
 * \W:表示任意的非字符
 * \S:表示非空白字符
 * 
 * X?:表示0个或者1个X
 * X+:表示1个或者多个x
 * X*:表示0个或者多个X
 * X{n}:表示n个X
 * X{n,}:表示n到任意多个X
 * X{n,m}:表示n到m个X

注意:正则表达式中的\,.等特殊符号,如果用字符串表示出来的时候,是需要转义的
        
         笔试题:如何使用字符串表示出正则当中的一个\
         \\:正则当中表示\,需要转义
         \\\\:字符串表示的时候,就需要对正则中的两个\都进行转义

字符串中一些其他的API的应用

一. split(String regex):字符串的拆分
 regex:根据这个内容来拆分字符串(可以是一个正则表达式)

这个split常用在给网络上的图片命名,因为用户自己取的图片名字有时候会有重名,为了避免这种重名的图片在网络上被错误的传输,就只获取jpg这个图片的格式,前面的名字用当前的毫秒值来命名,毫秒值:是从现在到1970年1月1日Unix操作系统诞生的时间总和.

代码如下:

        str="1.1.jpg";s=str.split("\\.");System.out.println(Arrays.toString(s));//获取当前系统的毫秒值(1970年1月1日long t=System.currentTimeMillis();System.out.println(t);//使用系统的毫秒值拼接上传图片的后缀str=t+"."+s[s.length-1];System.out.println(str);//1626769976978.jpg

二.

正则当中也支持逻辑或:
         游戏中的和谐语句,比如傻逼,脑残之类的词语是会被替换成***
         replaceAll(Sting regex,String str):字符串的替换
         将目标字符串中符合regex正则表达式的内容替换成str内容

代码如下:

        String regex="(qnmlgb|nc|nt|zz)";str="我qnmlgb,你个zz!";str=str.replaceAll(regex, "%*#");System.out.println(str);

字符串及其相关API和正则表达式相关推荐

  1. Java正则表达式中的捕获组的概念及相关API使用

    要弄清这三个方法,首先要弄清Java正则表达式中的捕获组的概念.捕获组也就是Pattern中以括号对"()"分割出的子Pattern.至于为什么要用捕获组呢,主要是为了能找出在一次 ...

  2. 常见API、正则表达式、Lanbda、算法

    1.常见API - Date Date类代表当前所在系统的日期时间信息. Date的构造器 Date d = new Date(); 名称 说明 public Date() 创建一个Date对象,代表 ...

  3. (Spring程序开发)简介程序开发步骤配置文件相关API

    1Spring简介 1.1 Spring是什么 Spring是分层的Java SE/EE应用full-stack 轻量级开源框架, 以IoC(Inverse Of Control:反转控制) 和**A ...

  4. java正则表达式及api_Java API 之 正则表达式

    一.基本概念 在项目中我们经常性做的一件事是"匹配"字符串 比如: 1.我们要验证用户输入的手机号是否合法? 2.验证设置的密码是否符合规则? 3.或者替换指定字符串中的一些内容. ...

  5. 目录操作的相关API 和 获取文件的属性信息

    目录 一,目录操作的相关API 1,创建或删除一个空目录 2,打开目录 3,读一个目录 4,关闭一个目录 二,获取文件的属性信息 1, stat,fstat,lstat 用来获取文件的属性信息 2,a ...

  6. 学习笔记(一):Java中Stream的基本用法和相关API详解

    目录 引言 一.什么是Stream 二.Stream有什么用 三.Stream的分类 四.常用的Stream创建方法 1. Stream.of()方法 2. Arrays.stream() 3. 集合 ...

  7. 安卓自定义view中 绘画基本图形点线面,矩形,方形,圆,扇形,文字及沿着特定方向布局,自定义圆角ImageView图片等等相关api使用方法及举例

    安卓自定义view中 绘画基本图形点线面,矩形,方形,圆,扇形,文字及沿着特定方向布局,自定义圆角ImageView图片等等相关api使用方法及举例,图片压缩处理逻辑 本文旨在介绍自定义View的实现 ...

  8. 原生JS中DOM节点相关API合集

    原生JS中DOM节点相关API合集 节点属性 Node.nodeName //返回节点名称,只读 Node.nodeType //返回节点类型的常数值,只读 Node.nodeValue //返回Te ...

  9. php srelen 字符串_比较详细Python正则表达式操作指南

    Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式.Python 1.5之前版本则是通过 regex 模块提供 Emecs 风格的模式.Emacs 风格模式可读性稍差 ...

最新文章

  1. php 魔术方法 多继承,day23:单继承多继承菱形继承__init__魔术方法
  2. 前端优秀博客网站收集
  3. 苹果电脑通过密钥对的方式登录linux系统
  4. 使用模板有什么缺点?如何避免?
  5. dd linux 尾部添加0_Linux文件目录命令整理Linux学习
  6. java消息头,Java网络编程从入门到精通:HTTP消息头字段
  7. java类的修改三个方面_Java 编程的动态性,第 6 部分: 利用 Javassist 进行面向方面的更改--转载...
  8. 最高的奖励 51Nod - 1163(贪心+并查集)
  9. WordPress好看的QQ微信等登录插件二开美化版
  10. 通俗易懂的Monte Carlo积分方法(二)
  11. Cocos2d-x场景(Scene)详解
  12. php socket邮箱,phpsocket.io php版本的socket.io
  13. Leetcode961. N-Repeated Element in Size 2N Array重复N次的元素
  14. 九龙山风电场电气一次部分初步设计
  15. Android studio开发一:三个页面简单实现QQ登录界面的延时跳转
  16. 花了3个小时解决了和异地女朋友一起看电影的需求(内附源码)
  17. ezcast 有线版 升级
  18. 计算机组成原理实验报告JMPR,计算机组成原理实验四:组合逻辑控制器部件教学实验...
  19. 使用Verilog来实现奇数分频
  20. 有哪门语言是所有优秀程序员都应该无差别掌握的?

热门文章

  1. Matlab中的匿名函数
  2. ARM与x86之2--Atom的前生今世
  3. IE8 浏览器性能解密
  4. java程序单引号报错_JavaScript中的单引号和双引号报错的解决方法
  5. windows系统bat批处理 查看当前电脑连接过的wifi名字和wifi密码
  6. 学了Python之后,美化二维码如此简单
  7. HandsFree——OpenRE库学习(一)
  8. kabeja导出DXF为其他格式
  9. 公众号消息转发到客服
  10. 第六届神经学与神经外科国际研讨会(NeuroConf-BT 2019)--12月泰国曼谷