美文网首页
Java-String详解(基于JDK1.8)

Java-String详解(基于JDK1.8)

作者: 木头小菜鸟 | 来源:发表于2020-01-23 22:44 被阅读0次

    String 的三大核心机制

    String类的继承和实现

    package java.lang;
    
    import java.io.ObjectStreamField;
    import java.io.UnsupportedEncodingException;
    import java.nio.charset.Charset;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Comparator;
    import java.util.Formatter;
    import java.util.Locale;
    import java.util.Objects;
    import java.util.StringJoiner;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    import java.util.regex.PatternSyntaxException;
    
    /**
     * The {@code String} class represents character strings. All
     * string literals in Java programs, such as {@code "abc"}, are
     * implemented as instances of this class.
     * <p>
     * Strings are constant; their values cannot be changed after they
     * are created. String buffers support mutable strings.
     * Because String objects are immutable they can be shared. For example:
     * <blockquote><pre>
     *     String str = "abc";
     * </pre></blockquote><p>
     * is equivalent to:
     * <blockquote><pre>
     *     char data[] = {'a', 'b', 'c'};
     *     String str = new String(data);
     * </pre></blockquote><p>
     * Here are some more examples of how strings can be used:
     * <blockquote><pre>
     *     System.out.println("abc");
     *     String cde = "cde";
     *     System.out.println("abc" + cde);
     *     String c = "abc".substring(2,3);
     *     String d = cde.substring(1, 2);
     * </pre></blockquote>
     * <p>
     * The class {@code String} includes methods for examining
     * individual characters of the sequence, for comparing strings, for
     * searching strings, for extracting substrings, and for creating a
     * copy of a string with all characters translated to uppercase or to
     * lowercase. Case mapping is based on the Unicode Standard version
     * specified by the {@link java.lang.Character Character} class.
     * <p>
     * The Java language provides special support for the string
     * concatenation operator (&nbsp;+&nbsp;), and for conversion of
     * other objects to strings. String concatenation is implemented
     * through the {@code StringBuilder}(or {@code StringBuffer})
     * class and its {@code append} method.
     * String conversions are implemented through the method
     * {@code toString}, defined by {@code Object} and
     * inherited by all classes in Java. For additional information on
     * string concatenation and conversion, see Gosling, Joy, and Steele,
     * <i>The Java Language Specification</i>.
     *
     * <p> Unless otherwise noted, passing a <tt>null</tt> argument to a constructor
     * or method in this class will cause a {@link NullPointerException} to be
     * thrown.
     *
     * <p>A {@code String} represents a string in the UTF-16 format
     * in which <em>supplementary characters</em> are represented by <em>surrogate
     * pairs</em> (see the section <a href="Character.html#unicode">Unicode
     * Character Representations</a> in the {@code Character} class for
     * more information).
     * Index values refer to {@code char} code units, so a supplementary
     * character uses two positions in a {@code String}.
     * <p>The {@code String} class provides methods for dealing with
     * Unicode code points (i.e., characters), in addition to those for
     * dealing with Unicode code units (i.e., {@code char} values).
     *
     * @author  Lee Boynton
     * @author  Arthur van Hoff
     * @author  Martin Buchholz
     * @author  Ulf Zibis
     * @see     java.lang.Object#toString()
     * @see     java.lang.StringBuffer
     * @see     java.lang.StringBuilder
     * @see     java.nio.charset.Charset
     * @since   JDK1.0
     */
    
    public final class String
        implements java.io.Serializable, Comparable<String>, CharSequence {
    ...
    }
    

    从源码中可以得出结论:
    1.String类被final修饰
    2.String未继承任何父类
    3.String实现了Serializable接口、Comparable<T>接口、CharSequence接口

    1.final
    ①不能被继承

    String类的成员变量

    String类的构造方法

    String类的普通方法

    String的常见问题&&面试考点

    • 不变性(一致性) String是一个immutable模式对象,不变模式的主要作用是当一个对象需要被多线程共享并频繁访问时,可以保证数据的一致性

    • 常量池优化(高效性) String对象创建之后会在字符串常量池中进行缓存,下次创建同样的对象时,会直接返回缓存的引用

    • final(安全性) String类不可被继承,提高了系统的安全性

    相关文章

      网友评论

          本文标题:Java-String详解(基于JDK1.8)

          本文链接:https://www.haomeiwen.com/subject/oopfzctx.html