java 的 String 和 正则
String:
public class StringApi {public static void main(String [] args){//stringApi("Hello World uzi");//valueTransfer();//StringTransfer();//citeTransfer();//SbApi();}/**由于字符串的频繁修改对内存开销较大,java.lang.StringBuilder/java.lang.StringBuffer其内部维护一个可变的字符数组,所以字符串的内容修改都可以在这个数组进行他们的区别主要是 StringBuffer是线程安全*/public static void SbApi(){StringBuffer sb = new StringBuffer("有志者,事竟成。破釜沉舟,百二秦关终属楚。苦心人,天不负。卧薪尝胆,三千越甲可吞吴。");System.out.println(sb.toString());sb.replace(0,3,"有痣者");System.out.println(sb.toString());sb.insert(0,"老子曾说:");System.out.println(sb.toString());sb.delete(2,3);System.out.println(sb.toString());sb.append("--老子表示:我没有说过");System.out.println(sb.toString());}/**java的存储空间有 栈和堆 ,栈用来存放 基本类型和 引用地址 优点是存取速度快堆用来存放由new等指令创建的对象和数组,可以动态地分配内存大小,java 的传递方式有 按值传递 和 引用传递基本类型都是按值传递的所有复合数据类型,包括数组、类和接口 都是引用传递,引用传递如果改变了它的引用地址,那么他修改的内容不会作用于原来地址指向的值String 也是引用传递,但String类型是 final 修饰的,当对象是不能被改变的,表面上看到的改变是因为他的引用指向了新的内存。*/public static void valueTransfer(){int num1 = 1;int num2 = 2;System.out.println("改变前:num1 = "+num1+", num2 = "+num2);changeInt(num1,num2);System.out.println("改变后:num1 = "+num1+", num2 = "+num2);}public static void changeInt(int num1,int num2){//值传递int temp = num2;num2 = num1;num1 = temp;}public static void StringTransfer(){//String类型的 引用传递,从运行结果来看String的值没有改变,是因为String 是fianl 修饰的类,他的值不能改变//当你把String的值改变时,那并不是真正的改变,只是开辟了另外一个新的空间来存放新的字符串,然后把 引用地址 指向了新的内存空间//也就是说 String 进行传递时它原来的值是没有被修改的,被修改的是另外一个的引用。(有点绕……)String str1 = "uzi";String str2 = "faker";System.out.println("改变前:str1 = "+str1+", str2 = "+str2);changeString(str1,str2);System.out.println("改变后:str1 = "+str1+", str2 = "+str2);}public static void changeString(String str1 , String str2 ){str1 = "faker";str2 = "uzi";}public static void citeTransfer(){// 引用传递,会把引用地址(也就是变量)指向的内存的值传递过去,当这个值改变时,因为引用地址还是指向这个内存,所以变量的值会改变了 StringBuffer sb1 = new StringBuffer("萍水相逢");StringBuffer sb2 = new StringBuffer("回眸一笑");System.out.println("改变前:sb1 = "+sb1+", sb2 = "+sb2);changeSb(sb1,sb2);System.out.println("改变后:sb1 = "+sb1+", sb2 = "+sb2);}public static void changeSb(StringBuffer sb1, StringBuffer sb2){sb1.append(",便已是琴心先许");sb2.append(",唯余那清风明月");}/**@param 参数说明@return 返回值说明@deprecated 过时方法,通常是有更好的方法可以取代或者发现有缺陷的方法,代表这个方法不推荐你使用@exception 异常说明*/public static void stringApi(String str){/*1.length(): 字符串长度2.indexOf(s):第一次出现 s 字符串的位置,如果没有返回 -13.substring(int begin,int end):字符串截取(开始位置,结束位置); 4.substring(int begin):从开始位置截取到最后5.trim():去吃字符串两边的空格6.charAt(int index):获取字符串指定位置的字符7.java.lang.String 这个类是final 修饰的 public final class String字符串一旦创建,对象无法改变,但是引用可以重新赋值 8. compareTo 第一个不相等的字符在 编码里相隔的距离 , */System.out.println("字符串长度:"+str.length());System.out.println("包含‘uzi’的位置:"+str.indexOf("uzi"));System.out.println("字符串截取【3-7】:"+str.substring(3,7));System.out.println("字符串截取【3-】:"+str.substring(3));System.out.println("字符串获取第一个字符:"+(str.charAt(0)+""));System.out.println("字符串compareTo(a,A):"+"a".compareTo("A"));}}
Regx:
import java.util.Arrays;
public class Regx{//正则表达式public static void main(String [] any){//regxDemo();splitDemo();}public static void splitDemo(){String http = "www.baidu.com";//因为 "." 在正则中是代表任意字符,所以当仅仅只想使用 "." 时需要进行转义,在java中 "\" 是有特殊含义的//不能单独使用,这是因为系统把“\.“当做转义符,但是实际上并没有这个转义符,所以要再加一个"\",变成"\\."String httpRegx = "\\.";String [] https = http.split(httpRegx);System.out.println("https:"+Arrays.toString(https));String operate = "2+5+4-7=?";String operateRegx = "[+\\-=]";String [] operates = operate.split(operateRegx);System.out.println("operates:"+Arrays.toString(operates));}public static void regxDemo(){String str = "弃我去者昨日之日不可留乱我心者今日之日多烦忧";String regx1 = "\\w+";if(str.matches(regx1)){System.out.println("\\w能匹配中文字符");}else{System.out.println("\\w不能匹配中文字符");}String clearlove7 = "clearlove7";// 以c开头,然后有8个单词字符,最后以7结尾String regx2 = "^c\\w{8}7$";if(clearlove7.matches(regx2)){System.out.println("clearlove7匹配成功");}else{System.out.println("clearlove7匹配不成功");}}/**正则表达式使用姿势1.字符集合[abcd] a/b/c/d 中的一个字符[^abc] 除了abc以外的任意一个字符[a-zA-z0-9] a到z 、A到Z、数字0到9之间的任意字符[a-z&&[^c]] a到z 并且不是c. 任意字符\d 任意一个数字字符,相当于[0-9] digit的简写?\D 任意一个非数字字符,与小写时相反\s 一个空白字符,相当于[\t\n\f\r] space的简写?\w 任意单词字符,相当于[a-zA-z0-9] word的简写?2.数量词? 表示0个或者一个* 表示任意个+ 表示非零个{n} 表示n个{n,} 表示n个以上{n,m} 表示n个到m个3.关系符() 分组| 或者&& 并且^ ^表示以字符串开始$ $表示以什么字符串结束*/}
java 的 String 和 正则相关推荐
- 常用类库-java.lang.String
文章目录 常用类库-java.lang.String 简介 构造方法 常用方法: charAt codePointAt codePointBefore compareTo compareToIgnor ...
- Java字符串String相关
String常用 1. char charAt(int index) 返回给定位置的字符 2. int indexOf(String str) 返回给定字符串的位置 3. int length() 返 ...
- Java / Android String.format 的使用
String类的format()方法用于创建格式化的字符串以及连接多个字符串对象. 自己使用的地方1 拼接字符串 2 ,多语言文字顺序不同问题,例如中文:距离到公司还有30分钟, 时间是接口获取的, ...
- java.lang.NullPointerException: Attempt to invoke virtual method ‘boolean java.lang.String.equals(j
今天切正式环境出现的空指针 记录一下 下面是错误 java.lang.NullPointerException: Attempt to invoke virtual method 'boolean j ...
- java string改变的影响_为什么Java的string类要设成immutable(不可变的)
最流行的Java面试题之一就是:什么是不可变对象(immutable object),不可变对象有什么好处,在什么情况下应该用,或者更具体一些,Java的String类为什么要设成immutable类 ...
- Android java传递string类型数据给C
本文接着实现<Android java传递int类型数据给C>的还未实现的方法: public native String sayHelloInC(String s); 先贴一个工具方法, ...
- Java 之String、StringBuffer 和 StringBuilder 三者区别介绍
String:字符串常量,字符串长度不可变,StringBuffer:字符串变量(Synchronized,即线程安全),StringBuilder:字符串变量(非线程安全). String Stri ...
- 2.Java中String,StringBuilder以及StringBuffer的关系与区别
String StringBuffer StringBuilder String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且浪费大量 ...
- java中String new和直接赋值的区别
Java中String new和直接赋值的区别 对于字符串:其对象的引用都是存储在栈中的,如果是编译期已经创建好(直接用双引号定义的)的就存储在常量池中,如果是运行期(new出来的)才 ...
最新文章
- linux mv 环境变量,linux环境变量,cp,mv命令,more,less,cat,tail,head,的使用...
- 为什么当项目启动后执行两次过滤器 再进行访问资源时执行一次过滤器
- js小记 function 的 length 属性
- mysql查询索引like_通过索引查询慢速搜索LIKE%MYSQL
- CentOS 初体验六:登录工具PuTTY使用
- 查找问题的利器 - Git Bisect
- 团队-爬取豆瓣电影TOP250-简单团队一阶段互评
- idea yml变成文件了_初识SpringBoot之配置文件(二)——配置文件值注入
- (转)一个由自由职业者建立的量化对冲基金
- rtmp/rtsp直播播放器选择
- 如何快速解决office2016每次打开都需要配置修复的问题,其他回答都是屁
- 【PI调节】对PI调节的一些认识
- 论文笔记:Bridging Textual and Tabular Data for Cross-Domain Text-to-SQL Semantic Parsing
- vue前端导出(XLSX)
- Maven Helper 安装使用
- Python全栈:Django模板
- android usb触摸屏idc实现触摸唤醒
- ncl批量处理多个nc文件_利用MATLAB读取NC文件并绘图
- ChaosBlade
- 【QT开发笔记-基础篇】| 第五章 绘图QPainter | 5.13 抗锯齿
热门文章
- Jms_guacamole、Jms_koko 常见问题 修复
- c++ Builder TMemo控件自动滚动
- CSS基础笔记——边框样式
- CSS 边框样式 文字样式 段落样式
- 同步原语问题汇总--芒果TV进击面试
- bugku域名解析记录
- CMOS放大器的频率特性--视频节选
- 论文阅读:(arXiv 2022)Loonie:Compressing COINs with Lo-constraints
- 基于HTML美食文化网页设计与实现——html+css+javascript+jquery+bootstarp响应式西餐厅美食网站
- 庞加莱截面的c语言编程,[转载]画Lorenz庞加莱截面图的程序