Java—String

目录

1. String

1.1 String概述

1.2 String 构造方法

1.3 String 对象的特点

1.4通过帮助文档查看String中的方法

1.5字符串的比较

案例:用户登录


1. String

1.1 String概述

String类在java.lang包下,所以使用的时候不需要导包

String类代表字符串,Java程序中的所有字符串文字(例如“abc”)都被实现为此类的实例也就是说,Java 程序中所有的双引号字符串,都是 String 类的对象

字符串的特点
        字符串不可变,它们的值在创建后不能被更改
        虽然String的值是不可变的,但是它们可以被共享
        字符串效果上相当于字符数组(char[]),但是底层原理是字节数组(byte[])

1.2 String 构造方法

方法名说明 
public String()创建一个空白字符串对象,不含有任何内容 
public String(char[] chs)根据字符数组的内容,来创建字符串对象 
public String(byte[] bys)根据字节数组的内容,来创建字符串对象 
String s =“abc” ;直接赋值的方式创建字符串对象,内容就是abc

示范:

package Java.test;

public class test {
    public static void main(String[] args) {
        //public String()创建一个空白字符串对象,不含有任何内容 
        String s1=new String();
        System.out.println("s1:"+s1);
        //public String(char[] chs)根据字符数组的内容,来创建字符串对象 
        char[] ch={'a','b','c'};
        String s2=new String(ch);
        System.out.println("s2:"+s2);
        //public String(byte[] bys)根据字节数组的内容,来创建字符串对象 
        byte[] by={97,98,99};
        String s3=new String(by);
        System.out.println("s3:"+s3);
        //String s =“abc” ;直接赋值的方式创建字符串对象,内容就是abc
        String s4="abc";
        System.out.println("s4:"+s4);
    }
}

运行结果:

1.3 String 对象的特点

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

char[] chs ={'a' 'b' 'c'};
String s1=new string(chs);
String s2 = new string(chs);

上面的代码中,JVM会首先创建一个字符数组,然后每一次new的时候都会有一个新的地址,只不过s1和s2参考的字符串内容是相同的

2.3 String对象的特点

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

string s3 = "abc";
string s4 ="abc".

在上面的代码中,针对第一行代码,JVM会建立一个String对象放在字符串池中,并给s3参考
第二行则让s4直接参考字符串池中的String对象,也就是说它们本质上是同一个对象

用代码来演示一下:

package Java.test;

public class test {
    public static void main(String[] args) {
        //构造方法得到对象
        char[] ch={'a','b','c'};
        String s1=new String(ch);
        String s2=new String(ch);
        System.out.println(s1==s2);
        //直接赋值得到对象
        String s3="abc";
        String s4="abc";
        System.out.println(s3==s4);
        //比较字符串对象地址是否相同
        System.out.println(s1==s3);
    }
}

在内存中的显示:

 运行结果:

1.4通过帮助文档查看String中的方法

方法名说明 
public boolean equals(Object anObject)比较字符串的内容,严格区分大小写(用户名和密码) 
public char charAt(int index)返回指定索引处的char 值 
publicint length() 返回此字符串的长度

1.5字符串的比较

使用==做比较
基本类型:        比较的是数据值是否相同

引用类型:        比较的是地址值是否相同

字符串是对象,它比较内容是否相同,是通过一个方法来实现的,这个方法叫:equals()
public boolean equals(Object anObject):将此字符串与指定对象进行比较。由于我们比较的是字符串对象,所以参数直接传递一个字符串

代码演示一下:

package Java.test;

public class test {
    public static void main(String[] args) {
        //构造方法得到对象
        char[] ch={'a','b','c'};
        String s1=new String(ch);
        String s2=new String(ch);

        //直接赋值得到对象
        String s3="abc";
        String s4="abc";
        System.out.println(s3==s4);
        //比较字符串对象地址是否相同
        System.out.println(s1==s2);
        System.out.println(s1==s3);
        System.out.println(s3==s4);
        System.out.println("***********");
        //比较字符串内容是否相同
        System.out.println(s1.equals(s2));
        System.out.println(s2.equals(s3));
        System.out.println(s3.equals(s4));
    }
}

运行结果:

案例:用户登录

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

思路:
①已知用户名和密码,定义两个字符串表示即可
②键盘录入要登录的用户名和密码,用Scanner实现
③拿键盘录入的用户名、密码和已知的用户名、密码进行比较,给出相应的提示。字符串的内容比较,用equals()方法实现
④用循环实现多次机会,这里的次数明确,采用for循环实现,并在登录成功的时候,使用break结束循环

代码演示:

package Java.test;

import java.util.Scanner;

public class test {
    public static void main(String[] args) {
        //用户名和密码
        String username="zyy";
        String password="0828";
        //for循环实现多次机会
        for(int i=1;i<5;i++) {
            //键盘录入要登陆的用户名和密码
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入用户名:");
            String name = sc.nextLine();
            System.out.println("请输入密码:");
            String pwd = sc.nextLine();
            //对比
            if (name.equals(username) && pwd.equals(password)) {
                System.out.println("恭喜你登陆成功!");
                break;
            } else {
                int flag=4-i;
                System.out.println("很遗憾你的账号或密码输入有误!");
                System.out.println("你还剩"+flag+"次机会,请重新录入:");
            }
        }
    }
}

运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值