JAVA基础 —— 字符串

目录

一、 字符串在开发中的应用场景

 二、 String

1. String概述

2. 创建String对象的两种方式 

1. 直接赋值 

2. new关键字

3. 练习

 三、Java在String中常用方法

1.  == 号比较变量地址

2. 字符串比较内容

3.  字符串遍历内容

4. 字符串其他内容

四、练习

1. 用户登录

 2. 统计字符次数

 3.  金额转换

一、 字符串在开发中的应用场景

字符串或串(String)是由数字、字母、下划线组成的一串字符。它是编程语言中表示文本的数据类型。在程序设计中,字符串为符号或数值的一个连续序列。字符串操作就是以串的整体作为操作对象,如:在串中查找某个子串、求取一个子串、在串的某个位置上插入一个子串以及删除一个子串等。

比较功能:登录界面的用户名和密码就是字符串;输入的用户名和密码和正确的用户名和密码进行比较 。
替换功能: 对于聊天框敏感词的替换。
转换功能: 转账金额输入后数据自动转换成人命币大写。

 二、 String

1. String概述

java.lang.String类代表字符串,java程序中的所有字符串文字(例如"abc")都为此类对象。

注意:字符串的内容不会发生改变,它的对象在创建后不能被更改。

String name = "小明";
String schoolName = "家里蹲";
System.out.println(name + schoolName);

字符串拼接产生一个新的字符串。

这里的拼接最终会有三个字符串

2. 创建String对象的两种方式 

1. 直接赋值 

public class stringDemo{
   public static void main(String[] args){
      String s1 = "abc";
      String s2 = "abc";
   }
}

 Java内存模型:


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

不存在: 创建新的 ;   存在: 复用

2. new关键字

结合不同的构造方法:

构造方法说明
public String ( )创建空白字符串,不包含任何内容
public String ( String original)根据传入的字符串,创建字符串对象
public String ( char[ ]  chs)根据字符数组,创建字符串对象
public String ( byte[ ] chs)根据字节数组,创建字符串对象
public class newDemo{
   public static void main(String[] args){
      char[] arr = {'a','b','c'};
      String s1 = new String(chs);
      String s2 = new String(chs);
   }
}

 Java内存模型:

3. 练习

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','d'} -->{'q','c','d'} -->qcd
		char[] chs = {'a','b','c','d'};
		String s4 = new String(chs);
		System.out.println(s4);
		
		//5.传递一个字节数组,根据字节数组的内容再创建一个新的字符串对象
		//应用场景:在网网络中传输的数据其实就是字节信息
		//我们可以把字节信息进行转换成字符串
		byte[] bytes = {97,98,99,100};
		String s5 = new String(bytes);
		System.out.println(s5);
	}

运算结果:

 三、Java在String中常用方法

1.  == 号比较变量地址

String s1 = "abc";
String s2 = "abc";
System.out.println(s1 == s2); //true
String s1 = "aaa";
String s2 = "bbb";
System.out.println(s1 == s2); //false
String s1 = new String("abc")
String s2 = "abc";
System.out.println(s1 == s2); //????

根据上面结果, 此时,我们要了解 == 号比较的到底是什么?

基本数据类型引用数据类型
具体的数据值变量记录的地址值

所以,

String s1 = new String("abc") ;   记录的是堆里面的地址值 
String s2 = "abc";  记录的是串池中的地址值
System.out.println(s1 == s2);  //false


2. 字符串比较内容

boolean equals方法(要比较的字符串)
  • 完全一样的结果才是true,否则为false。
  • 二者区别在与是否忽略大小写的比较。
boolean equalsgnoreCase(要比较的字符串)
public static void main(String[] args) {
	//1.创建两个字符串对象
	String s1 = new String("abc");
	String s2 ="abc";
	String s3 = "Abc";
	
	//2. == 比较
	System.out.println(s1 == s2); //false
	
	//3.比较字符串对象中的内容
	 boolean result1 = s1.equals(s2); 
	 System.out.println(result1); // true
	 boolean result2 = s1.equals(s3);
	 System.out.println(result2);  //false
}

3.  字符串遍历内容

public char charAt( int index )根据索引返回字符
public int length ( )返回字符串的长度
数组的长度:数组名.length
字符串的长度:字符串对象.length()

4. 字符串其他内容

String substring (int  beginindex , int endindex )         截取注意:包头不包尾,包左不包右;只有返回值才是截取的小串
String subString( int beginindex)      截取到末尾
String replace(旧值 , 新值)          替换

注意:只有返回值才是替换之后的结果

四、练习

1. 用户登录

需求:已知正确的用户名和密码,请用程序实现模拟用户登录。
           总共给三次机会,登录之后,给出相应的提示。

public static void main(String[] args) {
		// 1.定义两个变量记录正确的用户名和密码
		String rightUserName = "zhangsan";
		String rightPassword = "123456";

		// 2.键盘录入用户名和密码
		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();

			// 3.比较
		if ((userName.equals(rightUserName)) && (password.equals(rightPassword))) {
				System.out.println("用户登录成功!");
				break;
			} else {
				if (i == 2) {
					// 最后一次也输入错误
					System.out.println("账户" + userName 
                             + "被锁定!您无法再进行登录!");
				} else {
					System.out.println("用户名或者密码输入错误!您还有" 
                             + (2 - i) + "次机会");
				}

			}
		}
	}

运行结果:

 2. 统计字符次数

需求:键盘录入一个字符串,统计该字符串中大写字母字符,小写字母字符,数字字符出现的次数(不考虑其他字符)

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型
				smallCount++;
			} else if (c >= 'A' && c <= 'Z') {
				bigCount++;
			} else if (c >= '0' && c <= '9') {
				numberCount++;
			}
		}
		// 3.输入打印
		System.out.println("大写字母有:" + bigCount + "个");
		System.out.println("小写字母有:" + smallCount + "个");
		System.out.println("数字字母有:" + numberCount + "个");
	}

运行结果:

 3.  金额转换

 编程思路: 逆推找思路 正推找过程

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("金额无效");
			}
		}

		String moneyStr = "";
		// 2.得到money中每一个数组
		while (true) { // 2135
			// 从右往左遍历数据 右边为个位
			int ge = money % 10;
			String capitialNumber = getCapitalNumber(ge);
			// 转换之后的大写拼接成到字符串
			moneyStr = capitialNumber + moneyStr;
			// "" + "伍" + "叁" + "壹" + "贰"
			// 第一次循环: "伍" + "" = "伍"
			// 第二次循环:"叁" + "伍" = "叁伍"

			// 去掉刚获取的数据
			money = money / 10;
			// 如果数字上每一位全部获取到,那么money记录的为0,此时循环结束
			if (money == 0) {
				break;
			}
		}
		// 3. 在前面补0 补齐7位
		int count = 7 - moneyStr.length();
		for (int i = 0; i < count; i++) {
			moneyStr = "零" + moneyStr;
		}
		// System.out.println(moneyStr);

		// 4. 插入单位
		// 定义数组表示单位
		String[] arr = { "佰", "拾", "万", "任", "佰", "拾", "元" };
		// 遍历moneyStr ,依次得到
		// 然后把arr的单位插入进去

		String result = "";
		for (int i = 0; i < moneyStr.length(); i++) {
			char c = moneyStr.charAt(i);
			result = result + c + arr[i];
		}

		// 5. 打印最终结果
		System.out.println(result);
	}

	// 定义一个方法把数字变成大写的中文
	public static String getCapitalNumber(int number) {
		// 定义数组,让数字和大写中文产生对应关系
		String[] arr = { "零", "壹", "贰", "参", "肆", "伍", "陆”,“柒", "捌", "玫" };
		// 返回结果
		return arr[number];

	}

运行结果:

  • 5
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hgngy.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值