Java String类(javastring类型)

  本篇文章为你整理了Java String类(javastring类型)的详细内容,包含有javastring类方法 javastring类型 javastring类型比较 java string类的常用方法 Java String类,希望能帮助你了解 Java String类。

  String s3 = new String(char[] a);
 

  String s4 = new String(char[] a,int startIndex,int count);
 

  String s5 = new String(byte[] b);

  
String类 实现了接口 Serializable【String 可串行化:可以在网络传输】
 

  String类 实现了接口 Comparable【String类对象可以比较大小】

  
String类 有属性 private final char value[]; 用于存放字符串内容,即String本质是字符数组;

  
一定要注意:value 是一个 final类型,不可以修改:即value数组对象不可以指向新的地址,但是单个字符内容是可以变化的;

  
方式一:直接赋值 String s = "hspedu";

  方式二:调用构造器 String s = new String("hspedu");

  方式一:先从常量池查看是否有 "hsp" 数据空间,如果有直接指向;如果没有则重新创建,然后指向。s 最终指向的是常量池的空间地址。

  方式二:先在堆中创建空间,里面维护了value属性,指向常量池的 "hsp" 空间;如果常量池没有"hsp",重新创建,如果有,直接通过value指向,最终指向的是堆中的空间地址。

  ![jvm的内存:String的内存布局]

  
字符串是不可变的。一个字符串对象一旦被分配,其内容是不可变的。

  

//以下语句创建了几个对象

 

  String s1 = "hello";

  s1 = "haha";

  //创建了2个对象

  

 

  
//优化,等价于 String a = "helloabc";

  //1. 编译器不傻,做一个优化,判断创建的常量池对象,是否有引用指向。

  //2. String a = "hello" + "abc"; = String a = "helloabc";

  

 

 

  
public String toString() {

   return new String(value, 0, count);//这里new了一个String对象

   //最后其实是 c 指向堆中对象(String)value[] - 池中 "helloabc"

   String c = a + b;

   String d = "helloabc";

   System.out.println(c == d);

  

 

 

  底层是StringBuilder sb = StringBuilder();

  sb.append("hello");

  sb.append("abc");

  sb是在堆中,并且append是在原来字符串的基础上追加的。

  重要规则:String c1 = "ab" + "cd"; 常量相加,看的是池。

  String c1 = a + b; 变量相加,是在堆中。

  
intern()方法:

  如果池中已经包含一个等于此String对象的字符串(用equals(Object)方法确定),则返回池中的字符串。否则将此 String对象添加到池中,并返回此String对象的引用。intern()方法最终返回的是常量池的地址(对象)。

  
//下面name.substring(6) 从索引6开始截取后面所有的内容

   System.out.println(name.substring(6));//截取后面的字符

   //name.substring(0,5) 表示从索引0开始截取,截取到索引5但不包括索引5,[0,5)

   System.out.println(name.substring(2,5));//ll0

  

 

 

  toUpperCase()方法: 转换成大写;

  toLowerCase()方法: 转换成小写;

  concat()方法: 拼接字符串;

  replace()方法: 替换字符串中的字符;

  split()方法: 分割字符串,对于某些分割字符我们需要转义比如 , \ 等等;

  toCharArray()方法: 转换成字符数组;

  compareTo()方法: 比较两个字符串的大小;

  format()方法: 格式字符串;

  

public class StringMethod02 {

 

   public static void main(String[] args) {

   //1. toUpperCase 转换成大写

   String s = "heLLo";

   System.out.println(s.toUpperCase());

   //2. toLowerCase 转换成小写

   System.out.println(s.toLowerCase());

   //3. concat 拼接字符串

   String s1 = "宝玉";

   s1 = s1.concat("林黛玉").concat("薛宝钗").concat("together");

   System.out.println(s1);

   //4. replace 替换字符串中的字符

   //s1.replace() 方法执行后返回的结果,才是替换后的

   //注意对 s1 即原来的字符串无任何影响

   String s2 = s1.replace("林黛玉","jack");

   System.out.println(s2);

   System.out.println(s1);

   //5. split 分割字符串,对于某些分割字符我们需要转义比如 , \\ 等等

   String poem = "锄禾日当午,汗滴禾下土,谁知盘中餐,粒粒皆辛苦";

   //以 "," 为标准对 poem 进行分割返回一个数组

   String[] split = poem.split(",");

   System.out.println("======分割后内容======");

   for (int i = 0; i split.length; i++) {

   System.out.println(split[i]);

   poem = "E:\\aaa\\bbb";

   String[] split2 = poem.split("\\\\");

   System.out.println("======分割后内容======");

   for (int i = 0; i split2.length; i++) {

   System.out.println(split2[i]);

   //6. toCharArray 转换成字符数组

   s = "happy";

   char[] chs = s.toCharArray();

   for (int i = 0; i chs.length; i++) {

   System.out.println(chs[i]);

   //7. compareTo 比较两个字符串的大小

   //如果前者大,返回正数,后者大,则返回负数,如果相等,返回0

   //源码:

   public int compareTo(String anotherString) {

   int len1 = value.length;

   int len2 = anotherString.value.length;

   int lim = Math.min(len1, len2);

   char v1[] = value;

   char v2[] = anotherString.value;

   int k = 0;

   while (k lim) {

   char c1 = v1[k];

   char c2 = v2[k];

   if (c1 != c2) {

   return c1 - c2;

   k++;

   return len1 - len2;

   //(1) 如果 长度相同,并且每个字符也相同,就返回0

   //(2) 如果长度相同或不同,但是在进行比较时,字符有不同,可以区分大小就返回字符间的差值

   //(3) 如果长度不同,前面部分相同,就返回 str1.len - str2.len;

   String a = "jcck";

   String b = "jack";

   System.out.println(a.compareTo(b));//返回值是 c - a

  
String info = "我的名字是" + name + "年龄是" + age +

   "成绩是" + score + "性别是" + gender;

   System.out.println(info);

   //1. %s %c %d %.2f 称为占位符

   //2. 这些占位符由后面的变量来替换

   //3. %s 表示后面由字符串来替换

   //4. %d 是整数来替换

   //5. %.2f 表示使用小数来替换,替换后,只会保留小数点两位

   //6. %c 使用char 类型来替换

   String formatStr = "我的名字是%s,年龄是%d,成绩是%.2f,性别是%c";

   String info2 = String.format(formatStr,name,age,score,gender);

   System.out.println(info2);

  

 

  以上就是Java String类(javastring类型)的详细内容,想要了解更多 Java String类的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: