【Java】字符串(一)
目录
一、创建字符串
二、连接字符串
连接多个字符串
连接其他数据类型
三、获取字符串的信息
获取字符串的长度
字符串查找
获取指定索引位置的字符
四、字符串操作
获取子字符串
去除空格
字符串的替换
判断字符串是否相等
按字典顺序比较两个字符串
字母大小写转换
字符串分割
一、创建字符串
(1)String(char a[])
用一个字符数组a创建一个String对象
char a[] = {'a','b','c','d'};
String s = new String(a);
(2)String(char a[],int offset,int length)
提取a数组中的一部分,创建一个字符串对象,offset表示开始截取字符的位置
char a[] = {'a','b','c','d'};
String s = new String(a,2,2);
(3)String(char[] value)
String s = new String("Student");
(4)引用字符串常量来创建字符串变量
String s1;
s1 = "student";
二、连接字符串
连接多个字符串
使用“+”可实现多个字符串连接的功能
public class practice {public static void main(String[] args) {String s1 = new String("Hello");String s2 = new String("World");String s = s1 + " " + s2;System.out.println(s);}}
注意:Java中一句相连的字符串不能分开在两行写。如果字符串太长,可以将字符串写在两行但是需要使用“+”连接。
连接其他数据类型
字符串也可以同其他数据类型进行连接。连接时,会将这些数据直接转换成字符串。
public class practice {public static void main(String[] args) {int a = 4;float b = 4.5f;System.out.println("sum" + a + b); // sum44.5}}
注意区别,因为圆括号的优先级高
public class practice {public static void main(String[] args) {int a = 4;float b = 4.5f;System.out.println("sum" + (a+b)); // sum8.5}}
三、获取字符串的信息
获取字符串的长度
String str = "1234567890";
int size = str.length();
System.out.println("str.length() = " + size); // str.length() = 10
字符串查找
String类提供两种查找查找字符串的方法。
indexOf() 与 lastIndexOf() :都允许在字符串中搜索指定条件的字符或者字符串。
indexOf()方法返回的是搜索的字符或者字符串首次出现的位置,lastIndexOf()方法返回的是最后一次出现的位置。
String str = "00112233445566778899";
int pos1 = str.indexOf("0");
int pos2 = str.lastIndexOf("0");
System.out.println("pos1 = " + pos1); // pos1 = 0
System.out.println("pos2 = " + pos2); // pos2 = 1
public class practice {public static void main(String[] args) {String str = "we are students";int pos = str.lastIndexOf("");System.out.println("空字符在字符串str中的索引位置是" + pos); //空字符在字符串str中的索引位置是15System.out.println("字符串str的长度是" + str.length());//字符串str的长度是15}}
获取指定索引位置的字符
使用charAt()方法可以可以将指定索引处的字符返回。
public class practice {public static void main(String[] args) {String str = "hello world";char mychar = str.charAt(6);System.out.println(mychar); // w}}
四、字符串操作
获取子字符串
substring()方法可以对字符串进行截取。利用下标进行截取,且应明确字符串下标应从0开始。
(1)substring(int beginIndex),其中beginIndex指定从某一索引处开始截取字符串。
String str = "hello world";
String s = str.substring(3);
System.out.println(s); //lo world
(2)substring(int beginIndex,int endIndex)
[ beginIndex , endIndex )
String str = "hello world";
String s = str.substring(3,7);
System.out.println(s); //lo w
去除空格
trim()方法返回字符串的副本,忽略前导空格和尾部空格(不会去掉字符串中间的空格)
String str = " 0123 5678 ";
System.out.println("原始长度" + str.length()); // 原始长度18
String s = str.trim();
System.out.println(s); //0123 5678
System.out.println("去掉前导空格和尾部空格之后的长度是" + s.length());
//去掉前导空格和尾部空格之后的长度是9
字符串的替换
replace()方法可实现将指定字符或者字符串替换成新的字符或者字符串
str.replace(char oldChar,char newChar)
如果oldChar没有出现在该对象表达式中的字符串序列中,则将原字符串返回。
是将所有的字符oldChar转换成newChar
public class practice {public static void main(String[] args) {String str = "address_a";String newstr = str.replace("a", "A");System.out.println(newstr); //Address_A}}
判断字符串的开始与结尾
startsWith() 和 endsWith() 方法分别用于判断字符串是否以指定的内容开始或结束。这两个方法的返回值都是boolean类型。
(1)startWith()方法
该方法用于判断当前字符串对象的前缀是否为参数指定的字符串。
str.startsWith(String prefix),其中指作为前缀的字符。
(2)endsWith()方法
该方法用于判断当前字符是否为以给定的子字符串结束。
str.endsWith(String suffix),其中suffix是指作为后缀的字符串。
public class practice {public static void main(String[] args) {String num1 = "22045612";String num2 = "21304578";boolean b = num1.startsWith("22");boolean b2 = num1.endsWith("78");boolean b3 = num2.startsWith("22");boolean b4 = num2.endsWith("78");System.out.println("字符串num1是以‘22’开始的吗?"+b); // 字符串num1是以‘22’开始的吗?trueSystem.out.println("字符串num1是以‘78’结束的吗?"+b2); // 字符串num1是以‘78’结束的吗?falseSystem.out.println("字符串num2是以‘22’开始的吗?"+b3); // 字符串num2是以‘22’开始的吗?falseSystem.out.println("字符串num2是以‘78’结束的吗?"+b4); // 字符串num2是以‘78’结束的吗?true}}
判断字符串是否相等
比较运算符“==”,因为比较运算符比较的是两个字符串的地址是否相同。即使两个字符串的内容相同,两个对象的内存地址也是不同的使用比较运算符仍然会返回false。
String s1 = new String("123");
String s2 = new String("123");
boolean b = (s1 == s2);
System.out.println(b); // false
(1)如果两个字符串具有相同的字符和长度,则使用equals()方法进行比较时返回true,区分大小写
str.equals(String otherstr)
(2)在忽略大小写的情况下判断两个字符串是否相等
str.equalsIgnoreCase(String otherstr)
public class practice {public static void main(String[] args) {String s1 = new String("abc");String s2 = new String("ABC");String s3 = new String("abc");boolean b = s1.equals(s2);boolean b2 = s1.equalsIgnoreCase(s2);System.out.println(s1 + " equals " + s2 + ":" + b); // abc equals ABC:falseSystem.out.println(s1 + " equalsIgnoreCase " + s2 + ":" + b2); // abc equalsIgnoreCase ABC:true}}
按字典顺序比较两个字符串
str.compareTo(String otherstr)
如果按照字典顺序将此String对象位于参数字符串之前则比较结果为一个负整数;
如果按照字典顺序将此String对象位于参数字符串之后则比较结果为一个正整数;
如果两个字符串相等,则结果为0;
public class practice {public static void main(String[] args) {String s1 = new String("b");String s2 = new String("a");String s3 = new String("e");System.out.println(s1 + " compare to " + s2 + ":" + s1.compareTo(s2));//b compare to a:1System.out.println(s1 + " compare to " + s3 + ":" + s1.compareTo(s3));//b compare to e:-3}}
字母大小写转换
str.toLowerCase() 将String转换成小写
str.toUpperCase() 将String转换成大写
public class practice {public static void main(String[] args) {String str = "abc DFE";String newstr1 = str.toLowerCase();String newstr2 = str.toUpperCase();System.out.println(newstr1);//abc dfeSystem.out.println(newstr2);//ABC DFE}}
字符串分割
(1)split(String sign)
str.split(String str)
该方式是根据给定的分割符对字符串进行拆分。
(2)split(String sign,int limit)
str.split(String sign,int limit)
该方法根据给定的分割符对字符串进行拆分,并限定拆分的次数。
public class practice {public static void main(String[] args) {String str = "192.168.0.1";String[] firstArray = str.split("\\.");String[] secondArray = str.split("\\.",2);System.out.print("str的原值为:[" + str + "]");System.out.println("全部分割结果是");for(String a:firstArray) {System.out.print("["+ a + "]");}System.out.println();for(String a:secondArray) {System.out.print("[" + a + "]");}System.out.println();}}/*
str的原值为:[192.168.0.1]全部分割结果是
[192][168][0][1]
[192][168.0.1]*/
相关文章:

每天一命令 git checkout
检出 checkout 是git常用命令之一.主要用于创建切换分支,覆盖本地修改等 git checkout 用于显示工作区,暂存区,版本库中文件的区别 git checkout -b branch 用于创建一个新的分支, git checkout branch 用于检出一个分支 git checkout [commit] --filename 用暂存…

python数据结构与算法:排序算法(面试经验总结)
快排:最优复杂度 O(n*logn) 最坏时间复杂度O(n^2)平均时间复杂度n^(1.3) 归并排序:最优/平均/最坏 时间复杂度均O(nlogn),但是内存占用为list大小的两倍,算法稳定 ####…

go微服务框架go-micro深度学习(一) 整体架构介绍
产品嘴里的一个小项目,从立项到开发上线,随着时间和需求的不断激增,会越来越复杂,变成一个大项目,如果前期项目架构没设计的不好,代码会越来越臃肿,难以维护,后期的每次产品迭代上线…

多传感器融合之滤波(二)EKF
扩展卡尔曼滤波算法是解决非线性状态估计问题最为直接的一种处理方法,尽管EKF不是最精确的”最优“滤波器,但在过去的几十年成功地应用到许多非线性系统中。所以在学习非线性滤波问题时应该先从EKF开始。 EKF算法是将非线性函数进行泰勒展开,…

【Java】字符串(二)
目录 字符串格式化 日期和时间字符串格式化 日期格式化 时间格式化 格式化常见的日期时间组合 常见类型格式化 正则表达式(未完待续) 字符串生成器 字符串格式化 String类使用静态format()方法用于创建格式化的字符串。 format(String format&a…
为什么vue.js一眼看上去很美?
对其他框架我是佩服,对vue.js我则是爱。我就是一眼看上了vue.js,于是用它做各种东西,反反复复多次,然后觉得有些融会贯通,然后,我稍微细的思量了下,到底vue.js靓丽在哪? 还是上案例对比说明。这…

阿里云MWC 2019发布7款产品:Blink每秒可完成17亿次计算
在巴塞罗那举行的MWC 2019上,国内厂商不仅展示了目前的5G发展进程,也带来了一些云计算方面的进展。据报道,阿里云面向全球发布了7款产品,涵盖无服务器计算、高性能存储、全球网络、企业级数据库、大数据计算等主要云产品ÿ…

运用面向对象原则,设计一款音乐点唱机
2019独角兽企业重金招聘Python工程师标准>>> .设计内容及要求 能够实现简单的音乐播放器功能,如:打开本地文件,播放,暂停,停止,背景播放,单曲循环等等,界面充…

多传感器融合之滤波(三)--------
多传感器融合之滤波(三):IMU,GPS,Lidar,Ladar数据处理

【Codeforces】835B The number on the board (贪心)
把所有字符串上的数字加起来,看是否超过k,没有超过k的话,把字符串sort,从第一位开始,将字符变成9,直到sum大于等于k为止。 #include <iostream> #include <cstring> #include <string> …

拯救尴尬:鉴黄神器NSFW JS开源了!
近日,GitHub上开源了一款鉴定不雅内容的js库NSFW JS,你可以使用NSFW JS识别不雅内容,所有操作都只在客户端进行,甚至都不需要让文件离开用户的电脑。 演示地址:https://nsfwjs.com/ 项目地址:https://githu…

Linux下用于查看系统当前登录用户信息的4种方法
作为系统管理员,你可能经常会(在某个时候)需要查看系统中有哪些用户正在活动。有些时候,你甚至需要知道他(她)们正在做什么。本文为我们总结了4种查看系统用户信息(通过编号(ID&…

三维重建【一】——————(深度学习方式)
经典的计算机视觉问题是3-D重建。 基本上可以分成两种路径:一是多视角重建,二是运动重建。前者有一个经典的方法是多视角立体视觉(MVS,multiple view stereo),就是多帧的立体匹配,这样采用CNN模…

【Codeforces】501B Misha and Changing Handles(map)
http://codeforces.com/problemset/problem/501/B map的应用,让新的名字作为key值,旧的名字作为value值,然后一一对应。如果这个旧名字不在map里,则添加进去;如果这个旧名字在map里,则需要进行替换&#x…

vue-cli3+typescript初体验
前言 气势汹涌,ts似乎已经在来的路上,随时可能敲门。2015年,三大前端框架开始火爆的时候,我还在抱着Backbone不放,一直觉得可以轻易转到其他框架去。后来换工作,现实把脸都打肿了,没做过vue、re…

三维重建【二】————3D reconstruction 较为实用的算法资料整理(传统方式)
本文结合一些pape并且将资源进行整合,以便于后期的学习。博客将这些资源一下,这里不得提到大名鼎鼎的KinectFusion以及他后面的一系列工作。KinectFusion单篇论文引用都已经超过3000次了,可以称得上是具有划时代意义的一篇巨著,如…

【Codeforces 738D】Sea Battle(贪心)
http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 n grid. In this game a ships are placed on the grid. Each of the ships consists of bconsecutive cells. No cell can be part of two ships, however, the ships ca…

【POJ】3617 Best Cow Line (字典序 字符串)
http://poj.org/problem?id3617 给定长度为N(1≤N≤2000)的字符串S,要构造一个长度为N的字符串T。期初,T是一个空串,随后反复进行下列任意操作。 从S的头部删除一个字符,加到T的尾部 从S的尾部删除一个字符,加到T的…

python数据池连接PG
发现网上都是mysql,后面发现PG跟mysql差不多,记录下来,怕忘了 import psycopg2 from DBUtils.PooledDB import PooledDB import psycopg2.extraspool PooledDB(psycopg2, 10,database"boatdb", user"postgres",password…

ASP.NET WebAPi之断点续传下载(下)
前言 上一篇我们穿插了C#的内容,本篇我们继续来讲讲webapi中断点续传的其他情况以及利用webclient来实现断点续传,至此关于webapi断点续传下载以及上传内容都已经全部完结,一直嚷嚷着把SQL Server和Oracle数据库再重新过一遍,这篇…

Git学习记录(一)
git-book 全面资料 git 用树形查看 (git 命令代替gitk查看节点树part two 日常使用只要记住下图6个命令即可,但是学海无涯啊 常用 Git 命令清单。几个专用名词的译名如下。 Workspace:工作区Index / Stage:暂存区Reposito…

【牛客】CSL 的字符串 (stack map)
https://ac.nowcoder.com/acm/contest/551/D 这个题怎么说,data用来存储这个字母在字符串中最后一次出现的位置,vis则用来记录该字母是否在栈中。 当栈为空的时候,直接将s[i]放入栈中 如果不为空则需要比较栈顶元素和当前s[i]的那个元素&a…

Python:UTF-8编码转换成GBK编码
2019独角兽企业重金招聘Python工程师标准>>> #!/usr/bin/env python # -*- coding:utf-8 -*- #UTF-8转换成GBK编码 #temp #decode #encode #原理就是把UTF-8转换成万国码,再给万国码进行编码转换成GBK,在python 2.x里面这么用 ""&q…

三维重建【三】-------------------(三维重建资料收集)
Major学者的个人主页汇总: 1.陈宝权:http://web.siat.ac.cn/~baoquan/ 2.南亮亮:http://web.siat.ac.cn/~liangliang/ 3.mueller:http://people.ee.ethz.ch/~pascmu/publications.html 4.Yasutaka Furukawa:http://homes.cs.washi…

在 Linux 中查看时区
1.date date "%Z %z"或者 date -R2.timedatectl timedatectl|grep "Timezone"可以使用 timedatectl 来设置 Linux 时区 3.显示文件 /etc/timezone 的内容 cat /etc/timezone

【HDU】1237 简单计算器 (stack)
http://acm.hdu.edu.cn/showproblem.php?pid1237 题目很好理解,一开始想用优先队列,但好像有点难实现,用stack比较好实现,遇到“ * ” 或者" / " 就进行操作,遇到“ - ” 就把它的相反数加进stack…

关于 synchronizeOnSession
本文为[原创]文章,转载请标明出处。原文链接:https://weyunx.com/2019/01/22...原文出自微云的技术博客 最近在维护一个老项目,发现了一个问题。我们新增了一个耗时较久的复杂查询的功能,页面采用了 ajax 异步请求数据,…

用python操作mysql数据库(之“更新”操作)
#!/usr/bin/env python # -*- coding: utf-8 -*-import MySQLdb#建立连接 conn MySQLdb.connect(host127.0.0.1,userroot,passwd1qaz#EDC,dbtest_db) cur conn.cursor()#对数据进行操作 sql "update user set name%s where id7" #定义sql语句,用于修改…

OpenCV【零】—————cv::Mat——Mat对象创建方法
OpenCV (一)——Mat对象创建方法 目录 OpenCV (一)——Mat对象创建方法 1. cv::Mat优点及原理(本质类) 2. Mat类拷贝及对象的创建方法 3. Mat 对象元素的高效访问 4. 存储方法 5. 显式创建Mat对象 6. 与其他语言对比的方式 7. Mat操作实例 1. c…
在Vmware中安装Ubuntu
转载自:https://blog.csdn.net/stpeace/article/details/78598333 不是每一个程序员都必须玩过linux,只是博主觉得现在的很多服务器都是linux系统的,而自己属于那种前端也搞,后台也搞,对框架搭建也感兴趣,…