String类——Java中常见的类(模拟登录案例练习)

news2024/12/23 16:55:13

目录

String类的概述及构造方法(String类是Java中最常见的类)

String的特点

 String类的判断功能

 模拟登录案例

​ String类的获取功能

两个小练习

String类的转换功能和String类的其他功能

string类练习

String类的概述及构造方法(String类是Java中最常见的类)

  • String类概述

        –字符串是由多个字符组成的一串数据

        –字符串可以看成是字符数组

  • 构造方法

        –public String(String original)

        –public String(char[] value)

        –public String(char[] value,int offset,int count)

        –直接赋值也可以是一个对象

4种字符方式赋值如下:

package com.demo02;
/*
 * String:字符串类
 * 		由多个字符组成的一串数据
 * 		字符串本身就是一个字符数组
 * 
 *构造方法:
 * 		String(String original):把字符串数据封装成字符串对象
 * 		String(char[] value):把字符数组的数据封装成字符串对象
 * 		String(char[] value, int index, int count):把字符数组中的一部分数据封装成字符串对象
 * 
 * 注意:字符串是一种比较特殊的引用数据类型,直接输出字符串对象输出的是该对象中的数据
 */
public class StringDemo {
	public static void main(String[] args) {
		//方式1
		//String(String original):把字符串数据封装成字符串对象
		String s1 = new String("hello");
		System.out.println("s1:"+s1);
		System.out.println("---------");
		
		//方式2
		//String(char[] value):把字符数组的数据封装成字符串对象
		char[] chs = {'h','e','l','l','o'};
		String s2 = new String(chs);
		System.out.println("s2:"+s2);
		System.out.println("---------");
		
		//方式3
		//String(char[] value, int index, int count):把字符数组中的一部分数据封装成字符串对象
		//String s3 = new String(chs,0,chs.length);
		//char[] chs = {'h','e','l','l','o'};
		String s3 = new String(chs,0,5);//从哪个位置开始,多长
		System.out.println("s3:"+s3);
		System.out.println("---------");
		
		//方式4,比较常用的
		String s4 = "hello";
		System.out.println("s4:"+s4);
	}
}

String的特点

  • 通过构造方法创建字符串对象

        –String s = new String(“hello”);

  • 直接赋值创建字符串对象

        –String s = “hello”;区别是什么?

通过构造方法创建的字符串是在堆内存,直接复制方式创建对象的方法是在常量池。

基本数据类型:比较的是基本数据类型的值是否相同。

引用数据类型:比较的是引用数据类型的地址是否相同。

package com.demo02;
public class StringDemo2 {
	public static void main(String[] args) {
		String s1 = new String("hello");
		String s2 = "hello";
		
		System.out.println("s1:"+s1);
		System.out.println("s2:"+s2);
		
		System.out.println("s1==s2:"+(s1==s2)); //false
		
		String s3 = "hello";
		System.out.println("s1==s3:"+(s1==s3)); //false  放回的地址是不是相等
		System.out.println("s2==s3:"+(s2==s3)); //true
		System.out.println(s1.equals(s2));// 返回的值是不是相等
	}
}

 String类的判断功能

  1. boolean equals(Object obj)——比较两个字符串的值是否相等
  2. boolean equalsIgnoreCase(String str)——不管大小写,都会转化成一样的去做比较
  3. boolean startsWith(String str)——从哪个字符串开始
  4. boolean endsWith(String str)——从哪个字符串结束

其中API有关equals

package com.demo03;

public class StringDemo {
	public static void main(String[] args) {
		//创建字符串对象
		String s1 = "hello";
		String s2 = "hello";
		String s3 = "Hello";
		
		//boolean equals(Object obj):比较字符串的内容是否相同
		System.out.println(s1.equals(s2));
		System.out.println(s1.equals(s3));
		System.out.println("-----------");
		
		//boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写
		System.out.println(s1.equalsIgnoreCase(s2));
		System.out.println(s1.equalsIgnoreCase(s3));
		System.out.println("-----------");
		
		//boolean startsWith(String str):判断字符串对象是否以指定的str开头
		System.out.println(s1.startsWith("he"));
		System.out.println(s1.startsWith("ll"));
		System.out.println("-----------");
		
		//boolean endsWith(String str):判断字符串对象是否以指定的str结尾
		System.out.println(s1.endsWith("ll"));
	}
}

 模拟登录案例

package com.demo03;

import java.util.Scanner;

/*
 * 给三次机会,并提示还有几次
 * 
 * 分析:
 * 		A:定义两个字符串对象,用于存储已经存在的用户名和密码
 * 		B:键盘录入用户名和密码
 * 		C:键盘录入用户名和密码和已经存在的用户名和密码做比较
 * 			如果内容相同,表示登录成功
 * 			如果内容不同,登录失败,并提示还有几次机会
 */
public class StringTest {
	public static void main(String[] args) {
		//定义两个字符串对象,用于存储已经存在的用户名和密码
		String username = "admin";
		String password = "admin";
		
		//给三次机会,用for循环
		for(int x=0; x<3; x++) {
			//键盘录入用户名和密码
			Scanner sc = new Scanner(System.in);
			System.out.println("请输入用户名:");
			String name = sc.nextLine();
			System.out.println("请输入密码");
			String pwd = sc.nextLine();
			
	
			if(username.equals(name) && password.equals(pwd)) {
				System.out.println("登录成功");
				break;
			}else {
				if((2-x) ==0) {
					System.out.println("用户名和密码被锁定,请与管理员联系");
				}else {
					System.out.println("登录失败,你还有"+(2-x)+"次机会"); //2,1,0
				}
			}
		}
	}
}

 String类的获取功能

  1. int length()  —— 字符串长度,其实也就是字符个数
  2. char charAt(int index) —— 获取指定索引处的字符
  3. int indexOf(String str) —— 获取str的字符串对象中第一次出现的索引
  4. String substring(int start)——从start开始截取字符串
  5. String substring(int start,int end)——从start开始,到end结束截取字符串,包括start,不包括end
package com.demo04;

public class StringDemo {
	public static void main(String[] args) {
		//创建字符串对象
		String s = "helloworld";
		
		//int length():获取字符串的长度,也就是字符个数
		System.out.println(s.length());
		System.out.println("--------");
			
			//char charAt(int index):获取指定索引的字符
		System.out.println(s.charAt(0));
		System.out.println(s.charAt(1));
		System.out.println("--------");
		
		//int indexOf(String str):获取str的字符串对象中第一次出现的索引
		System.out.println(s.indexOf("l"));
		System.out.println(s.indexOf("owo"));
		System.out.println(s.indexOf("ak"));
		System.out.println("--------");
		
		//String substring(int start):从start开始截取字符串
		System.out.println(s.substring(0));
		System.out.println(s.substring(5));
		System.out.println("--------");
		
		//String substring(int start,int end):从start开始,到end结束截取字符串,包括start,不包括end
		System.out.println(s.substring(0, s.length()));
		System.out.println(s.substring(3,8));
	}
}

两个小练习:

练习1:遍历字符串

练习2:统计一个字符中大写字符。小写字符,数字字符出现的次数,不考虑其他字符

练习1:遍历字符串

package com.demo04;
/*
 * 遍历字符串(获取字符串中的每一个字符串)
 */
public class StringTest {
	public static void main(String[] args) {
		//创建一个字符串对象
		String s = "abcde";
		
		//原始做法
		System.out.println(s.charAt(0));
		System.out.println(s.charAt(1));
		System.out.println(s.charAt(2));
		System.out.println(s.charAt(3));
		System.out.println(s.charAt(4));
		System.out.println("---------");
		
		//for循环好近
		for(int x=0; x<5; x++) {
			System.out.println(s.charAt(x));
		}
		System.out.println("---------");
		
		//利用s.length()获取字符串长度
		for(int x=0; x<s.length(); x++) {
			System.out.println(s.charAt(x));
		}
	}
}

练习2:统计一个字符中大写字符。小写字符,数字字符出现的次数,不考虑其他字符

package com.demo04;

import java.util.Scanner;

/*
 * 练习2:统计一个字符中大写字符。小写字符,数字字符出现的次数,不考虑其他字符
 * 
 * 分析
 * 		A:键盘录入一个字符串数据
 * 		B:定义三个统计变量,初始值都是0
 * 		C:遍历每一个字符串,得到每一个字符
 * 		D:拿字符进行判断
 * 			加入ch是一个字符
 * 			大写:ch>='A' && ch<='Z'
 * 			小写:ch>='a' && ch<='z'
 * 			数字ch>='0' && ch<='9'
 * 		E:输出结果
 */
public class StringTest2 {
	public static void main(String[] args) {
		//创建一个对象
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入字符");
		// 接收数据
		String s = sc.nextLine();
		
		//定义统计字符
		int bigCount = 0;
		int smallCount = 0;
		int numberCount = 0;
		
		//遍历字符,得到每一个字符
		for(int x=0; x<s.length(); x++) {
			char ch = s.charAt(x);
			//字符判断
			if(ch>='A' && ch<='Z') {
				bigCount++;
			}else if(ch>='a' && ch<='z') {
				smallCount++;
			}else if(ch>='0' && ch<='9') {
				numberCount++;
			}else {
				System.out.println("该字符"+ch+"非法");
			}
		}
		
		//输出结果
		System.out.println("大写字符"+bigCount+"个");
		System.out.println("小写字符"+smallCount+"个");
		System.out.println("数字字符"+numberCount+"个");
	}
}

String类的转换功能String类的其他功能

  1. char[] toCharArray()——把字符串转换为字符数组
  2. String toLowerCase()——把字符串转换为小写字符串
  3. String toUpperCase()——把字符串转换为大写字符串
package com.demo05;
/*
 * 
 * 字符串遍历
 */
public class StringDemo {
	public static void main(String[] args) {
		//创建字符串
		String s = "abcde";
		
		//char[] toCharArray():把字符串转化成字符数组
		char[] chs = s.toCharArray();
		for(int x=0; x<chs.length; x++) {
			System.out.println(chs[x]);
		}
		System.out.println("-----------");
		
		//String toLowerCase():把字符串转换成小写字符串
		System.out.println("HelloWorld".toLowerCase());
		//String toUpperCase():把字符串转换成大写字符串
		System.out.println("HelloWorld".toUpperCase());
	}
}

 其他功能:

        去除字符串两端空格 

        –String trim()

        按照指定符号分割字符串 

        –String[] split(String str)

package com.demo06;

public class StringDemo {
	public static void main(String[] args) {
		//创建字符串对象
		String s1 = "helloworld";
		String s2 = "  helloworld  ";
		String s3 = "  hello  world  ";
		System.out.println("---"+s1+"---");
		System.out.println("---"+s1.trim()+"---");
		System.out.println("---"+s2+"---");
		System.out.println("---"+s2.trim()+"---");
		System.out.println("---"+s3+"---");
		System.out.println("---"+s3.trim()+"---");
		System.out.println("-------------------");
		
		//String[] split(String str)
		//创建字符创对象
		String s4 = "aa,bb,cc";
		String[] strArray = s4.split(",");
		for(int x=0; x<strArray.length; x++) {
			System.out.println(strArray[x]);
		}
	}
}

string类练习

练习1:把数组中的数据按照指定格拼接成一个字符串举例:int[] arr = {1,2,3}; 

输出结果:[1, 2, 3]

package com.demo07;

public class StringTest {
	public static void main(String[] args) {
		//定义一个int类型的数组
		int[] arr = {1,2,3};
		
		
		//定义方法
		String s = arrayToString(arr);
		
		//输出结果
		System.out.println("s:"+s);
	}
	
	/*
	 * 两个明确
	 * 		返回值类型:String
	 * 		参数列表:int[] arr
	 */
	public static String arrayToString(int[] arr) {
		String s = "";
		
		//[1, 2, 3]
		s += "[";
		for(int x=0; x<arr.length; x++) {
			if(x==arr.length-1) {
				s += arr[x];
			}else {
				s += arr[x];
				s += ", ";
			}
		}
		s += "]";
		
		return s;
	}
}

 

练习2:字符串反转举例:键盘录入abc”  输出结果:cba

package com.demo07;

import java.util.Scanner;


public class StringTest2 {
	public static void main(String[] args) {
		//创建一个对象
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入字符");
		String s = sc.nextLine();

		//创建方法
		String result = reverse(s);
		
		//输出结果
		System.out.println("result:"+result);
	}
	
	

	public static String reverse(String s) {
		// 将字符串转换成字符数组
		char[] chs = s.toCharArray();
		
		for(int start=0,end=chs.length-1; start<=end; start++,end--) {
			char temp = chs[start];
			chs[start] = chs[end];
			chs[end] = temp;
		}
		
		//把字符串数组封装成字符串对象
		String ss = new String(chs);
		return ss;
	}
}

 

 

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

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

相关文章

35/365 java 反射 Reflection Class类

1.动态语言 静态语言 动态语言&#xff1a; 运行时可以改变自身结构的语言eg: JavaScript, C#, PHP, Python 静态语言&#xff1a; 运行时结构不可变的语言eg: Java, C, CJava 不是动态语言&#xff0c;但通过反射机制获得了类似动态语言的特性&#xff0c;具有了一定的动态…

软件测试前沿技术:从中国新车评估规程谈谈自动化驾驶测试

背景C-NCAP全称China NewCarAssessmentProgramme&#xff0c;中国新车评估规程&#xff0c;是由E-NCAP发展而来&#xff0c;两者测试项目多数一致。E-NCAP全称是European NewCarAssessmentProgramme&#xff0c;译为欧洲新车评估规程&#xff0c;成立于1997年&#xff0c;是一个…

基于MirrorMaker与火山引擎的Kafka数据同步

Kafka MirrorMaker是Kafka官网提供的跨数据中心流数据同步方案&#xff0c;其实现原理是通过从Source集群消费消息&#xff0c;然后将消息生产到Target集群从而完成数据迁移操作。用户只需要通过简单的consumer配置和producer配置&#xff0c;启动MirrorMaker&#xff0c;即可实…

NCP1654BD65R2G高性能软开关功率因数校正电路芯片

NCP1654BD65R2G是一款用于连续导通模式 (CCM) 功率因数校正 (PFC) 步升预转换器的控制器。它在固定频率模式下控制电源开关导通时间 (PWM)&#xff0c;取决于瞬时线圈电流。采用SOIC-8封装&#xff0c;最大程度减少了外部部件数量&#xff0c;并极大简化了 PFC 实施。它还集成了…

灰色预测模型一文详解+Python实例代码

目录 前言 一、模型理论 特点 二、模型场景 1.预测种类 2.适用条件 三、建模流程 1.级比校验 2.数据累加和微分方程构造 3.系数求解 4.残差检验与级比偏差检验 四、Python实例实现 总结 前言 博主参与过大大小小十次数学建模比赛&#xff0c;也获得了不少建模奖项…

19 | 三方协议怎么签?

前言 前言&#xff1a;简介三方协议签约的相关内容。 文章目录前言一. 什么是就业协议书二. 签约流程1. 网签流程&#xff08;线上签约&#xff09;三. 参考链接一. 什么是就业协议书 就业协议书俗称三方协议&#xff0c;是《全国普通高等学校毕业生就业协议书》的简称。 它是…

b站黑马Vue2后台管理项目笔记——(2)主页布局(整体,Header,左侧菜单布局)

说明&#xff1a; 此项目中使用的是本地SQL数据库&#xff0c;Vue2。 其他功能请见本人后续的其他相关文章。 本文内容实现的最终效果如下图&#xff1a; e.g.点击二级菜单用户列表&#xff0c;就会跳转到用户列表对应的index的地址&#xff08;用户列表的indexpath是users&…

2023年山东最新道路运输安全员考试真题题库及答案

百分百题库提供道路运输安全员考试试题、道路运输安全员考试预测题、道路运输安全员考试真题、道路运输安全员证考试题库等,提供在线做题刷题&#xff0c;在线模拟考试&#xff0c;助你考试轻松过关。 题干&#xff1a;客运驾驶员从业行为定期考核结果应与企业安全生产奖惩制度…

Gradle 编译Server returned HTTP response code: 401 for URL

Gradle编译项目&#xff0c;Error:Server returned HTTP response code: 401 for URL: http://xxxxxxxxxx 解决方案 打开gradle-wrapper.properties文件 方法一&#xff1a;使用http协议&#xff1a;distributionUrlhttp://repo.xiaoman.cc/repository/gradle/gradle-6.8.2-b…

MCM箱模型实践技术应用与O3形成途径、生成潜势、敏感性分析

查看原文>>>https://mp.weixin.qq.com/s?__bizMzAxNzcxMzc5MQ&mid2247578057&idx4&sn9253a074df9937db3d258df14dd563ed&chksm9be2aed9ac9527cfdf270275d499452afded7a165944fdbbe345a4cb53fcd53548969d39c0c2&token850102049&langzh_CN#rd目…

剑指 Offer II 003 前 n 个数字二进制中 1 的个数

给定一个非负整数 n &#xff0c;请计算 0 到 n 之间的每个数字的二进制表示中 1 的个数&#xff0c;并输出一个数组。 示例 1: 输入: n 2 输出: [0,1,1] 解释: 0 --> 0 1 --> 1 2 --> 10 示例 2: 输入: n 5 输出: [0,1,1,2,1,2] 解释: 0 --> 0 1 --> 1 2 …

Appium基础 — 获取toast信息

1、toast介绍Android中的toast是一种简易的消息提示框&#xff0c;toast提示框不能被用户点击&#xff0c;会根据所设置的显示时间自动消失。toas要appium1.6.3以上版本才支持&#xff0c;appium1.4的版本就别浪费时间了。再来看下toast长什么样&#xff0c;如下图&#xff1a;…

快速幂的几种实现方式

目录快速幂算法快速幂原理代码实现常规计算次幂的方法快速幂(一般)递归求快速幂位运算求快速幂快速幂算法 快速幂 快速幂还是很常用的,例如codeforce上的这道题目: 快速幂就是快速计算底数的n次幂。其时间复杂度为O(log₂N)O(log_₂N)O(log₂​N),与朴素的O(N)相比效率有了极…

SSM配置(备忘)

SSMSSM需要配置的文件配置applicationContext.xml配置database.properties配置mappers/ExamDao.xml在java目录下创建controller、dao、pojo、service目录控制类接口类(dao)实体类&#xff08;pojo&#xff09;服务层serviceservice接口类服务层实现类SSM SSM包含框架 spring s…

Linux(centos7)基本操作---用户权限

用户权限基本权限&#xff08;UGO&#xff09;设置权限设置属主&#xff0c;属组基本权限&#xff08;ACL&#xff09;特殊权限基本权限&#xff08;UGO&#xff09; 设置权限 权限的对象分为个人&#xff08;u&#xff09;&#xff0c;组&#xff08;g&#xff09;&#xff…

无货源模式,跨境电商时代的风向标

众所周知&#xff0c;说到电商&#xff0c;我们首先就会想到淘宝、天猫、京东等平台&#xff0c;这些平台近年来发展迅猛&#xff0c;红海一片&#xff0c;可以说已经趋向于饱和状态了。由于国内电商平台严重的同质化竞争&#xff0c;越来越多的卖家开始转战跨境电商。为什么加…

Canary保护机制及绕过

Canary基本介绍 在基本的栈溢出中&#xff0c;我们可以通过没有限制输入长度或限制不严格的函数等向栈中写入我们构造的数据&#xff0c;可写入的数据包括但不限于&#xff1a; 一段可执行的代码&#xff08;关闭NX防护的前提下&#xff09; 一段特意构造的返回地址等 … …

基于java SSM校园兼职平台系统设计和实现

基于java SSM校园兼职平台系统设计和实现 博主介绍&#xff1a;5年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源码联系方式 …

CI/CD | 大型企业与开发团队如何进行持续集成与持续发布

Jenkins是当今最流行的持续集成工具之一&#xff0c; 企业选择Jenkins&#xff0c;可以从它的灵活性和自动化能力中获益。但除此之外的其他需求呢&#xff1f;企业规模在不断增大&#xff0c;他们如何在不增加管理负担的情况下&#xff0c;让CI扩展到整个组织&#xff0c;并满足…

rabbit是否支持批量发送?

最近和rabbit一直在打交道, 也是有个问题 Rabbit是否支持批量发送消息 该问题笔者翻阅官方文档与三方博客也没有找到答案&#xff0c;后也是自己去翻阅源码后才大概找到一个不敢确定的答案: BatchingRabbitTemplate 批量rabbit模板 该模板在RabbitTemplate模板的基础上进行了…