Java入门基础学习笔记44——String

为什么要学习String的处理呢?

开发中,对字符串的处理是非常常见的。

String是什么?可以做什么?

java.lang.String 代表字符串。可以用来创建对象封装字符串数据,并对其进行处理。

1、创建对象

2、封装字符串数据

3、调用String的方法

String创建对象封装字符串数据的方法:

方式一:

Java程序中的所有字符串文字(例如:“abc”)都为此类对象。

String name = "小黑";
String SchoolName = "黑马程序员";

方式二:

调用String类的构造器初始化字符串对象。

new String()创建字符串对象,并调用构造器初始化字符串。

package cn.ensource.string;public class StringDemo {public static void main(String[] args) {String name = "itheima";System.out.println(name);String rs1 = new String();System.out.println(rs1);String rs2 = new String("itheima");System.out.println(rs2);char[] chars = {'a', 'b', 'c'};String rs3 = new String(chars);System.out.println(rs3);byte[] bytes = {100, 101, 102};String rs4 = new String(bytes);System.out.println(rs4);}
}

运行结果:

通过构造函数创建

通过new创建的字符串对象,每一次new都会申请一个空间,虽然内容相同,但是地址值不同。

直接赋值方式创建:

以“”双引号给出的字符串,只要字符串序列相同顺序和大小相同,无论程序代码中出现几次,JVM都只会建立一个String对象,并在字符串池中维护。

String类的常用方法:

String提供的操作字符串数据的常用方法:

为什么是快速熟悉这些方法呢?

API是解决需求的,快速地认识他们,实实在在地解决业务需求。

package cn.ensource.string;public class StringDemo2 {public static void main(String[] args) {// 目标:快速熟悉String提供的处理字符串的方法String s = "黑马Java";// 获取字符串的长度System.out.println(s.length());// 提取字符串中某个索引位置处的字符char c = s.charAt(1);System.out.println(c);// 字符串的遍历for (int i = 0; i < s.length(); i++) {char ch = s.charAt(i);System.out.print(ch);}System.out.println("--------");// 把字符串转成字符数组,然后再进行遍历char[] chars = s.toCharArray();for (int i = 0; i < chars.length; i++) {System.out.print(chars[i]);}System.out.println("--------");// 判断字符串内容,内容一样,就返回trueString s1 = new String("黑马");String s2 = new String("黑马");boolean rs = s.equals(s2);System.out.println(rs);System.out.println("--------");// 忽略大小写比较字符串String c1 = "34Aefg";String c2 = "24aefg";System.out.println(c1.equals(c2));System.out.println(c1.equalsIgnoreCase(c2));System.out.println("--------");// 截取字符串内容String s3 = "Java是最好的编程语言之一";System.out.println(s3.substring(0, 8));System.out.println("--------");// 截取字符串内容,从当前位置到字符串末尾System.out.println(s3.substring(8));System.out.println("--------");// 把字符串的某个内容,替换成新内容String s3c = s3.replace("Java", "C++");System.out.println(s3c);System.out.println("--------");// 判断字符串中是否包含某个关键字String info = "Java是最好的编程语言之一";boolean rs5 = info.contains("Java");System.out.println(rs5);// startwithSystem.out.println("--------");String info2 = "Java是最好的编程语言之一";boolean rs6 = info2.startsWith("Java");System.out.println(rs6);System.out.println("--------");// 分割字符串String str5 = "张无忌,周芷若,殷素素,赵敏";String[] names = str5.split(",");for(int i = 0; i < names.length; i++) {System.out.println(names[i]);}}
}

split这个成员方法,之前在python中也遇到。

如果方法不再记得了,都是可以到API文档中查询的。

另外:

==:

比较基本数据类型:比较具体的值。

比较引用数据类型:比较的是对象地址值。

package com.company;public class Main {public static void main(String[] args) {char[] chs = {'a', 'b', 'c'};String s1 = new String(chs);String s2 = new String(chs);String s3 = "abc";String s4 = "abc";System.out.println(s1 == s2);System.out.println(s1 == s4);System.out.println(s3 == s4);System.out.println("-------------");System.out.println(s1.equals(s2));System.out.println(s1.equals(s3));System.out.println(s3.equals(s4));}
}

运行结果:

false
false
true
-------------
true
true
true

用户登录案例:

import java.util.Scanner;public class Main {public static void main(String[] args) {String username = "changchunhua";String password = "chang@123";for (int i=0; i<3; i++) {Scanner sc =  new Scanner(System.in);System.out.println("Please input username: ");String name = sc.nextLine();System.out.println("Please input password: ");String pwd = sc.nextLine();if (name.equals(username) && pwd.equals(password)) {System.out.println("Sign in susccessfully!");break;} else {if (2 - i == 0) {System.out.println("Your account is locked!");} else {System.out.println("Your has 2 - i times to sign in.");}}}}
}

运行结果: 

Please input username:
chang
Please input password:
chang@123
Your has 2 - i times to sign in.
Please input username:
changchun
Please input password:
chang@123
Your has 2 - i times to sign in.
Please input username:
changchunhua
Please input password:
chang@123
Sign in susccessfully!

字符串反转:

package com.company;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("Please input a string: ");String line = sc.nextLine();String s = reverse(line);System.out.println("s: " + s);}public static String reverse(String s) {String ss = "";for(int i=s.length()-1; i>=0; i--) {ss += s.charAt(i);}return ss;}
}

运行结果:

Please input a string:
changchunhua
s: auhnuhcgnahc

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

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

相关文章

Linux安装zsh并配置oh-my-zsh

配置oh-my-zsh 查看当前shell安装zsh切换到zsh配置ohmysh 查看当前shell cat /etc/shells# /etc/shells: valid login shells /bin/sh /bin/bash /usr/bin/bash /bin/rbash /usr/bin/rbash /bin/dash /usr/bin/dash安装zsh sudo apt install zsh# /etc/shells: valid login s…

blender 烘焙渲染图片,已经导出fbx,导出贴图。插件生成图片

1.新建一个模型。选择资产浏览器的材质&#xff0c;并拖动到模型身上&#xff0c;如下图。资产浏览器的材质可以网上找。 2.打开着色器面板。正下方着色器窗口中&#xff0c;点击空白取消选择&#xff0c;然后右击-添加-着色器-原理化BSDF&#xff0c;右击-添加-纹理-图像纹理。…

报错 Attempt to assign to const or readonly variable 前端 const

Attempt to assign to const or readonly variable 遇到这个错是因为给const声明的变量进行第2次赋值。 因为const声明的变量只能进行一次赋值&#xff0c;即常量。 ES6标准引入了新的关键字 const 来定义常量&#xff0c;const 与 let 都具有块级作用域。 const 定义的是常量…

宝塔Linux下安装EMQX服务并设置匿名访问

简述 之前有在Windows和Linux下搭建过EMQX服务并且使用方面都没问题,但那都是使用的用户和密码方式访问,且前提都是通过浏览器进入EMQX的配置页面设置的属性; 但这次使用的是腾讯云租用的宝塔Liniux,由于没有浏览器只能通过命令行方式修改EMQX配置以达到目的;由于事先没看…

【博主推荐】HTML5实现520表白、情人节表白模板源码

文章目录 1.设计来源1.1 表白首页1.2 甜蜜瞬间11.3 甜蜜瞬间21.4 甜蜜瞬间31.5 甜蜜瞬间41.6 甜蜜瞬间51.7 甜蜜瞬间61.8 永久珍藏 2.效果和源码2.1 页面动态效果2.2 页面源代码2.3 源码目录2.4 更多为爱表白源码 3.源码下载地址 作者&#xff1a;xcLeigh 文章地址&#xff1a;…

国内安装Axure RP Extension for Chrome插件

1、到项目的当前目录来 2、后缀改成.rar 3、解压成文件夹 4、拖入chrome中 我这里直接准备好了文件 链接&#xff1a;https://pan.baidu.com/s/1V98tx5LgXZRoKY7XjnIcrA 提取码&#xff1a;gh13

中国上市公司融资约束指数数据上市公司SA指数与WW指数(2000-2023年)

上市公司融资约束指数&#xff0c;是用来评估公司面临的融资限制程度的工具。SA指数由Hadlock和Pierce开发&#xff0c;基于公司规模和年龄计算&#xff0c;其中较小且较年轻的公司通常会有更高的指数值&#xff0c;表明其融资约束较大。另一方面&#xff0c;WW指数由Whited和W…

Win11彻底关闭“同意个人数据跨境传输”

Win11彻底关闭“同意个人数据跨境传输” 1 关闭对话框2. 修改Microsoft.CloudExperienceHost.winmd 1 关闭对话框 SHIFTF10WinEWinR输入taskmgr关闭Microsoft账户进程 2. 修改Microsoft.CloudExperienceHost.winmd 找到C:\Windows\SystemApps\Microsoft.Windows.CloudExperi…

【静态分析】在springboot使用太阿(Tai-e)03

参考&#xff1a;使用太阿&#xff08;Tai-e&#xff09;进行静态代码安全分析&#xff08;spring-boot篇三&#xff09; - 先知社区 1. JavaApi 提取 1.1 分析 预期是提取controller提供的对外API&#xff0c;例如下图中的/sqli/jdbc/vuln 先看一下如何用tai-e去获取router…

浅谈分布式系统

目录 一、单机架构二、分布式架构1、应用服务与数据库分离2、负载均衡3、数据库读写分离4、引入缓存5、数据库分库分表6、引入微服务 一、单机架构 单机架构&#xff0c;只有一台服务器&#xff0c;这个服务器负责所有工作。 绝大多数公司的产品&#xff0c;都是这种单机架构。…

[论文笔记]REACT: SYNERGIZING REASONING AND ACTING IN LANGUAGE MODELS

引言 今天带来一篇经典论文REACT: SYNERGIZING REASONING AND ACTING IN LANGUAGE MODELS的阅读笔记&#xff0c;论文中文意思是 在语言模型中协同推理和行动。 虽然大型语言模型(LLMs)在语言理解和互动决策任务中展现出强大的能力&#xff0c;但它们在推理(例如思维链提示)和…

Rust 中 Mutex 的用法

在 Rust 中&#xff0c;Mutex&#xff08;互斥锁&#xff09;是用于同步并发访问共享资源的机制。Rust 标准库中的 Mutex 结构体位于 std::sync::Mutex 中&#xff0c;它提供了线程安全的数据访问。Mutex 保证了在同一时间只有一个线程可以访问被锁定的数据。 以下是 Mutex 的…

画图工具之PlantUML插件使用

文章目录 1 PlantUML插件1.1 引言1.2 什么是PlantUML1.3 PlantUML插件1.3.1 IntelliJ IDEA中插件1.3.2 VS Code中插件1.3.3 使用例子 1.4 PlantUML时序图语法1.4.1 声明参与者1.4.2 消息传递1.4.2.1 同步消息1.4.2.2 异步消息1.4.2.3 返回消息1.4.2.4 自调用 1.4.3 生命线&…

比特米盒2代刷入ARMBIAN

概述 因为最近在整家庭NAS&#xff0c;类似魔百盒之类的机顶盒无法内置硬盘&#xff0c;所以将目光盯上了比特米盒、私家云以及和逸云&#xff0c;海鲜市场一番对比下来也就比特米盒&#xff08;CM2-B&#xff09;的性价比最高&#xff0c;而且还支持双盘位&#xff0c;所以采…

【大模型】fineturn Q-wen

github上下载qwen1_5源码 修改finetun.sh 然后在路径qwen1_5/examples/sft下修改finetun.sh, 内容如下 #!/bin/bash export CUDA_DEVICE_MAX_CONNECTIONS1 DIRpwd# Guide: # This script supports distributed training on multi-gpu workers (as well as single-worker trai…

批处理--将指定磁盘根目录所有隐藏的文件(包括文件夹)去除隐藏属性

如下是实现的脚本&#xff1a;-------------------------------------------------- :loopcd / set /p driverName"请输入驱动器盘符&#xff08;例如&#xff1a;C或c&#xff09;&#xff1a;"%driverName%: dir /AH %driverName%: pausefor /f "delims"…

Leetcode刷题2

文章目录 前言寻找两个正序数组的中位数1️⃣ 双指针快速排序2️⃣ 第k小数解法 Z 字形变换1️⃣ 个人解法2️⃣巧妙解法13️⃣巧妙解法2 字符串转换整数 (atoi)1️⃣ 常规方法2️⃣ 作弊方法&#x1f62b; 整数转罗马数字1️⃣ 常规方法&#xff1a;按照给定规则写出判断条件即…

前端面试题日常练-day32 【面试题】

题目 希望这些选择题能够帮助您进行前端面试的准备&#xff0c;答案在文末。 1. 在jQuery中&#xff0c;以下哪个选项用于获取元素的文本内容&#xff1f; a) text() b) html() c) val() d) attr() 2. jQuery中&#xff0c;以下哪个选项用于在元素上添加一个自定义数据属性…

感动心灵的声音——带情绪的AI配音技术在影视和广告领域的应用

近年来&#xff0c;随着人工智能技术的飞速发展&#xff0c;带情绪的AI配音技术作为其中一项重要应用&#xff0c;正逐渐在影视和广告行业展现其独特的魅力和应用价值。传统的配音工作不仅需要具备优秀的嗓音和表演能力&#xff0c;还要求配音演员能够准确捕捉并表达角色的情感…

WSL调用docker

WSL&#xff08;windows subsystem linux&#xff09;是window系统的原生linux子系统&#xff0c;用于代码开发很方便。 希望在wsl里面运行docker&#xff0c;首先要安装docker在WSL中使用&#xff0c;大部分人的第一想法肯定是用以下命令行安装&#xff08;个人不推荐&#x…