技术标签: Java语言高级
java.lang.String 类代表字符串。
Java程序中所有的字符串文字(例如 “abc” )都可以被看作是实现此类的实例。
类 String 中包括用于检查各个字符串的方法,比如用于比较字符串,搜索字符串,提取子字符串以及创建具有翻译为大写或小写的所有字符的字符串的副本。
## 使用步骤
查看类
java.lang.String :此类不需要导入。
查看构造方法
public String() :初始化新创建的 String对象,以使其表示空字符序列。
public String(char[] value) :通过当前参数中的字符数组来构造新的String。
public String(byte[] bytes) :通过使用平台的默认字符集解码当前参数中的字节数组来构造新的 String。
代码实现:
public class stinglei {
public static void main(String[] args) {
//空参构造
String str1=new String();
System.out.println("第一个字符数组为:"+str1);
//根据字符数组构造
char[] st2={
'L','X'};
String str2=new String (st2);
System.out.println("第二个字符数组为:"+str2);
//根据字节数组构造
byte[] str3={
97,98,99};
String str4=new String (str3);
System.out.println("第三个字符数组为:"+str4);
}
}
public class demo2string {
public static void main(String[] args) {
String str1 = "abc";
String str2 = "abc";
char[] charArray = {
'a', 'b', 'c'};
String str3 = new String(charArray);
System.out.println(str1==str2);
System.out.println(str2==str3);
System.out.println(str1==str3);
}
}
运行结果
字符串常量池:程序当中,直接写上的双引号字符串都在字符串常量池中
对于基本类型来说== 是进行数值的比较
对于引用类型来说 ==是进行地址值的比较
上面代码中第一个字符串和第二个字符串结果为true说明地址值一样
字符串常量池基本原理
是进行对象的地址值比较,如果要对字符串内容比较,可以用两个方法
public boolean equals(Object obj):参数可以是任何对象,只有参数是一个字符串且内容一致才会返回true 否则返回false
equal使用注意事项:
不区分大小写的比较
public class stringcompare {
public static void main(String[] args) {
String str1 = "abc";
String str2 = "abc";
char[] charArray = {
'a', 'b', 'c'};
String str3 = new String(charArray);
System.out.println(str1.equals(str2));
System.out.println(str2.equals(str3));
System.out.println(str3.equals("abc"));
}
}
区分大小写的比较
public class stringcompare {
public static void main(String[] args) {
String str1 = "abc";
String str2 = "Abc";
System.out.println(str1.equals(str2));
System.out.println(str1.equalsIgnoreCase(str2));
}
}
String 当中与获取相关的常用方法有:
public int length():获取字符串当中的字符个数,拿到字符串长度
public String concat(String str):将当前字符串和参数字符串拼接成为返回值新的字符串
public char charAt(int index):获取指定索引位置的单个字符
public int indexOf(String str):查找参数字符串在本字符串当中首次出现的索引位置,如果没有返回-1
public class stringhuoqu {
public static void main(String[] args) {
//获取字符串长度
int length="jahsfjihasjgh".length();
System.out.println(length);
//拼接字符串
String str1="Hello";
String str2="World";
String str3=str1.concat(str2);
System.out.println(str1);
System.out.println(str2);
System.out.println(str3);
//获取指定索引位置的单个字符
char ch="asfdjkaf".charAt(4);
System.out.println("在四号的索引位置是:"+ch);
//查找参数字符串中在本来字符串中第一次出现的位置,若没有返回-1
String ori="sjdfhuiahsfiajd";
int num=ori.indexOf("i");
System.out.println("第一次索引值:"+num);
//若没有呢?
int num2=ori.indexOf("xunxun");
System.out.println("第一次索引值:"+num2);
}
}
public char[] toCharArray() 将当前字符串拆分成字符数组作为返回值
public byte[] getBytes() 获得当前字符串底层的字节数组
public String replace (CharSequence oldString, CharSequence newString)
将所有出现的老字符串替换成新的字符串,返回替换之后的字符串
public class changestring {
public static void main(String[] args) {
String str1 = "HelloWorld";
System.out.println(str1);
char[] str2 = str1.toCharArray();//转换成数组可以一个字一个字玩
System.out.println(str2);
byte[] str3 = str1.getBytes();//IO流常用
for (int i = 0; i < 10; i++) {
System.out.println(str3[i]);
}
//替换词汇时用到String replace
String str="How do you do?";
String str4= str.replace("o","*");
System.out.println(str);//原来字符串不变,需要重新定义一个字符串来接收
System.out.println(str4);
// 比如你打游戏时,队友的一些脏话会进行替换,大部分脏话替换成***
String lang1="会玩不,你大爷的!";//这时候就用到了我们的替换功能了
String lang2=lang1.replace("你大爷的","****");
System.out.println(lang1);//原来输出内容
System.out.println(lang2);//替换后输出内容
}
}
public String substring(int index) 截取从参数位置一直到字符串末尾的
public String substring(int begin,int end)从开始位置截取到结束位置的字符串
public class stringqq {
public static void main(String[] args) {
String str1="HelloWorld";
String str2=str1.substring(5);//从第五个位置截取
System.out.println(str2);//输出截取后的结果
System.out.println(str1);//原来字符串依旧不变
System.out.println("==========");
String str3=str1.substring(4,7);//截取从第二个到第五个
System.out.println(str3);
//下面看一个例子,来解释字符串会不会发生改变
String strA="Hello";
System.out.println(strA);//输出Hello
strA="java";
System.out.println(strA);//输出java
}
//这是不是字符串发生改变?
// 当然不是,这是两个字符串,strA当中保留的是地址值,本来它所保存的是Hello字符串的地址0x666,
// 当执行语句strA=java之后又开辟了新的字符串,并把新的字符串的地址0x999赋值给strA,所以造成了好像字符串改变的假象
//这里所说的地址值均是随意写的,并不代表真正的地址值
分割与截取有一定差距,并不是一类
public String[] splist(String regex)//按照参数规则把字符串切分为若干部分
public class stringdivid {
public static void main(String[] args) {
String str1="汛汛,520";//这是一个字符串
System.out.println(str1);//没有分割以前
String str[]=str1.split(",");//以什么作为划分依据,这里以,作为依据,
// 使用字符串数组接收
for (int i = 0; i < str.length; i++) {
System.out.println(str[i]);//分割以后
}
//注意,
// split方法参数是一个正则表达式 若以“.”作为依据进行分割,
// 必须写||.才可以实现分隔,因为当它单独出现时有单独含义。看下面的例子
String str6="汛汛.520";//使用英文句点分隔
/*String st7[]=str6.split(".");//使用英文句点作为划分依据
//看下运行结果
System.out.println(st7.length);//输出划分后的字符串数组长度,运行结果为0
for (int i = 0; i < str6.length(); i++) {
System.out.println(st7[i]);//运行结果不显示
}
*/
String st8[]=str6.split("\\.");//使用英文句点作为划分依据
//看下运行结果
System.out.println(st8.length);//长度输出结果为2
for (int i = 0; i < str6.length(); i++) {
System.out.println(st8[i]);//
}
}
}
1、定义一个方法,把数组{1,2,3}按照指定形式拼接成【word1#word2#word3】
分析:
准备一个int数组
定义一个方法把数组转换成字符串
用到:循环,字符串拼接,区分下是否是最后一个
public class stringpritace {
public static void main(String[] args) {
int[] arrAy = {
1, 2, 3};
String str2 = get(arrAy);
System.out.println(str2);
}
public static String get(int[] arr) {
String str = "[";
for (int i = 0; i < arr.length; i++) {
if (i == arr.length - 1)
{
str += "word" + arr[i] + "]";
}else
{
str += "word" + arr[i] + "#";
}
}
return str;
}
}
2、键入一个字符串,统计出各种字符出现次数
思路:
Scanner类要使用
String str=sc.next()
定义四个变量,分别代表四种字符出现次数。
对字符串一个字一个字检查(toCharArray)方法
遍历char数组,对当前字符的种类进行判断,并且用四个变量进行++
打印输出
import java.util.Scanner;
public class stringpricate2 {
public static void main(String[] args) {
int shuzi = 0;
int daxiezimu = 0;
int xiaoxiezimu = 0;
int other = 0;
Scanner sc = new Scanner(System.in);
System.out.println("输入一串字符");
String input = sc.next();
char[] str1 = input.toCharArray();
for (int i = 0; i < str1.length; i++) {
char ch=str1[i];
if ('A' <= ch && ch <= 'Z') {
daxiezimu++;
} else if ('a' <= ch && ch <= 'z') {
xiaoxiezimu++;
} else if ('0' <= ch && ch <= '9') {
shuzi++;
} else {
other++;
}
}
System.out.println("大写字母有" + daxiezimu + "个");
System.out.println("小写字母有" + xiaoxiezimu + "个");
System.out.println("数字有" + shuzi + "个");
System.out.println("其他字符有" + other + "个");
}
}
文章浏览阅读2w次,点赞7次,收藏51次。四个步骤1.创建C++ Win32项目动态库dll 2.在Win32项目动态库中添加 外部依赖项 lib头文件和lib库3.导出C接口4.c#调用c++动态库开始你的表演...①创建一个空白的解决方案,在解决方案中添加 Visual C++ , Win32 项目空白解决方案的创建:添加Visual C++ , Win32 项目这......_c#调用lib
文章浏览阅读4.6k次。苹方字体是苹果系统上的黑体,挺好看的。注重颜值的网站都会使用,例如知乎:font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, W..._ubuntu pingfang
文章浏览阅读159次。表单表单概述表单标签表单域按钮控件demo表单标签表单标签基本语法结构<form action="处理数据程序的url地址“ method=”get|post“ name="表单名称”></form><!--action,当提交表单时,向何处发送表单中的数据,地址可以是相对地址也可以是绝对地址--><!--method将表单中的数据传送给服务器处理,get方式直接显示在url地址中,数据可以被缓存,且长度有限制;而post方式数据隐藏传输,_html表单的处理程序有那些
文章浏览阅读1.2k次。使用说明:开启Google的登陆二步验证(即Google Authenticator服务)后用户登陆时需要输入额外由手机客户端生成的一次性密码。实现Google Authenticator功能需要服务器端和客户端的支持。服务器端负责密钥的生成、验证一次性密码是否正确。客户端记录密钥后生成一次性密码。下载谷歌验证类库文件放到项目合适位置(我这边放在项目Vender下面)https://github.com/PHPGangsta/GoogleAuthenticatorPHP代码示例://引入谷_php otp 验证器
文章浏览阅读4.3k次,点赞5次,收藏11次。matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距
文章浏览阅读2.2k次。①Storage driver 处理各镜像层及容器层的处理细节,实现了多层数据的堆叠,为用户 提供了多层数据合并后的统一视图②所有 Storage driver 都使用可堆叠图像层和写时复制(CoW)策略③docker info 命令可查看当系统上的 storage driver主要用于测试目的,不建议用于生成环境。_docker 保存容器
文章浏览阅读834次,点赞27次,收藏13次。网络拓扑结构是指计算机网络中各组件(如计算机、服务器、打印机、路由器、交换机等设备)及其连接线路在物理布局或逻辑构型上的排列形式。这种布局不仅描述了设备间的实际物理连接方式,也决定了数据在网络中流动的路径和方式。不同的网络拓扑结构影响着网络的性能、可靠性、可扩展性及管理维护的难易程度。_网络拓扑csdn
文章浏览阅读1.8k次,点赞5次,收藏8次。IOS系统Date的坑要创建一个指定时间的new Date对象时,通常的做法是:new Date("2020-09-21 11:11:00")这行代码在 PC 端和安卓端都是正常的,而在 iOS 端则会提示 Invalid Date 无效日期。在IOS年月日中间的横岗许换成斜杠,也就是new Date("2020/09/21 11:11:00")通常为了兼容IOS的这个坑,需要做一些额外的特殊处理,笔者在开发的时候经常会忘了兼容IOS系统。所以就想试着重写Date函数,一劳永逸,避免每次ne_date.prototype 将所有 ios
文章浏览阅读5.3k次。方法一:用PLSQL Developer工具。 1 在PLSQL Developer的sql window里输入select * from test for update; 2 按F8执行 3 打开锁, 再按一下加号. 鼠标点到第一列的列头,使全列成选中状态,然后粘贴,最后commit提交即可。(前提..._excel导入pl/sql
文章浏览阅读83次。Git常用命令速查手册1、初始化仓库git init2、将文件添加到仓库git add 文件名 # 将工作区的某个文件添加到暂存区 git add -u # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件git add -A # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件...
文章浏览阅读202次。分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120
文章浏览阅读1.8k次。版权声明:转载请注明出处 http://blog.csdn.net/irean_lau。目录(?)[+]1、缺省构造函数。2、缺省拷贝构造函数。3、 缺省析构函数。4、缺省赋值运算符。5、缺省取址运算符。6、 缺省取址运算符 const。[cpp] view plain copy_空类默认产生哪些类成员函数