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.hqwc.cn/news/415501.html

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

相关文章

Debian 10.13.0 安装图解

引导和开始安装 这里直接回车确认即可&#xff0c;选择图形化安装方式。 选择语言 这里要区分一下&#xff0c;当前选中的语言作为安装过程中安装器所使用的语言&#xff0c;这里我们选择中文简体。不过细心的同学可能发现&#xff0c;当你选择安装器语言之后&#xff0c;后续安…

【链路层】点对点协议 PPP

目录 1、PPP协议的特点 2、PPP协议的组成和帧格式 3、PPP协议的工作状态 目前使用得最广泛的数据链路层协议是点对点协议PPP(Point-to-Point Protocol)。 1、PPP协议的特点 我们知道&#xff0c;互联网用户通常都要连接到某个 ISP 才能接入到互联网。PPP 协议就是用户计算机…

前端技术演进史

大家好&#xff0c;我是宝哥 在互联网的快速发展中&#xff0c;前端技术扮演着至关重要的角色。它不仅是用户与网站交互的窗口&#xff0c;更是网站性能和用户体验的决定因素。本文将从早期的前端技术发展到现代前端框架的诞生&#xff0c;再到构建工具的演变&#xff0c;最后…

Linux下使用Docker部署MinIO实现远程上传

&#x1f4d1;前言 本文主要是Linux下通过Docker部署MinIO存储服务实现远程上传的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是青衿&#x1f947; ☁️博客首页&#xff1a;CSDN主页放风讲故事 &#…

[java数据结构] ArrayList和LinkedList介绍与使用

目录 (一) 线性表 (二) ArrayList 1. ArrayList的介绍 2. ArrayList的常见方法和使用 3. ArrayList的遍历 4. ArrayList的模拟实现 5. ArrayList的优缺点 (三) LinkedList 1. LinkedList的介绍 2. LinkedList的常见方法和使用 3. LinkedList的遍历 4. LinkedList的…

基于springboot+vue的在线视频教育平台系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目背景…

【Linux】配置dns主从服务器,能够实现正常的正反向解析

​​​​​​1、首先&#xff0c;在主服务器上配置DNS解析器。打开配置文件/etc/named.conf&#xff0c;添加以下内容&#xff1a; zone"example.com" IN {type master;file "example.com.zone";allow-transfer { slave_ip_address: }; };zone"xx.16…

vba设置excel单元格背景色

vba设置excel单元格背景色位蓝色 Sheet1.Cells(hang, 2).Interior.Color RGB(0, 0, 255) 参考链接 【VBA】给单元格设置背景色_vba 将一行底色置绿色-CSDN博客https://blog.csdn.net/s_h_m114_2/article/details/105787093 参考2 知乎 VBA--单元格的背景色设置 特此…

小程序系列--8.页面事件

一、下拉刷新事件 1. 什么是下拉刷新&#xff1f; 下拉刷新是移动端的专有名词&#xff0c;指的是通过手指在屏幕上的下拉滑动操作&#xff0c;从而重新加载页面数据的行为。 2. 启用下拉刷新 3. 配置下拉刷新窗口的样式 4. 监听页面的下拉刷新事件 在页面的 .js 文件中&am…

【机组】时序与启停实验的解密与实战

​&#x1f308;个人主页&#xff1a;Sarapines Programmer&#x1f525; 系列专栏&#xff1a;《机组 | 模块单元实验》⏰诗赋清音&#xff1a;云生高巅梦远游&#xff0c; 星光点缀碧海愁。 山川深邃情难晤&#xff0c; 剑气凌云志自修。 ​ 目录 &#x1f33a;一、 实验目…

从QObject类及非QObject类实现多继承,需把QObject放在继承链最前面

在开发中&#xff0c;有时需要实现多继承&#xff0c;如下定义了一个抽象类作为接口&#xff1a; // 接收CAN数据接口类#ifndef _RECVCANDATA_INTERFACE_H #define _RECVCANDATA_INTERFACE_H#include"cansocketlinux.h" class CRecvCanDataInterface {public: // vi…

邮政快递查询,邮政快递单号查询,筛选出指定派件员的单号

面对堆积如山的快递单号&#xff0c;手动筛选、整理既费时又容易出错。现在有了【快递批量查询高手】&#xff0c;这些问题都会迎刃而解。这款软件具备强大的筛选功能&#xff0c;可以根据更新量、派件员、发货时间等条件进行筛选&#xff0c;快速找到目标单号&#xff0c;提高…