Java中的String类字符串类型总结

Java中的String类字符串类型总结

java字符串概述和特点:


类String在java.lang包里面,所以用的时候不用导包
java中所有“abc”这种形式都作为String类的对象,即使没有new
String字符串的特点:

  1. 字符串的内容永远不能改变“”双引号写的是什么就是什么
  2. 因为字符串不可变,所以可以共享使用,节省内存
  3. 字符串效果上(只是效果上)相当于char[](联想到charAt(i)方法)字符数组,但是底层原理是byte[]字节数组

创建字符串的方式:

  1. 直接创建
    String s1="Rita Love Code";
  2. 创建空白字符串
    String s2=new String();
    System.out.println("字符串s2:"+s2);
  3. 根据字符数组内容创建字符串
    char[] charArray={'R','i','t','a'};
    String s3=new String(charArray);
    System.out.println("字符串s3:"+s3);
  4. 根据字节数组创建字符串
    byte[] byteArray={97,98,99};
    String s4=new String(byteArray);
    System.out.println("字符串s:"+s4);

关于字符串常量池(堆里有一块空间作为常量池):

  1. 只有双引号""直接写的比如("abc")才放在常量池当中,new一个字符串对象,在堆里但是不在常量池里面。
  2. 基本数据类型==操作比较的是数据本身;引用类型==操作比较的是地址值(即使分别指向的两个数据本身相同,但是地址值不同,返回的仍然是false)。

延伸:基本数据类型和引用数据类型
基本数据类型:数值型(byte.short.int.float等)字符型(char)布尔型(boolean)
引用数据类型:类(String,Person)、接口、数组(char[])
举例:

public static void main(String[] args){
    String s1="abc";
    String s2="abc";
%堆中的常量池只有一份“abc”这个字符串对象(当然它的最底层也是一个字节数组堆其存储)
%所有这个引用数据类型指向的地址是同一个地址,所以s1,s2==操作时,地址值进行比较,结果为true
    char[] charArray={'a','b','c'};
    String s3=new String(charArray);
%首先在堆中创建了一个char类型的数组存储【a|b|c】
%new操作的时候char[]字符数组转换为一个byte[]字节数组(因为String字符串类型底层是以byte[]存储)
    System.out.println(s1==s2);%true
    System.out.println(s1==s3);%false
}


 

发布了66 篇原创文章 · 获赞 19 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/RitaAndWakaka/article/details/105412093