字符串(java)

字符串的特点:

1.String是java定义好的一个类,定义在java.lang包里面,所以使用的时候是不需要进行导包的

2.java程序中的所有字符串文字,都被实为此类的对象。也就是说当我们就算是进行赋值,这个也会创造两个字符串

3.字符串是不可变的,它的值在创建后不能被更改

创建String对象的两种方式:

  1. 直接赋值  String name = “关岁安”;
  2. 可以使用new一个String来创建
     

 创建字符串的几种方式

public class Role {public static void main(String[] args) {//1.直接赋值String s1 = "abc";System.out.println(s1);//2.使用new一个字符串对象//空参构造;可以获取一个空白的字符串对象String s2 = new String();System.out.println("@"+s2+"!");//3.有参构造,根据传递的字符串内容再创建以一个新的字符串String s3 = new String("abc");System.out.println(s3);//4.传递一个字符数组,根据字符串数组的内容再创建一个新的字符串对象//修改字符串的内容:abc = {'a','b','c'}-->{'q','b','c'}可以通过字符行数组进行改变char[] chs = {'a','b','c'};String s4 = new String(chs);System.out.println(s4);//传递一个字节数组,根据字节数组的内容再创建一个新的字符串对象//引用场景:以后在网络种传输的数据其实都是字节信息byte[] bytes = {100,23,33};//这个是一个ASILL值区查找相应的字符String s5 = new String(bytes);System.out.println(s5);}
}

这几种创建字符串的内存方式;

当使用双引号直接赋值的时候,系统会检查该字符串在串池中是否存在

不存在:创建新的

存在:复用

使用字符数组进行创建字符串

 

 

s1和s2是创建两个空间

java的常见方法(比较)

 

==所以这个是什么意思?

如果是基本数据类型比较的是数值

如果是引用数据了类型比较的是地址值

 

如果我们想要比较字符床就需要使用两个函数第一个是

Boolean equals方法(要比较的字符串—这个是不能忽略大小写

Boolean equalsignoreCase方法(要比较的字符串—这个是可以忽略大小写)

 

public class Role {public static void main(String[] args) {//1.创建两个字符串对象String s1 = new String("abc");String s2 = new String("abc");System.out.println(s1 == s2);}
}

由于最后的地址不一样的

所以最后的答案是:false

boolean result = s1.equals(s2);
System.out.println(result);

如果是比较两个字符串里面的内容,这个时候返回的值是true

String s3 = new String("Abc");
boolean result_1 = s1.equalsIgnoreCase(s3);
System.out.println(result_1);

那么最后出来的是true

import java.util.Scanner;//这个相当于一个iostream的头文件public class Role {public static void main(String[] args) {//如果我想要通过键盘进行字符串比较//1.创建一个输入的对象名(栈区存放的是一个地址)Scanner sc = new Scanner(System.in);System.out.println("请输入一个字符串");//2.原来输入一个字符串是这样的String s1 = sc.next();String s2 = "abc";//3.使用==比较,这两者能一样吗?System.out.println(s1 == s2);}
}

答案很显然是false是因为这个我们输入的这个是通过Scanner sc = new Scanner(System.in)

New出来的一个新的地址,所以肯定会不一样最好使用之前介绍的两个函数进行比较

案例:用户登录

需求:已知正确的用户名和密码,请用程序实现模拟用户登录

总共给三次机会,登录之后,给出相应的提示

小提示:自动生成左边ctrl + alt + v

使用ctrl + alt + t  使我们所写的代码在一个while if for等语句中

这个是一个判定用户密码输入的小程序

import java.util.Scanner;public class StringDemo1 {public static void main(String[] args) {//1.创建正确的用户名和密码String RightUserName = "关岁安";String RightUserWord = "2829649106";Scanner sc = new Scanner(System.in);for (int i =1;i<=3;i++) {System.out.println("请输入用户名");String name = sc.next();System.out.println("请输入密码");String word = sc.next();//3.判断用户名和我们输入的密码是否一致if(name.equals(RightUserName)&&word.equals(RightUserWord)){System.out.println("输入密码正确");break;}else{if(i == 3){System.out.println("账号已锁定" + name + "请联系我解决");}else{System.out.println("输入的密码或者用户名不存在,你还剩下"+(3-i)+"次机会");}}}}
}

遍历字符串:

需求:键盘输入一个字符串,使用程序实现在控制台遍历该字符串

public char charAt(int index);

public int length();返回此字符串的长度

数组长度:数组名.lenght;

字符串长度:字符串对象.lengh

小技巧:当我们在进行输入字符串的时候,可以先写左边的输入: sc.next()  然后按着ctrl + shift + v 就会自动生成左边 当我们的这个项目体量增加后有可能会忘记这个变量的名字所以这个可以有效帮助我们进行书写

import java.util.Scanner;public class StringDemo1 {public static void main(String[] args) {Scanner sc = new Scanner((System.in));System.out.println("请输入一个字符串");//1.进行输入字符串String str = sc.next();//2.遍历字符串for (int i = 0; i < str.length(); i++) {char c = str.charAt(i);System.out.println(c);}}
}

在这里函数charAt(i) 相当于是一个数组下标 其实把这个看成一个数组下表i就行

统计字符串的大小写,数字的一个小程序

import java.util.Scanner;public class StringDemo1 {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 num = 0;for (int i = 0; i < str.length(); i++) {char c = str.charAt(i);if (c >= 'a' && c <= 'z') {smallcount++;} else if (c >= 'A' && c <= 'Z') {bigcount++;} else if (c >= '0' && c <= '9') {num++;}}System.out.println("小写" + smallcount);System.out.println("大写" + bigcount);System.out.println("数字" + num);}
}

这个其实就是和c语言的差不多 但是我们需要知道其中的具体操作

拼接字符串:

需求:定义一个方法,把int数组中的数据按照指定的格式拼接一个字符串返回,调用该方法,并在控制台进行输出

 

最后的代码呈现:

需要注意的是这个[ ]和空格和逗号的问题,我们在遍历到最后一个时候就不需要再加逗号和空格。

import java.util.Scanner;public class StringDemo1 {public static void main(String[] args) {int[] a = {1, 2, 3};String str = arrToString(a);System.out.println(str);}public static String arrToString(int[] arr) {if (arr == null) {return "";}if (arr.length == 0) {return "[]";}String result = "[";for (int i = 0; i < arr.length; i++) {if (arr.length - 1 == i) {result = result + arr[i] + "]";} else {result = result + arr[i] + ", ";}}return result;}
}

再来一个训练:字符串的反转

小技巧:当我们写str.length的时候再加上.fori或者.forr  其中fori是从0开始遍历,而forr是从最后一个开始,到下标为0结束。

我犯下的错误:1.字符串不能进行自加行为  2.我们在使用函数进行调用时,是不能像c语言直接使用sout(加函数)  只能使用一个变量进行承接,然后通过输出变量进行输出字符串。

import java.util.Scanner;public class StringDemo1 {public static void main(String[] args) {String str =  reverser("abc");System.out.println(str);}public static String reverser(String str){String ans = "";for(int i = str.length() - 1;i>=0 ;i--){char c = str.charAt(i);ans = ans + c;}return ans;}
}

 

 

小程序:金额转化

我犯下的错误:1.在while循环中我将int型变量放在了while循环的小括号中,在java中对于类型的要求时十分严格的,不能将整型的变量放这个小括号。

所以里面只能是true或者false
在后面我还搞错了一个东西:String类型的字符串中常常会赋初值”” 这个是不会占用String里面的下标的,只有赋” ”(里面含一个空格才能行)

  1. 首先我需要明白一件事,String[]是一个字符型数组,每个下标里面存放的是一个字符串。而对于一个String类型的字符串来说我们想要访问它其中的元素只能是通过str.charAt(i),来访问相应下标的元素。

关于这一题的相关代码:

import java.util.Scanner;public class StringDemo1 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int num;//1.输入数字并且判断这个数字是否合法while (true) {System.out.println("请输入一个数字");num = sc.nextInt();if (num <= 0 || num >= 9999999) {System.out.println("数字不符合常规请重新输入");} else {break;}}String str = "";//2.将每一位数字都输入到方法中while (true) {int go = num % 10;String bignum = ToChangeNum(go);str = bignum + str;num /= 10;if (num == 0) break;}//补零int count = 7 - str.length();for (int i = 0; i < count; i++) {str = "零" + str;}System.out.println(str);String result = "";String[] arr = {"佰", "拾","万","仟","佰","拾","元"};for (int i = 0; i < str.length(); i++) {char c = str.charAt(i);result = result + c + arr[i];}System.out.println(result);}public static String ToChangeNum(int num) {String[] change = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};return change[num];}
}

substring函数的使用方法:

String substring(int beginindex,int endindex)截取函数

注意点:包头不包尾,包做补包右

               只有返回值才是截取的最小串(对原来的字符串没有影响)

重载的方式:
String substring(int beginindex)从beginindex直接截取到末尾

我犯下的错误:String类型赋初值的时候我们不需要加上{}这样反而会错,应该直接加上双引号。

实体样例我们把密码中间那一步使用*代替

import java.util.Scanner;public class StringDemo1 {public static void main(String[] args) {String numberPhone = "15570936136";String start = numberPhone.substring(0,3);String end = numberPhone.substring(7);String result = start + "****" + end;System.out.println(result);}
}

新学一个方法替换:str.replace(target:”字符串中的字符”,replacemaent:”***”);

后面这个可以和原来的字符串长度不一样。

我犯下的错误:这个其实和上面那截取是一样的,都容易犯忘记冲定义一个字符串来获取新字符串,注意截取和替换操作都无法对原来的字符串造成改变

import java.util.Scanner;public class StringDemo1 {public static void main(String[] args) {String str = "你可真牛,tmd";String ss = str.replace("tmd","******");System.out.println(ss);}
}

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

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

相关文章

YOLOv8改进 | 低照度检测 | 2024最新改进CPA-Enhancer链式思考网络(适用低照度、图像去雾、雨天、雪天)

一、本文介绍 本文给大家带来的2024.3月份最新改进机制&#xff0c;由CPA-Enhancer: Chain-of-Thought Prompted Adaptive Enhancer for Object Detection under Unknown Degradations论文提出的CPA-Enhancer链式思考网络&#xff0c;CPA-Enhancer通过引入链式思考提示机制&am…

(1)半导体设备之sorter机(上)

01、什么是sorter 其实sorter 就是分选机&#xff0c;大家日常生活买的土豆&#xff0c;苹果&#xff0c;会用到这个&#xff0c; 大家日常用的硬币&#xff0c;游戏币&#xff0c;都是用sorter来进行挑选的&#xff0c;否则人工数硬币又累又苦逼&#xff0c;钱再对不上号&…

【JavaScript】函数 ② ( 函数参数 | 形式参数 | 实际参数 )

文章目录 一、JavaScript 函数参数1、形式参数2、实际参数3、代码示例 - 形参和实参 一、JavaScript 函数参数 在 JavaScript 语言中 , 参数 分为以下两种 : 形式参数 Parameter , 简称 " 形参 " , 是 在函数定义时列出的变量 , 用于预期函数将接收的输入值 ;实际参…

计算机网络-从输入网址到访问网站的全过程

当我们在浏览器中输入一个网址并按下回车键时&#xff0c;会发生一系列复杂的过程&#xff0c;最终使我们能够看到网页的内容。以下是这个过程的详细步骤&#xff1a; 客户端&#xff1a;首先&#xff0c;用户在浏览器中键入网址&#xff0c;然后浏览器会根据这个网址生成一个H…

ER图与关系模型

1、试画出数据库系统的三级模式结构图。 2、试画出数据库系统的组成图。 3、学校运动会有来自全校各学院运动员组成的代表团参赛各类竞赛项目。一个 代表团由多名运动员组成&#xff1b;一个运动员可以参加不同项目的比赛&#xff0c;而一个竞赛项目允许多名运动员参赛。为了…

ADB(Android Debug Bridge)操作命令详解及示例

ADB&#xff08;Android Debug Bridge&#xff09;是一个强大的命令行工具&#xff0c;它是Android SDK的一部分&#xff0c;主要用于Android设备&#xff08;包括真实手机和平板电脑以及模拟器&#xff09;的调试、系统控制和应用程序部署。 下面是一些ADB的常用命令&#xff…

小程序开发调试指南

调试指南 一、Vconsole 一些线上问题需要在真机中进行调试或日志输出&#xff0c;为方便查看前端日志的输出&#xff0c;App 端提供了调试模式, 打开调试模式后面板界面中会显示 vConsole 按钮&#xff0c;点击后可打开手机端 vConsole界面查看日志输出。 1.如何开启 点击小…

数字示波器

数字示波器 综述&#xff1a;本文讲述了数字示波器的电路组成。 一&#xff0e;定义 显示电信号波形的仪器 二&#xff0e;组成 由模拟前端处理电路、电源电路、单片机电路、控制电路、触发电路、校准电路组成。 1&#xff09;模拟前端处理电路 将输入的模拟信号处理后传…

CAN(1) 入门介绍

1.基本概念 CAN 是控制器局域网络 (Controller Area Network) 的简称&#xff0c;它是由研发和生产汽车电子产品著称的德国 BOSCH 公司开发的&#xff0c;并最终成为国际标准(ISO11519以及ISO11898),是国际上应用最广泛的现场总线之一。 CAN 总线协议已经成为汽车计算机控制系…

OmniGraffle Pro for mac 出色的图形设计软件

OmniGraffle Pro是一款非常出色的图形设计软件&#xff0c;它主要适用于Mac和iPad平台&#xff0c;可以用来轻松绘制各种精美的图表、示意图和界面设计。 软件下载&#xff1a;OmniGraffle Pro for mac中文注册激活版 以下是OmniGraffle Pro的一些主要特点和功能&#xff1a; 界…

短剧猫H5页面html源码

短剧猫H5页面html源码&#xff0c;包含一个接口&#xff0c;像俩天块样式发送剧名回复网盘链接&#xff0c;文件上传解压就能用。 源码免费下载地址抄笔记 (chaobiji.cn)https://chaobiji.cn/

【IP组播】PIM-SM的RP、RPF校验

目录 一&#xff1a;PIM-SM的RP 原理概述 实验目的 实验内容 实验拓扑 1.基本配置 2.配置IGP 3.配置PIM-SM和静态RP 4.配置动态RP 5.配置Anycast RP 二&#xff1a; RPF校验 原理概述 实验目的 实验内容 实验拓扑 1.基本配置 2.配置IGP 3.配置PIM-DM 4.RPF校…

F280049的JTAG接口与仿真器XDS100V3六线解法,仿真器供电

虽然程序更新和调试主要用CAN、SCI接口加上二次bootloader以及上位机。但是仿真器在初期或者有时候&#xff0c;还是要用一用的。板子上尽量以最小空间留一个仿真器的接插件。 用低成本的仿真器XDS100V3,用六根线实现连接。有几点改动&#xff0c;在此记录下。 根据数据手册中…

SOC内部集成网络MAC外设+ PHY网络芯片方案:MII/RMII 接口与 MDIO 接口

一. 简介 本文来了解一下常用的一种网络硬件方案&#xff1a;SOC内部集成网络MAC外设 PHY网络芯片方案。 其中涉及的 MII接口&#xff0c;RMII接口&#xff08;MII接口与RMII接口二选一&#xff09;&#xff0c;MDIO接口&#xff0c;RJ45。 二. MII/RMII 接口&#xff0c;M…

JavaWeb学习笔记01

一、教程简介 全新JAVAWEB&#xff08;里程碑版&#xff09; 一套更适合后端工程师学习的WEB教程 All in Java 1、后端 ① Spring全家桶及微服务框架 ② 高性能数据库和消息组件 ③ Web攻击防护安全控制手段 ④ 其他第三方SDK生态环境 ...... 2、前端 ① 视图三大件&…

从0到1手把手撸码搭建后台管理系统

从0到1手把手撸码搭建后台管理系统 第一章:系统介绍开发目的与过程 要使用 Vue3 搭建后台&#xff0c;你可以按照以下步骤进行&#xff1a; 安装 Vue3&#xff1a;使用包管理工具&#xff08;如 npm 或 yarn&#xff09;安装 Vue3。选择构建工具&#xff1a;选择一个适合的构…

选择排序及其优化

目录 思想&#xff1a; 代码&#xff1a; 代码优化&#xff1a; 需要注意的特殊情况&#xff1a; 可能出现的所有特殊情况&#xff1a; 优化完成代码&#xff1a; 思想&#xff1a; 每一次遍历数组&#xff0c;选择出最大或最小的数&#xff0c;将其与数组末尾或首位进行…

springboot下

springboot 常用注解介绍 按需开启自动配置项特征介绍 自动配置原理 静态资源配置原理解析 rest风格请求映射 自定义入参的converter实现 springbootApplication启动流程 启动类 一些操作的赋值 启动器类型赋值 用加载器加载接口的实现类 刷新上下文

npm镜像源证书过期问题解决

title: npm镜像源证书过期 search: 2024-02-29 文章目录 Failed to check for updates 问题ERR_PNPM_NO_PKG_MANIFESTnpm缓存清除指令权限不足导致删除不了解决方案npm创建基础配资文件 Failed to check for updates 问题 错误描述如上 检查完 node,vue,npm 的版本后都没啥问…

css3之3D转换transform

css3之3D转换 一.特点二.坐标系三.3D移动&#xff08;translate3d)1.概念2.透视&#xff08;perpective)(近大远小&#xff09;&#xff08;写在父盒子上&#xff09; 四.3D旋转&#xff08;rotate3d)1.概念2.左手准则3.呈现&#xff08;transfrom-style)&#xff08;写父级盒子…