java String 详解

 *前言:我们先想想String是什么?怎么用?用在哪里?


 

String 是表示字符串的一个类;

用法特别多,在下边一一列举;

用法也是举例出来。

这里列举可以常用方法:

contains:是否包含内容;有值就返回true没有返回false。

 public class AboutStr {
     public static void main(String[] args) throws Exception {    
                String write="大富大贵"; //这里定义的内容是“大富大贵”。
   //contains:是否包含内容;有值就返回true没有返回false
                 System.out.println(write.contains(write));    
    }
}    

isEmpty:是否为空 是空的话返回ture 不是的返回false。

public class AboutStr {
  public static void main(String[] args) throws Exception {
    String write="大富大贵";
    String joke="";  
    //isEmpty:是否为空 是空的话返回ture 不是的返回false
        System.out.println("有内容返回的是:"+write.isEmpty());
        System.out.println("没有内容的是:"+joke.isEmpty());            
    }
    }

 

equals:是否有指定的内容;有值就返回true没有返回false

public class AboutStr {
  public static void main(String[] args) throws Exception {
        String number="542,24,55,11,5,0";
        String write="大富大贵";
    //equals:是否有指定的内容;有值就返回true没有返回false
        System.out.println("有没有数字2:"+write.equals("2"));
        System.out.println("有没有大富大贵:"+write.equals("大富大贵"));
    }
}

split:分割字符串

public class AboutStr {
    public static void main(String[] args) throws Exception {
    //split:分割字符串        
    String number="542,24,55,11,5,0";
    String [] numb=number.split(",");//根据逗号分割。分割出来的拿数组接收。
    System.out.println("截取掉两个逗号后开始的值是"+numb[2]);
    String [] numbers=count.split(",");//甴一个字符串截取后就会成为俩,用数组接收
    System.out.println(numbers[3]+numbers[5]+numbers[4]);//打印出来,emo再见
    }
}

这里提到数组,就看一个可以把所有内容拿出来的一个循环。

public class AboutStr {
    public static void main(String[] args) throws Exception {
    String number="542,24,55,11,5,0";
        for(int i=0;i<unm.length;i++) {
        System.out.println(unm[i]);        
    }
    }
}

length:长度,这个内容的长度

public class AboutStr {
    public static void main(String[] args) throws Exception {
     String write="大富大贵";
        //length:长度,这个内容的长度
        System.out.println(write);//打印出来的内容
        System.out.println(write.length());//打印内容的长度(字符串里边有多少个字这样的)
    }
}

charAt:根据位置获得该位置的值

public class AboutStr {
    public static void main(String[] args) throws Exception {
        String write="大富大贵";
    //charAt:根据位置获得该位置的值    
        System.out.println("1的位置是:"+write.charAt(1));
        System.out.println("3的位置是:"+write.charAt(3));
    }
}

indexOf:根据内容 进行判断是不是有如果有返回0 如果没有返回-1

public class AboutStr {
    String write="大富大贵";
//indexOf:根据内容 进行判断是不是有如果有返回0 如果没有返回-1
        System.out.println("大富大贵有没有大:"+write.indexOf("大"));
        System.out.println("大富大贵有没有富贵:"+write.indexOf("富贵"));
    }
}

stratsWith:以....开始 是的话返回true 不是的话返回false

public class AboutStr {
    String write="大富大贵";
    String count="我,爱,你,!,你好,帅哥";
//stratsWith:以....开始 是的话返回true 不是的话返回false
        System.out.println("是不是以彭于晏开头:"+count.startsWith("彭于晏"));
        System.out.println("是不是大富大贵:"+write.startsWith("大富"));
    }
}

endsWith:以....开始 是的话返回true 不是的话返回false

public class AboutStr {
    String write="大富大贵";
    String count="我,爱,你,!,你好,帅哥";
//endsWith:以...结尾  是的话返回true 不是的话返回false
        System.out.println("最后是不是有帅哥?"+count.endsWith("帅哥"));
        System.out.println("是不是美女?"+count.endsWith("美女"));
    }
}

substring:截取字符串.在输入的字符开始读取内容

public class AboutStr {
    public static void main(String[] args) throws Exception {
        String write="大富大贵";
    //substring:截取字符串.在输入的字符开始读取内容
        System.out.println(write.substring(2));
        System.out.println(write.substring(2,3));    //两个的时候包前不包后
    }
}

toLowerCase:转小写  

toUpperCase:转大写

public class AboutStr {
    public static void main(String[] args) throws Exception {
       String engli="superMan  ";
//toLowerCase:转小写
        System.out.println(engli.toLowerCase());
        
//toUpperCase:转大写
        System.out.println(engli.toUpperCase());
    }
}

trim:去除前后空格

public class AboutStr {
    public static void main(String[] args) throws Exception {
       String engli="superMan  ";
//trim:去除前后空格
        System.out.println(engli.trim());
    }
}

toCharArray:转换成字符数组

public class AboutStr {
    public static void main(String[] args) throws Exception {
    String count="我,爱,你,!,你好,帅哥"
//toCharArray:转换成字符数组
        char[ ] cxs=count.toCharArray();
        System.out.println(cxs);;
    }
}

了解完大概。这里进阶一下下。

StringBuffer和StringBuilder的用法

常见的方法

  • 添加
    • append
    • insert
  • 删除
    • deleteChart
    • delete
  • 替换
    • replace
  • 反转
    • reverse
这里也来看下用法:
inser 插入进去
public class AboutStr {
    public static void main(String[] args) throws Exception {
    StringBuffer s=new StringBuffer("hello");
        //------insert 在第几位插入进去
        s.insert(2, "sad");
        System.out.println(s);
    }
}
append 追加、拼接
public class AboutStr {
    public static void main(String[] args) throws Exception {
    StringBuffer s=new StringBuffer("hello");
        //append 追加
        s.append("word");
        System.out.println(s);
    }
}

deleteChartAt 将索引的位置之前跟本身的删除掉

StringBuffer s=new StringBuffer("hello");
        //deleteChartAt 将索引的位置之前跟本身的删除掉
        s.deleteCharAt(1);
        System.out.println(s);

delete 删除掉指定位置的那一个

public class AboutStr {
    public static void main(String[] args) throws Exception {
    StringBuffer s=new StringBuffer("hello");
        //delete 删除掉指定位置的那一个
        s.deleteCharAt(3);
        System.out.println(s);
    }
}

replace 从开始位置到结束位置之间的替换

public class AboutStr {
    public static void main(String[] args) throws Exception {
        StringBuffer s=new StringBuffer("hello");
        //replace 从开始位置到结束位置之间的替换
        s.replace(1, 3, "and");
        System.out.println(s);
    }
}

reverse反转内容,把开头头放到到末尾,末尾放到开头

public class AboutStr {
    public static void main(String[] args) throws Exception {
        StringBuffer cool=new StringBuffer("NO.1 to");
        //reverse 反转        
        System.out.println("反转后的:"+cool.reverse());
    }
}
这里用到反转reverse可以做 回文字符串 回文字符串就是首尾相呼应
public class AboutStr {
    public static void main(String[] args) throws Exception {
        StringBuffer numbs=new StringBuffer("1239321");
        numbs.reverse();
        System.out.println(numbs);
        String nvew=numbs.toString();
        
        String nux="1239321";
        System.out.println("验证是不是相对应:"+nux.equals(numbs));
        System.out.println("查看是否是回文字符串:"+nux.equals(nux));
    }
}

 

基本了解完,了解哈我从刚入门觉着牛皮的


 

String的底层是个数组。

String 定义的字符串为一个常量,一旦被赋值,不可被改变。

String在内存中的分配空间;主要分为:栈,堆,常量池(也叫方法区)。

 可视化是这样的:

 

注:为什么说String是一旦被赋值就,不可被改。因为如果常量都一样,不会创建新的,会找到之前创建出来的。

 


 

这里到重点了1、String的转换是什么样的?

  String的转换:

  • 字符串如果是变量相加,先开空间,在拼接。
  • 字符串如果是常量相加,先拼接,然后再找常量池,如果有就直接返回,没有再创建。

2、String和他的亲兄弟

  String,StringBuffer,StringBuilder的联系 和区别:

  • 三个都表示字符串
  • String内容不可变,StringBuffer和StringBuilder内容可变。
  • StringBuffer是线程同步的,数据安全,效率低;StringBuilder线程不同步,数据不安全,效率高。

最后就是这里会遇到的面试题:

public class AboutStr {
    public static void main(String[] args) throws Exception {
        String s1=new String("abc");
String s2="abc";
System.out.println(s1==s2);
System.out.println(s1.equals(s2));

String s3="bbb";
String s4="bbb";
System.out.println(s3==s4);

String s5=new String("ccc");
String s6=new String("ccc");
System.out.println(s5==s6);

String s7="hello";
String s8="world";
String s9="helloworld";

System.out.println(s9==s7+s8);
System.out.println(s9=="hello"+"world");
    }
}

面试题的结果:

public class AboutStr {
    public static void main(String[] args) throws Exception {
            String s1=new String("abc");
        String s2="abc";
        System.out.println(s1==s2);//结果为false
        System.out.println(s1.equals(s2));//结果为true
                
        String s3="bbb";
        String s4="bbb";
        System.out.println(s3==s4);//结果为true
        
        String s5=new String("ccc");
        String s6=new String("ccc");
        System.out.println(s5==s6);//结果为false
        
        String s7="hello";
        String s8="world";
        String s9="helloworld";
        System.out.println(s9==s7+s8);//结果为false
        System.out.println(s9=="hello"+"world");//结果为true
    }
}

对了,在eclipse中按住Ctrl和左键可以进入每个方法的底层,进入底层Ctrl跟O键可以看方法。

到这里,String的一基础就介绍完了。到后边还会有更新。

都是从小白开始,慢慢来。

posted @ 2022-04-29 23:14  凤梨小屋  阅读(95)  评论(0)    收藏  举报