美文网首页
String类特点分析

String类特点分析

作者: 曾梦想仗剑天涯 | 来源:发表于2020-10-21 15:12 被阅读0次

字符串比较

  • public boolean equals(String str)方法比较字符串
/**
  ==进行的是数值比较,如果是用于对象比较,则比较的是两个内存的地址数值
  equals()是类所提供的一个比较方法,可以直接进行字符串内容的判断
*/
public class StringDemo {
  public static void main(String args []) {
    String strA = "www.baidu.com";
    String strB = new String("www.baidu.com");
    String strC = "www.baidu.com";
    System.out.println(strA == strB);    //false
    System.out.println(strA.equals(strB));    //true
    System.out.println(strA == strC);    //true
  }
}

字符串常量

  • 字符串常量是String类的匿名对象;

String类对象两种实例化方式

  • 直接赋值的对象实例化模式
public class StringDemo {
  public static void main(String args []) {
    String strA = "mldn";
    String strB = "mldn";
  }
}
字符串池--此图来源于李兴华老师
  • 构造方法实例化
    • 构造方法实例化对象是属于自己专用的内存空间,也可以手动入池,方法名为public String intern()
public class StringDemo {
  public static void main(String args []) {
    String strA = new String("mldn");
  }
}
此图来源于李兴华老师
public class StringDemo {
  public static void main(String args []) {
    String strA = "mldn";
    String strB = new String("mldn");
  }
}
此图来源于李兴华老师
public class StringDemo {
  public static void main(String args []) {
    String strA = "mldn";
    String strB = new String("mldn").intern();
    System.out.println(strA == strB);    //true
  }
}

String对象(常量)池

  • 对象(常量)池主要目的是实现数据的共享处理
  • 对象(常量)池主要分为两种:
    • 静态常量池:指的是程序(*.class)在加载的时候会自动将此程序之中保存的字符串、普通的常量、类和方法的信息等等,全部进行分配;
    • 运行时常量池:当一个程序(*.class)加载之后,里面可能有一些变量,这个时候提供的一个常量池;
/*
  本程序中所给出的内容全部是常量数据(字符串的常量都是匿名对象)
  所以程序在加载的时候会自动帮助开发者处理好相应的连接
*/
public class StringDemo {
  public static void main(String args []) {
    String strA = "www.mldn.cn";
    String strB = "www." + "mldn" + ".cn";
    System.out.println(strA == strB);    //true
  }
}
此图来源于李兴华老师
/*
  程序在加载时并不确定info是什么内容,因为程序在字符串连接的时候info是一个变量
  变量的内容是可以修改的,所以它不认为strB的结果是一个所需要的最终结果
  此时strB存在了运行时常量池
*/
public class StringDemo {
  public static void main(String args []) {
    String info = "mldn";
    String strA = "www.mldn.cn";
    String strB = "www." + info + ".cn";
    System.out.println(strA == strB);    //false
  }
}

字符串修改

  • 字符串内容不可修改
  • 在String类中包含的是一个数组,数组最大的缺点是长度不可改变,当我们设置了一个字符串之后,会自动的进行一个数组空间的开辟,开辟的内容长度是固定的


    此图来源于李兴华老师
/**
  在整个处理过程中,字符串常量的内容没有发生的改变,改变的只是一个String类对象的引用
  这种改变将有可能带来大量的垃圾空间
*/
public class StringDemo {
  public static void main(String args []) {
    String str = "www.";
    str += "mldn.";
    str = str + "cn";
    System.out.println(str);
  }
}
此图来源于李兴华老师

Java中的主方法

  • 主方法public static void main(String args [])
    • public:描述的是一种访问权限,主方法是一切的开始点,开始点一定是公共的;
    • static:程序的执行是通过类名称完成的,所以表示此方法由类直接调用
    • void:主方法是一切的起点,起点一旦开始就没有返回的可能
    • main:是一个系统定义好的方法名称
    • String args []:字符串的数组,可以实现程序启动参数的接受
/**
  运行时参数
*/
public class StringDemo {
  public static void main(String args []) {
    for(String arg : args) {
      System.out.println(arg);
    }
  }
}

相关文章

  • String类特点分析

    字符串比较 public boolean equals(String str)方法比较字符串 字符串常量 字符串常...

  • 基础提高(三):深入分析String

    本章将深入分析在Java中最常用的String类,主要分析以下几个部分: String类的二大特点:不可变性和不可...

  • String类

    描述字符串的类——String类 一、String类 String类的特点:字符串对象一旦被初始化就不会被改变 字...

  • String&StringBuilder&StringBuffe

    一、String类源码分析 1. String类的主要成员属性: (1)String类是final关键字修饰的,即...

  • String类的基本特点

    一. String类的两种实例化方式 1. String可以采用直接赋值的形式进行操作,这一点像基本数据类型的赋值...

  • StringBuffer和StringBuilder的区别

    String类 特点 String类是一个不可变类,即一旦一个String对象被创建,包含在这个对象中的字符串序列...

  • Java基础类库

    StringBuffer类 String类特点:每一个字符串常量都属于一个String类的匿名对象,并且不可更改;...

  • StringBuffer类

    1.StringBuffer类的主要特点 2.StringBuffer,StringBuilder,String区...

  • Java学习笔记 11 - Object、String、Stri

    本文主要内容1、Object2、String3、StringBuilder 01 Object类 概述 1、特点类...

  • 线程<一>不可变类

    immutable String?? immutable特点 1.类添加final修饰符,保证类不被继承。2.保证...

网友评论

      本文标题:String类特点分析

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