Java String基础学习

目录

1、String的构造方法

2、String内存模型

3、字符串的比较

4、字符串的练习

1、用户登录系统

2、遍历字符串

3、统计字符次数

4、拼接字符串

5、字符串的反转

6、金额转换

7、手机号屏蔽 *

8、身份证信息查看

9、敏感词替换

5、StringBuilder

1、概念及练习

2、链式编程思想

3、小练习

6、StringJoiner

1、概念

7、总结



1、String的构造方法


public class StringTest {public static void main(String[] args) {//1、使用直接赋值的方式获取到一个字符串对象String s1 = "我";String s2 = "晓";String s3 = s1 + s2 ;System.out.println(s3 + "!");//2、使用new的方式来获取一个字符串的对象//空参构造:获取一个空白的字符串对象String S1 = new String();System.out.println("@" + S1 + "!");//3、有参构造//p:传递一个字符串,根据传递的字符串再创建一个新的字符串对象!String S2 = new String("xh");System.out.println(S2);//传递一个字符串数组。根据字符数组的内容在创建一个新的字符串对象//需求:我想修改字符串的内容。abc ——> qbc//abc --> {'a','b','c'} --> {'q','b','c'} --> qbcchar[] c1 = {'a','b','c'};String C1 = new String(c1);System.out.println(C1);//传递一个字节数组,根据字节数组的内容再创建一个新的字符串对象//应用场景:在网路传输中的数据都是字节信息。//一般把字节信息进行转换,转换成字符。而此时就会用到这个构造。byte[] b1 = {97,98,99,100};  //把这些数字转换成ascii码值,再进行拼接。String B1 = new String(b1);System.out.println(B1);}
}

2、String内存模型




3、字符串的比较


public class StringDemo {public static void main(String[] args) {//1、创建两个字符串对象String s1 = "abc";String s2 = new String("Abc");//2、==号的比较//如果是基本数据类型,比的是数据值//如果是引用数据类型,比的就是地址值System.out.println(s1 == s2); //false//3、比较字符串对象的内容是否相等Boolean result1 = s1.equals(s2);  //equals比较的对象要完全一样。System.out.println(result1);  //false//4、比较字符串对象的内容是否相等,忽略大小写。//1 一  这不行  只涉及英文Boolean result2 = s1.equalsIgnoreCase(s2);System.out.println(result2); //true}
}

4、字符串的练习


1、用户登录系统
import java.util.Scanner;public class StringDemo3 {public static void main(String[] args) {//读题拆解法//定义两个变量记录正确的用户名和密码String rightUsername = "晓红";String rightPassword = "521";//键盘录入Scanner sc = new Scanner(System.in);for (int i = 0; i < 3; i++) {//键盘录入用户名和密码System.out.println("请输入用户名:");String username = sc.next();System.out.println("请输入密码:");String password = sc.next();//比较int count = 3;if (username.equals(rightUsername) && password.equals(rightPassword)) {System.out.println("用户登录成功!");break;} else {if (i == 2){//tips 提示最后一次机会!System.out.println("账号" + username + "被锁定,请联系汝祥来解锁!");}else{System.out.println("用户登录失败,用户名或密码错误!您还剩下" + (2 - i) + "次机会!");}}}}
}

2、遍历字符串
import java.util.Scanner;public class StringDemo4 {public static void main(String[] args) {//键盘录入字符串Scanner sc = new Scanner(System.in);//tipsSystem.out.println("请输入一个字符串");String s1 = sc.next();//遍历for (int i = 0; i < s1.length(); i++) {// i 依次表示字符串的每一个索引char c = s1.charAt(i);//charAt是一个字符串类(String)的方法;//用于获取指定位置的字符。它接受一个参数,该参数表示要从字符串中获取字符的索引位置。//索引从0开始,表示字符串中的第一个字符。通过使用charAt方法,您可以检索到字符串中任何位置的特定字符。//例如://String str = "Hello, World!";//char ch = str.charAt(7);//System.out.println(ch);System.out.println(c);}}
}

3、统计字符次数
import java.util.Scanner;public class StringDemo5 {public static void main(String[] args) {//1、键盘录入一个字符串Scanner sc = new Scanner(System.in);System.out.println("请输入一个字符串:");String str = sc.next();//2、统计//定义三个计数器int bigCount = 0;int smallCount = 0;int numberCount = 0;for (int i = 0; i < str.length(); i++) {// i 依次表示字符串中每一个索引char c = str.charAt(i);if(c >= 'a' && c < 'z'){//char类型的变量在参与计算的时候自动提升为int,查询ascii码表。smallCount++;}else if(c >= 'A' && c <= 'Z'){bigCount++;}else if(c >= '0' && c <= '9'){numberCount++;}}//输出打印System.out.println("小写字母有" + smallCount + "个");System.out.println("大写字母有" + bigCount + "个");System.out.println("数字符号有" + numberCount + "个");}
}

4、拼接字符串
public class StringDemo6 {public static void main(String[] args) {//我要干嘛? -- 遍历数组,并把数组拼接成字符串//我干这件事需要什么才能完成?  -- 数组//我干完了是否要把结返回调用处。-- 返回一个拼接的字符串//如果返回了,是否继续使用//如果不使用,那么可以返回也可以不返回。int[] arr = {1, 2, 3};String str = arrToString(arr);System.out.println(str);}public static String arrToString(int[] arr) {if (arr == null) {return "";}if (arr.length == 0) {return "[]";}//当代码执行到这表示什么?//表示数组不是null,长度也不为0String result = "[";for (int i = 0; i < arr.length; i++) {//i 索引  arr[i] 元素if (i == arr.length - 1) {result = result + arr[i];} else {result = result + arr[i] + ", ";}}result = result + "]";return result;}
}

5、字符串的反转
import java.util.Scanner;public class StringDemo7 {public static void main(String[] args) {//键盘录入Scanner sc = new Scanner(System.in);System.out.println("请输入一个字符串:");String str = sc.next();//调用String s1 = reverser(str);System.out.println(s1);}//我要干嘛?  -- 将字符串倒着//我干这件事需要什么? --索引数据。将数据重新赋值给变量//做完之后,是否需要返回//调用处是否需要继续使用方法的结果呢?public static String reverser(String str) {//abc --> cbaString result = "";for (int i = str.length() - 1; i >= 0; i--) {//i 表示字符串中的每一个索引(倒着的)char c = str.charAt(i);result = result + c;}return result;}
}

6、金额转换
import java.util.Scanner;public class StringDemo8 {public static void main(String[] args) {//1. 键盘录入金额Scanner sc = new Scanner(System.in);int money; // 用于存储金额的变量while (true) {System.out.println("请录入一个金额");money = sc.nextInt();// 判断金额是否在有效范围内if (money >= 0 && money <= 9999999) {break;} else {System.out.println("金额无效!");}}//2. 定义一个变量来表示钱的大写String moneyStr = "";//3. 得到money里面的每一个数字while (true) {// 从右往左获取数字,因为右侧是数字的个位int ge = money % 10; // 取余,得到个位数//4. 调用方法将数字转换为大写的中文数字String n1 = getNumber(ge);// 将转换后的大写数字拼接到moneyStr的前面moneyStr = n1 + moneyStr;// 去掉刚才获取到的数字money = money / 10;// 如果数字上的每一个数字全部获取到了,那么money记录的就是0,此时循环就结束。if (money == 0) {break;}}//5. 在前面补零,补齐七位int count = 7 - moneyStr.length(); // 需要补零的个数for (int i = 0; i < count; i++) {moneyStr = "零" + moneyStr;}System.out.println(moneyStr);//6. 插入单位String[] arr = {"佰", "拾", "万", "仟", "佰", "拾", "元"};String result = ""; // 存储最终的结果for (int i = 0; i < moneyStr.length(); i++) {char c = moneyStr.charAt(i);result = result + c + arr[i];}System.out.println(result);}// 定义一个方法,将数字转换为大写的中文数字public static String getNumber(int number) {// 定义数组,存储大写的中文数字String[] arr = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};// 返回结果 return arr[number];}
}

7、手机号屏蔽 *


在Java中,可以使用 substring() 方法来截取字符串的子串。substring() 方法有两种重载形式,可以根据起始位置和结束位置或者只根据起始位置来截取子串。

public class StringDemo9 {public static void main(String[] args) {//1、获取一个手机号码String phoneNumber = "17682973508";//2、截取手机号的前面三String p1 = phoneNumber.substring(0,3);//System.out.println(p1);//3、截取手机号码后四位String p2 = phoneNumber.substring(7);//从第七位开始往后进行截取//System.out.println(p2);//4、拼接String result = p1 + "****" + p2;System.out.println(result);}
}

8、身份证信息查看
public class StringDemo10 {public static void main(String[] args) {//1、定义一个字符串用来记录身份证号码String id = "341623200306193750";//2、获取出生年月日String year = id.substring(6,10);String month = id.substring(10,12);String day = id.substring(12,14);//3、获取性别char gender = id.charAt(16); // '5'//利用ascii码表进行转换//gender会转换成ascii值 '5' -- 53  '0' -- 48int num = gender - 48;//System.out.println(num);//进行奇偶判断if (num % 2 == 0){System.out.println("性别为:女");}else{System.out.println("性别为:男");}}
}

9、敏感词替换
在Java中,你可以使用 replace() 方法来替换字符串中的特定字符或子串。这个方法接受两个参数:要替换的目标字符串和用于替换的新字符串。

public class StringDemo11 {public static void main(String[] args) {//1、获取到说的话。String talk = "你玩的真好,下次不要玩了,TMD,SB!";//2.1 定义一个敏感词库String[] arr = {"TMD","CNM","MLGB","SB","NM"};//2.2 循环得到数组中的每一个敏感词,依次进行替换。for (int i = 0; i < arr.length; i++) {talk = talk.replace(arr[i],"***");}//2.3 把话语中的TMD替换为***System.out.println(talk);}
}


java的学习需要很长时间的磨练。不能急于求成!

5、StringBuilder

1、概念及练习


public class StringBuilderDemo1 {public static void main(String[] args) {//1、创建对象StringBuilder sb = new StringBuilder("123");//2、添加元素//sb.append(1);//sb.append(1.2);//sb.append(true);//反转sb.reverse();//获取长度int l1 = sb.length();System.out.println(l1);//打印操作System.out.println(sb);//3、再把StringBuilder变回字符串String str = sb.toString();System.out.println(sb);}
}
2、链式编程思想
public class StringBuilderDemo1 {public static void main(String[] args) {//1、创建对象StringBuilder sb = new StringBuilder();//2、添加元素sb.append("aaa").append("bbb").append("ccc").append("ddd");//3、再把StringBuilder变回字符串String str = sb.toString();System.out.println(sb);}
}

3、小练习
对称字符串import java.util.Scanner;public class StringBuilderDemo2 {public static void main(String[] args) {//1、键盘录入Scanner sc = new Scanner(System.in);System.out.println("请输入一个字符串:");String str = sc.next();//翻转键盘录入的内容//StringBuilder sb = new StringBuilder();//sb.append(str);//sb.reverse();//System.out.println(sb);//第二种方法 链式编程思想String result = new StringBuilder().append(str).reverse().toString();System.out.println(result);//比较if (str.equals(result)){ //拿str和result进行比较System.out.println("当前字符串是对称的!");}else {System.out.println("当前字符串是不对称的!");}}
}


拼接字符串public class StringBuilderDemo3 {public static void main(String[] args) {//1、定义数组int[] arr = {1, 2, 3};//2、调用方法把数组变成字符串String STR = arrToString(arr);System.out.println(STR);}public static String arrToString(int[] arr) {StringBuilder sb = new StringBuilder();sb.append("[");for (int i = 0; i < arr.length; i++) {if (i == arr.length - 1) {sb.append(arr[i]);} else {sb.append(arr[i]).append(", ");}}sb.append("]");return sb.toString();}
}

6、StringJoiner

1、概念




import java.util.StringJoiner;public class StringJoinerDemo1 {public static void main(String[] args) {//1、创建一个对象,并指定中间的间隔符号。StringJoiner sj = new StringJoiner("---");//2、添加元素sj.add("aaa").add("bbb").add("ccc").add("ddd");//3、打印结果System.out.println(sj);//aaa---bbb---ccc---ddd}
}

7、总结



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/636869.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【51单片机Keil+Proteus8.9】控制步进电机+LCD1602显示状态

步进电机控制 设计思路 电路设计&#xff1a; 选用AT89C51单片机作为电路核心部件&#xff0c;外加LM016L液晶显示屏作为显示&#xff0c;显示步进电机的Fast&#xff0c;Slow&#xff0c;Stop的三个状态将AT89C51单片机所选引脚与LM016L控制引脚相连&#xff0c;再将数据通…

ASEPRITE使用笔记

aseprite学习笔记 快捷键 新建图层后,按快捷键c可以调出画布属性框放大缩小画布快捷键,鼠标滚轮移动画布快捷键,空格ctr+d,取消选取基本概念 软件五个基本区域:菜单栏、工具属性栏、工具栏、图层栏、颜色栏颜色栏分为色板和调色区域注意事项 创造时,需要把输入法调整成应…

(2024,VMamba,交叉扫描,线性复杂度,全局感受野,动态权重)视觉状态空间模型

VMamba: Visual State Space Model 公和众和号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 目录 0. 摘要 3. 方法 3.1 基础概念 3.2 2D 选择性扫描 3.3 VMamba 模型 3.3.1 整体架构 3.3.2 VSS…

大数据开发之Kafka(broker、消费者、eagle监控、kraft模式)

第 4 章&#xff1a;Kafka Broker 4.1 Kafka Broker工作流程 4.1.1 Zookeeper存储的Kafka的信息 1、查看zookeeper中的kafka节点所存储的信息 启动Zookeeper客户端 [atguiguhadoop104 zookeeper-3.5.7]$ bin/zkCli.sh 通过ls命令列出kafka节点内容 [zk: localhost:2181(CO…

Windows11添加美式(纯英文)输入法

打开设置&#xff0c;选择“时间和语言” 选择“语言和区域” 检查语言中否有英语&#xff08;美国&#xff09;&#xff0c;如果没有&#xff0c;请单击“添加语言” 单击英语&#xff08;美国&#xff09;右方的更多选项按钮&#xff0c;选择“语言选项” 找到下方“键盘…

对象数组变成一维数组,导出txt文件

假设对象数组格式为此 arr1: [{id: 1,title: 我是1目录,children: [{id: 11,title: 我是1-1目录,children: [{id: 111,title: 我是1-1-1目录,children: [],},],},],},{id: 2,title: 我是2目录,children: [{id: 21,title: 我是2-1目录,children: [],},],},], 页面如下 先在页面…

【Spring 篇】MyBatis中的CRUD魔法:数据之美的四重奏

MyBatis&#xff0c;这个数据持久化的魔法师&#xff0c;以其优雅的SQL映射和简洁的配置文件&#xff0c;为我们呈现出一场CRUD&#xff08;Create, Read, Update, Delete&#xff09;的奇妙之旅。在这篇博客中&#xff0c;我们将深入探讨MyBatis中的增、删、改、查操作&#x…

linux基础学习(5):yum

yum是为了解决rpm包安装依赖性而产生的一种安装工具 1.yum源 1.1配置文件位置 yum源的配置文件在/etc/yum.repos.d/中 *Base源是网络yum源&#xff0c;也就是需要联网才能使用的yum源。默认情况下&#xff0c;系统会使用Base源 *Media源是光盘yum源&#xff0c;是本地yum源…

std::atomic

一、概述 std::atomic 是C11引入的一个模板类&#xff0c;用于提供原子操作的类型。在多线程编程中&#xff0c;当多个线程同时访问同一块数据时&#xff0c;可能会导致数据竞争和不确定的行为。std::atomic 可以用来创建原子类型的变量&#xff0c;保证对该变量的操作是原子的…

【leetcode】下一个排列 双指针算法

/*** param {number[]} nums* return {void} Do not return anything, modify nums in-place instead.*/ var nextPermutation function(nums) {const len nums.length;let i len -2;//找到第一个当前项比后一项小的位置iwhile(i>0&&nums[i]>nums[i1]) i--;if(…

章鱼网络 Community Call #17|打造全新 Omnity 跨链协议

香港时间2024年1月8日12点&#xff0c;章鱼网络举行第17期 Community Call。 对于 Octopus Community 而言&#xff0c;2023年是一个分水岭。我们如期兑现我们的承诺&#xff0c;成功上线了包括 $NEAR Restaking 和 Adaptive IBC 在内的完整的 Octopus 2.0。 自从我们在2023年…

9.2 工厂模式(❤)

9.2 工厂模式(❤) 1. 工厂模式介绍1.1 工厂模式1.2 简单工厂1.2.1 案例讲解: 购买电脑2. 工厂模式用途和特点3. 工厂模式项目应用1. 工厂模式介绍 1.1 工厂模式

万界星空科技mes系统可以为企业带来什么好处

随着信息技术的不断发展&#xff0c;MES生产制造系统的作用不断凸显。万界星空科技MES生产制造可以为企业带来四个方面的好处&#xff1a;提升生产效率、降低生产成本、优化生产过程、提高生产质量。本文将从这四个方面分别进行详细阐述&#xff0c;旨在通过对MES生产制造系统的…

动态规划汇总

作者推荐 视频算法专题 简介 动态规划&#xff08;Dynamic Programming&#xff0c;DP&#xff09;是运筹学的一个分支&#xff0c;是求解决策过程最优化的过程。每次决策依赖于当前状态&#xff0c;又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的&#x…

C#调用C++ dll异常排查

基本情况 最近在做的一款程序&#xff0c;长时间运行总会出现莫名的问题。有时是自动关闭&#xff0c;有时程序报错&#xff0c;有时调用的dll异常…… 提出假设——dll内存泄漏 由于开始与C组合作时&#xff0c;使用其提供的dll出现过数据读写时异常&#xff08;内存操作异常…

线程的创建与回收

目录 一、线程的创建 进程&#xff1a; 线程&#xff1a; 线程特点&#xff1a; 一个进程中的多个线程共享以下资源&#xff1a; 每个线程私有的资源包括&#xff1a; Linux线程库&#xff1a; 线程创建-pthread_create 二、线程的参数传递 线程结束-pthread_exit 线程查…

【论文解读】LERF:语言嵌入的辐射场(ICCV 2023 Oral)

来源&#xff1a;投稿 作者&#xff1a;橡皮 编辑&#xff1a;学姐 论文链接&#xff1a;https://arxiv.org/abs/2303.09553 项目主页&#xff1a;https://lerf.io](https://lerf.io 图 1&#xff1a;语言嵌入辐射场 (LERF)。 LERF 将 CLIP 表示建立在密集、多尺度的 3D 场中。…

Oracle SQL Developer执行sql脚本文件

文件过于大&#xff0c;无法打开&#xff0c;直接在界面执行。 ①将文件放置到D盘&#xff0c;文件名 daochu5.sql ② 在工具执行SQL界面输入 d:\daochu5.sql;,点击运行按钮运行

Shell 脚本实现自动启动程序、日志管理和定时任务监控

简介 本篇将通过Shell 脚本实现自动启动Java程序、日志管理和定时任务监控。脚本启动程序具灵活定制、可移植性和扩展性强的优点&#xff0c;可以根据需要添加额外的功能、配置选项和自定义行为&#xff0c;从而满足更具体的要求。 脚本编写 vim start_program.sh#!/bin/bas…

Swift抓取某网站律师内容并做排名筛选

有个很要好的朋友&#xff0c;今天找我说他的朋友欠他钱&#xff0c;因为工程上面的事情&#xff0c;所以一直没拿到款。想让我找个靠谱的律师帮他打官司&#xff0c;因为这个也不是我的强项&#xff0c;也没有这方面的经验。随即从律师网站爬取对应律师口碑以及成功案例&#…