Java基础系列24-常用api之String类

x33g5p2x  于2021-12-18 转载在 其他  
字(5.4k)|赞(0)|评价(0)|浏览(417)

一.String类概述

String类概述:
通过JDK提供的API,查看String类的说明

  1. "abc"是String类的一个实例,或者成为String类的一个对象
  2. 字符串字面值"abc"也可以看成是一个字符串对象
  3. 字符串是常量,一旦被赋值,就不能被改变
  4. 字符串本质是一个字符数组

String类的构造方法:

  1. String(String original):把字符串数据封装成字符串对象
  2. String(char[] value):把字符数组的数据封装成字符串对象
  3. String(char[] value, int index, int count):把字符数组的一部分数据封装成字符串对象

String类 api文档:

二.String类案例

2.1 String类4种常用构造方法

String的构造方法:
  方式1. String(String original):把字符串数据封装成字符串对象
  方式2. String(char[] value):把字符数组的数据封装成字符串对象
  方式3. String(char[] value, int index, int count):把字符数组的一部分数据封装成字符串对象
  方式4. String():最常用的 API中表示(Java程序中所有字符串字面值 如“abc”都作为此类的实例实现)

public String toString():返回此对象本身(它已经是一个字符串!)。

代码:

package Java_study;

/**
 * 
 * @author  只是甲
 * @date    2021-06-30
 * @remark  String类4种常用构造方法
 *
 */
public class string1 {
	public static void main(String[] args) {
		//方式1. String(String original):把字符串数据封装成字符串对象
		String s1 = new String("hello1");
		/*如果打印的不是 包名+类名+@+地址 则表示String类重写了toString方法*/
		System.out.println(s1);//hello1
		System.out.println("------");
		
		//方式2. String(char[] value):把字符数组的数据封装成字符串对象
		char[] value2 = {'h','e','l','l','o','2'};
		String s2 = new String(value2);
		System.out.println(s2);//hello2
		System.out.println("------");
		
		 //方式3. String(char[] value, int index, int count):把字符数组的一部分数据封装成字符串对象
		char[] value3 = {'h','e','l','l','o','3','3','3'};
		String s3 = new String(value3, 0, value3.length - 2);
		System.out.println(s3);//hello3
		System.out.println("------");
		
		//方式4. String():最常用的
		String s4 = "hello4";
		System.out.println(s4);
		System.out.println("------");
	}

}

测试记录:

hello1
------
hello2
------
hello3
------
hello4
------

2.2 String类创建对象两种方式

String类创建对象的特点:
  A:通过构造方法创建对象
  B:通过直接赋值的方式创建对象

这两种方式的创建是有区别的:
  1.通过构造方法创建的字符串对象是在堆内存。
  2.通过直接赋值的方式创建的字符串对象是在方法区的常量池。

内存图:

代码:

package Java_study;

/**
 * 
 * @author  只是甲
 * @date    2021-06-30
 * @remark  String创建对象的两种方式
 *
 */
public class string2 {
	public static void main(String[] args) {
		String s1 = new String("hello");
		String s2 = new String("hello");
		
		String s3 = "hello";
		String s4 = "hello";
		
		System.out.println(s1 == s2);//false
		System.out.println(s1 == s3);//false
		System.out.println(s3 == s4);//true
	}

}

测试记录

false
false
true

2.3 String类练习之模拟用户登录

需求:
  模拟登录,给三次机会,并提示还有几次

分析:
  A:定义两个字符串对象,用于存储已经存在的用户名和密码
  B:键盘录入用户名和密码
  C:拿键盘录入的用户名和密码去跟已经存在的用户名和密码进行比较
    如果内容相同,就提示登录成功
    如果内容不同,就提示登录失败,并提示还有几次机会
    public boolean equals(Object anObject):比较字符串的内容,严格区分大小写(用户名和密码)
    public boolean equalsIgnoreCase(String anotherString):比较字符串的内容,不考虑大小写(验证码)

代码:

package Java_study;

import java.util.Scanner;

/**
 * 
 * @author  只是甲
 * @date    2021-06-30
 * @remark  String类练习之模拟用户登录
 *
 */
public class string3 {
	public static void main(String[] args) {
		//定义两个字符串对象,用于存储已经存在的用户名和密码
		String username = "admin";
		String password = "admin";
		
		//循环次数
		int count = 0;
		//键盘录入的用户名
		String scName;
		//键盘录入的密码
		String scPassword;
		//创建键盘录入对象
		Scanner sc = new Scanner(System.in);
		
		//模拟登陆,给三次机会
		while (count < 3) {
			System.out.println("请输入用户名:");
			scName = sc.nextLine();
			System.out.println("请输入密码");
			scPassword = sc.nextLine();
			
			//事件A: 用户名相等
			boolean a = scName.equals(username);
			//事件B:密码相等
			boolean b = scPassword.equals(password);
			//事件C: 错误次数小于3
			boolean c = count < 2;
			if (a && b) {
				System.out.println("登陆成功");
				break;
				//用户名或密码任意一个不低,且登录次数小于3,提示次数,并重新输入
			} else if (c) {
				System.out.println("登陆失败,你还有" + (2 - count) + "次机会");
				//用户名或密码任意一个不对,且登录次数大于3,锁定账号,并跳出循环
			} else {
				System.out.println("你的账号被锁定,请与管理员联系");
				break;
			}
			
			//每次循环次数加1
			count++;
			 
		}
	}

}

测试记录:

请输入用户名:
admin
请输入密码
abc
登陆失败,你还有2次机会
请输入用户名:

请输入密码

登陆失败,你还有1次机会
请输入用户名:
admin
请输入密码
admin
登陆成功

2.4 String类遍历字符串

需求:
  遍历字符串(获取字符串中的每一个字符)

public char charAt(int index):
  返回指定索引处的值

public int length():
  返回字符串中的字符个数,字符串的长度

代码:

package Java_study;

/**
 * 
 * @author  只是甲
 * @date    2021-06-30
 * @remark  INDEX_STATISTICS
 */
public class string4 {
	public static void main(String[] args) {
		//要遍历字符串,你首先得有一个字符串
		String s = "abcde";
		
		//思考:如何获取字符串中的每一个字符
        //假如让我们来提供方法,我们应该提供一个根据索引返回指定位置的字符的方法
        //返回值:char
        //形式参数:int index
        //public char charAt(int index):返回指定索引处的值
        //原始做法
		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 i = 0; i < s.length(); i++) {
			System.out.println(s.charAt(i));
		}
		System.out.println("----------");
		
		

		
	}

}

测试记录:

a
b
c
d
e
----------
a
b
c
d
e
----------

2.5 String类字符串拼接

需求:
把数组中的数据按照指定个格式拼接成一个字符串

举例:int[] arr = {1,2,3};
输出结果:[1, 2, 3]

分析:
A:定义一个int类型的数组
B:写方法实现把数组中的元素按照指定的格式拼接成一个字符串
C:调用方法
D:输出结果

代码:

package Java_study;

/**
 * 
 * @author  只是甲
 * @date    2021-06-30
 * @remark  String类字符串拼接
 *
 */
public class string5 {
	public static void main(String[] args) {
		//定义一个int类型的数组
		int[] arr = {1,2,3};
		
		String result = arrayToString(arr);
		
		System.out.print(result);
	}
	
	public static String arrayToString(int[] arr) {
		String s = "[";
		for (int i = 0; i < arr.length; i++) {
			s += arr[i];
			//如果不是最后一个元素,则再拼个逗号 ,
			if (i != arr.length - 1) {
				s += ",";
				//如果是最后一个元素,则再拼个右括号 ]
			} else {
				s += "]";
			}
		}
		return s;
	}

}

测试记录:

[1,2,3]

2.6 String类字符串反转

需求:
字符串反转

举例:键盘录入”abc”
输出结果:”cba”

分析:
 A:键盘录入字符串数据
 B:写方法实现字符串数据的反转
  把字符串倒着遍历,在把每一个得到的字符拼接成一个字符串
 C:调用方法
 D:输出结果

代码:

package Java_study;
import java.util.Scanner;

/**
 * 
 * @author  只是甲
 * @date    2021-06-30
 * @remark  String类字符串反转
 *
 */
public class string6 {
	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);
	}
	
	public static String reverse(String source) {
		String result = "";
		//反向for循环
		for (int i = source.length() - 1; i >= 0; i--) {
			result += source.charAt(i);
		}
		return result;
	}

}

测试记录:

请输入一个字符串:
adefesefaae
eaafesefeda!QAZxsw2

参考:

  1. https://blog.csdn.net/qq_43529621/article/details/115379095

相关文章