字符串String概述,遍历字符串

String的注意点

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

string是Java定义好的一个类,定义在java.long包中,所以使用的时候不需要导入包。

Java程序中的所有字符串文字(例如“abcdefg”),都被实为此类的对象

创建String对象

实验得出两种获取得到的abc是不一样的

以后要是想比较字符串里面的内容,就必须用String里面的方法

package stringdemo;

import java.util.Scanner;

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

        Scanner sc = new Scanner(System.in);
        //2.键盘录入用户名和密码
        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+"被锁定请联系XXX进行身份认证");

                }else{
                    System.out.println("用户登录失败,用户名或者密码有误,您还剩下"+(2 - i)+"次机会");
                }
            }
        }
    }
}

进行一个身份的登录验证

问题: equals和==是一样的吗

回答:在 Java 等编程语言中,“==” 和 “equals” 方法在比较对象时通常是不一样的。

“==” 用于比较基本数据类型(如整数、浮点数、字符、布尔值等)时,是比较它们的值是否相等。例如,

int a = 5; int b = 5; a == b 会返回 true 。

但当用于比较引用数据类型(如对象)时,“==” 比较的是两个对象的引用是否指向同一个内存地址,而不是比较对象的内容。

String str1 = new String("hello");
String str2 = new String("hello");
str1 == str2  // 返回 false,因为它们是两个不同的对象,内存地址不同

而 “equals” 方法通常用于比较对象的内容是否相等。许多类都重写了 “equals” 方法来实现自定义的对象内容比较逻辑。

例如,对于 

String 类,

str1.equals(str2) 会返回 

true ,因为它们的内容都是 "hello" 。

不过,需要注意的是,如果自定义类没有重写 “equals” 方法,默认情况下它的行为和 “==” 是类似的,即比较引用。

遍历字符串

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

public char charAT(int index):根据索引返回字符

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

数组的长度:数组名.length

字符串的长度:字符串对象.length()

package stringdemo;

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();
        //进行遍历
        for (int i = 0; i < str.length(); i++) {
            //i一次表示字符串的每一个索引
            char c = str.charAt(i);
            System.out.println(c);
        }
    }
}

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

package stringdemo;

import java.util.Scanner;

public class StringDemo2 {
    public static void main(String[] args) {
        //键盘录入一个字符串
        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++) {
            char c = str.charAt(i);
            if (c >= 'a' && c <= 'z'){
                //char类型的变量在参与计算的时候自动类型提升为int,查询ascil码表
                smallCount++;
            }else if(c >= 'A' && c <= 'Z'){
                bigCount++;
            }else if (c >= '0' && c <= '9'){
                numberCount++;
            }
        }
        //3.输出打印
        System.out.println("小写字母有"+ smallCount + "个");
        System.out.println("大写字母有"+ smallCount + "个");
        System.out.println("数字有"+ smallCount + "个");
    }
}

这里面的0~9需要使用字符串的形式‘0’ ‘9’,要不然在ascil表里面会出现编码问题。

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值