JAVA中关于String的一些知识.



欢迎各位热爱JAVA的朋友进来,这次写了一些在JAVA中String的一些知识,有不足向我指正鸭!

共有三部分:String的一些基本知识

                      String类中常用的方法
                      StringBuilder和StringBuffer

String的一些基本知识       

1.String s1="abc"
s1中保存的不是“abc”字符串
s1中保存的是“abc”字符串的内存地址
“abc”保存在字符串常量池中,字符串常量池位于JVM中的方法区
2.引用数据类型String也会在方法去生成String.class字节码文件  
3.垃圾回收器是不会回收字符串常量池等常量的。
4.String类已经重写了equals方法,以下的equals方法调用的是String重写之后的equals方法
5.关于String类中的构造方法
第一个:String s=new String("");
第二个:String s="";最常用
第三个:String s=new String(char数组);
第四个:String s=new String(char数组,起始下标,长度);
第五个:String s=new String(byte数组);
第六个:String s=new String(byte数组,起始下标,长度);
例子:(1)byte[] bytes={97,98,99};
        String s2=new String(bytes);
        System.out.println(s2);//abc
(2)byte[] bytes={97,98,99};
String s3=new String(bytes,1,2);
        System.out.println(s3);//bc


String类中常用的方法
(1)char型 charAt(int index)
char c=“中国人”.charAt(1);
        System.out.println(c);//输出 国
(2)int型 compareTo(String anotherString)//按字典来比较
int result ="abc".compareTo("abc");
System.out.println(result);//0(等于0)前后一致
int result2="abcd".compareTo("abce");
System.out.println(result2);//-1(小于0)前小后大
int result3="abce".compareTo("abcd");
System.out.println(result3);//1(大于0)前大后小
System.out.println("xyz".compareTo("zyx"));//-1拿着字符串第一个字母和后面字符串的第一个字母比较,能分胜负就不再比较了
字符串之间比较大小不能直接使用><,需要使用compareTo方法
(3)boolean型 contains(CharSequence s)
判断前面的字符串中是否包含后面的字符串
System.out.println("hello.java".contains(".java"));//true
(4)boolean型 endsWith(String suffix)
判断当前字符串是否以某个字符串结尾
System.out.println("sss.txt".endsWith(".java"));//false
(5)boolean型 equalsIgnoreCase(String anotherString)
判断两个字符串是否相等,并且同时忽略大小写
System.out.println("ABC".equalsIgnoreCase("abC"));//true
(6)boolean equals(Object anObject)
比较两个字符串必须使用equals方法,不能使用==
System.out.println(“abc”.equals(“abc”));//true
(7)byte[]型 getBytes();
将字符串对象转换成字节数组
byte[] s="abcde".getBytes();
        for(int i=0;i<s.length;i++){
            System.out.println(s[i]);
        }
(8)int型 indexOf(String str)
判断某个子字符串在当前字符串中第一次出现处的索引(下标)
System.out.println("oraclejavatrvc.ccdg".indexOf("java"));//6
(9)boolean型 isEmpty()
判断某个字符串是否为“空字符串”。底层源代码调用的应该是字符串的length()方法。
String s="";
System.out.println(s.isEmpty());//true
(10)int型 length()
面试题:判断数组长度和判断字符串长度不一样
判断数组长度是length属性,判断字符串长度是length()方法
System.out.println("abc".length());//3
(11)int型 lastIndexOf(String str)
判断某个字符串在当前字符串中最后一次出现的索引(下标)
System.out.println("shgdwjavassjava");//11
(12)String型 replace(target,replacement)
替换
String得到父接口就是CharSequence
 String s="Wangfeixiang";
        System.out.println(s.replace("Wang","Xu"));//Xufeixiang
(13)String[]型 split(String regex)
//拆分字符串
String s="2002-10-01";
        String[] m=s.split("-");
        for(int i=0;i<m.length;i++){
            System.out.println(m[i]);
        }//2002 10 01
(14)boolean型 startsWith(String prefix)
//判断某个字符串是否以某个字符串开始
System.out.println("http://www.vvv.com".startWith("https"));//false
(15)String型 substring(int buginIndex)参数是起始下标
//截取字符串
System.out.println("http://www.baidu.com".substring(7));//www.baidu.com
(16)String型 substring(int beginIndex,int endIndex)
beginIndex起始位置(包括)
endIndex结束位置(不包括)
System.out.println("http://www.baidu.com".substring(7,10));//www
(17)char[]型 toCharArray()
//将字符串转换成char数组
char[] chars="我是中国人".toCharArray();
for循环.......
(18)String型 toLowerCase();
//转换为小写
System.out.println("AFDWDSsaedDWS".toLowerArray());
(19)String型 toUpperCase();
//转换为大写
(20)String型 trim()
//去除字符串前后空白
String s="     hello  hello    ";
        System.out.println(s.trim());//hello  hello
(21)String型 String.valueOf();
//将非字符串转换成字符串
String中只有一个方法是静态的,不需要new对象
String s1=String.valueOf(3.14);
!!!!!!!!本质上System.out.println()这个方法在输出任何数据的时候都是先转换成字符串再输出
println()先调用String.valueOf()方法然后valueOf()再调用toString()
所以输出的任何内容本质上都是字符串


StringBuilder和StringBuffer
1.StringBuffer底层实际上是一个byte[]数组,往StringBuffer中放字符串,实际上是放到byte数组当中了,StringBuffer的初始化容量是16
2.拼接字符串,调用append()方法
append()方法底层在进行追加的时候,如果byte数组满了,会自动扩容
3.如何优化StringBuffer的性能?
在创建StringBuffer的时候尽可能给定一个初始化容量,最好减少底层数组得到扩容次数。预估计一下,给一个大一些初始化容量
4.StringBuffer和StringBuilder区别:StringBuffer中的方法都有synchronized关键字修饰,表示StringBuffer在多线程环境下运行时安全的
StringBuilder中的方法都没有synchronized关键字修饰,表示StringBuilder在多线程环境下运行是不安全的
StringBuffer是线程安全的
StringBuilder是非线程安全的(涉及到多线程)

好了,就到这里啦!感谢大家观看哈哈!栓Q~

以后我会更新一些关于JAVA的一些知识!中间会有

计算机网络计算机组成原理数据结构与算法mysql的知识很全哦~

谢谢大家!!!

共同进步鸭!

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我不想打酱油

谢谢啦!我会加油的!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值