Java教程

JavaSE学习:第二十三章、String类

本文主要是介绍JavaSE学习:第二十三章、String类,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1、认识:

1、String 对象用于保存字符串,也就是一组字符序列。
2、字符串的字符使用Unicode编码,一个字符占两个字节。
3、String有很多构造器,构造器重载。
4、String类实现了Serializable接口【可以串行化:可以在网络传输】。
Comparable接口【可以比较大小】
5、String是finall类,不可被继承。
6、String有属性 private final char value[]; 用于存放字符串内容。
7、value是一个final类型,表示不可以修改【即value不能指向新的地址,但是字符内容可变】

2、string创建方法:

方法一:

String s = "hsf";

方法二:

String s2 = new String("hsf");

区别:
方法一:先从常量池看是否有有"hsf"数据,如果有直接指向,没有则重新创建,然后指向。s最终返回的是常量池的地址空间
方法二:先在堆中创建空间,里面有value属性,指向常量池;如果常量池有"hsf",直接指向,没有则创建,最终返回的是堆中的地址空间

在这里插入图片描述
测试题1:

public class Test1 {
    public static void main(String[] args) {
        String a = "hsf";
        String b = new String("hsf");
        System.out.println(a.equals(b));  // t 比较内容是否相等
        System.out.println(a == b);       // f  比较地址值是否相等
        System.out.println(a == b.intern()); // t
        System.out.println(b == b.intern());  // f
    }
}

1、intern();方法:如果常量池中已经有一个等于String对象的字符串,则直接返回池中字符串地址;如果池中没有,则创建并返回此String对象引用。
2、intern():直接从池中返回地址。

测试题2:

public class Test1 {
    public static void main(String[] args) {
        Person p1 = new Person();
        p1.name = "hsf";
        Person p2 = new Person();
        p2.name = "hsf";
        System.out.println(p1.name.equals(p2.name));  // t
        System.out.println(p1.name == p2.name);       // t:比较值
        System.out.println(p1.name == "hsf");         // t
    }
}

测试题三:
在这里插入图片描述
在这里插入图片描述

这篇关于JavaSE学习:第二十三章、String类的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!