java中字符串String类简单介绍

本文深入探讨了 Java 中 String 类的使用方法,包括不同构造方式、字符串比较(== 与 equals)、基本操作方法如 concat 和 contains 等,并解析了 equals 方法的实现原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import java.util.Date;

public class StringDemo {

	public static void main(String[] args) {

		String str1 = new String("String");
		String str2 = new String("String");
		String str3 = "String";
		String str4 = " String ";

		char[] c = { 'S', 't', 'r', 'i', 'n', 'g' };
		String str5 = new String(c); // 通过char数组构造String对象

		String str6 = new String(c, 3, 3);
		String str7 = new String(str5.getBytes(), 2, 3);

		// '=='比较的是两个对象的引用是否相同
		if (str1 == str2) {
			System.out.println("str1==str2 is true");
		} else {
			System.out.println("str1==str2 is false");
		}

		// equals()方法比较的是两个对象的内容是否相同,相似方法有 equalsIgnoreCase()
		if (str1.equals(str2)) {
			System.out.println("str1.equals(str2) is true");
		} else {
			System.out.println("str1.equals(str2) is false");
		}

		// 运用三目运算符以及trim()方法
		System.out.println((str3 == str4) ? "str3==str4 is true"
				: "str3==str4 is fasle");
		System.out.println((str3 == str4.trim()) ? "str3==str4.trim() is true"
				: "str3==str4.trim() is fasle");

		System.out.println("str5 is " + str5);
		System.out.println("str6 is " + str6);
		System.out.println("str7 is " + str7);

		String str8 = new String(
				"Strings are constant; their values cannot be changed after they are created.");

		// charAt(int index)方法
		System.out
				.println("str8字符串的最后一个字符是: " + str8.charAt(str8.length() - 1));

		// codePointAt(int index) 返回值是指定字符的ASCII码值
		System.out.println("str8字符串的最后一个字符是: "
				+ str8.codePointAt(str8.length() - 1));

		// compareTo(String anotherString) 相似方法 compareToIgnoreCase(String str)
		if (str1.compareTo(str8) > 0) {
			System.out.println("str1+大于+str8");
		} else if (str1.compareTo(str8) < 0) {
			System.out.println("str1+小于+str8");
		} else {
			System.out.println("str1+等于+str8");
		}

		// concat(String str)连接字符串
		String str9 = "Hello ";
		System.out.println("连接字符串str9和str1: " + str9.concat(str1));

		// contains(CharSequence s)
		System.out
				.println((str8.contains(str1)) ? "str8包含str1" : "str8不包含str1");

		// 静态方法copyValueOf(char[] data) equivalent to valueOf(char[]).
		System.out.println(String.copyValueOf(c) + " " + String.valueOf(c));
		// endsWith(String suffix)
		System.out.println((str8.endsWith(".")) ? "str8是以'.'结尾的"
				: "str8不是以'.'结尾的");
		Date date = new Date();
		System.out.printf("年-月-日格式:%tF%n", date);

	}

}
</pre><pre name="code" class="java">

容易混淆的两个概念 ‘==’和equals()方法

==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。
==比较的是2个对象的地址,而equals比较的是2个对象的内容。显然,当equals为true时,==不一定为true。

String类重写了Object的equals方法如下:

public boolean equals(Object anObject) {
        if (this == anObject) {
            return true;
        }
        if (anObject instanceof String) {
            String anotherString = (String) anObject;
            int n = value.length;
            if (n == anotherString.value.length) {
                char v1[] = value;
                char v2[] = anotherString.value;
                int i = 0;
                while (n-- != 0) {
                    if (v1[i] != v2[i])
                            return false;
                    i++;
                }
                return true;
            }
        }
        return false;
    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值