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是一旦被赋值就,不可被改。因为如果常量都一样,不会创建新的,会找到之前创建出来的。
这里到重点了1、String的转换是什么样的?
String的转换:
- 字符串如果是变量相加,先开空间,在拼接。
- 字符串如果是常量相加,先拼接,然后再找常量池,如果有就直接返回,没有再创建。
最后就是这里会遇到的面试题:
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的一基础就介绍完了。到后边还会有更新。
都是从小白开始,慢慢来。

浙公网安备 33010602011771号