String类

String的基本特征

String 的父类是Object

String 的类是final类,不能被继承

String 的底层是由final char[] 组成成,是一个常量不可变化

String 是不可变是指当前的字符串不能发生任何变化,如果对当前字符串作出了任何的操作都会产生一个新的字符串对象

String字符串是可变的吗?

  1. String str1 = "hello";
  2.  String str2 = "hello";
  3. String  str3 = new String("hello");
  4. String  str4 = new String("hello");
  5. System.out.println("str1==str2  "+(str1==str2));   //   true        
  6. System.out.println("str2==str3  "+(str2==str3));//     false        
  7.  System.out.println("str3==str4  "+(str3==str4));//    false        
  8. System.out.println("str3.equest(str4)  "+(str3.equals(str4)));//    true  

分析:

String str1 = "hello";先去常量池中去找一个hello的常量,如果没有hello这个常量,就会创建一个hello常量对象出来,如果去常量池中找,存在hello这个常量对象,把常量对象的内存地址给接受的变量。

new String("hello");这种创建方式,也要去常量池中去找一个叫hello的常量,只拷贝常量池的中值,而不去引用常量池中的内存地址,new String("hello")在堆中有内存地址,那么只要拷贝常量值到堆中内存中去即可,如果常量池中没有hello这个常量那么就去创建一个hello常量对象,也只是拷贝值到堆中内存中去

在字符串中如果使用equals判断,任何两个字符串只要内容相同都返回true;

如果使用==判断相等 ,连个字符串直接付值会返回true;

 

字符串常量池

池就是一个容器。

常量池是一个存放常量的容器

字符串常量池是一个存放字符串常量的容器

方法

String(byte[] bytes) 

bytes数组转换新的string

  1. byte[] bytes = "我爱中国,中国是美丽的强国".getBytes();
  2. //getByte  一个字符串转化为一个字节数组byte[]的方法
  3. String string = new String(bytes);
  4. System.out.println(string);

String(char[] value)

一个个字符的数组换新的string字符串

value 是字符串的初始值,初始值是从0开始

  1. char[] chars = {'我','爱','你','中','国'};
  2. String string1 = new String(chars);
  3. System.out.println(string1);
  4.  String string = new String(chars,1,3);
  5. System.out.println(string);//爱你中

String(char[] value, int offset, int count)

charAt(int index)

字符串在此字符串中第一次出现处的索引

  1. String str = "乱花渐欲迷人眼,浅草才能没马蹄。";
  2. char charAt = str.charAt(1);
  3.  System.out.println(charAt);//花

compareTo(String anotherString)

字符串的长度相同,字符内容都相等,则认为这两个字符串是相等

这两个字符串相等,则结果为 0,如果这两个字符串不相等,则结果为 正负数

  1. String str1 = "银烛秋光冷画屏,";
  2. String str2 = "轻罗小扇扑流萤。";
  3. System.out.println(str1.compareTo(str2));//1403
  4. String str3 = "采菊东篱下,悠然见南山";
  5. String str4 = "采菊东篱下,悠然见南山";
  6. System.out.println(str3.compareTo(str4));//0

String(String original)

concat(String str)

表示的字符序列和参数字符串表示的字符序列连接而成的字符序列

  1. String str1 = "中共";
  2. String concat = str1.concat("十九大");
  3. System.out.println(concat);//中共十九大

contains(CharSequence s)

字符串包含指定的 char 值序列时,返回 true,否则返回 false

  1. String str1 = "山气日夕佳,飞鸟相与还";
  2. System.out.println(str1.contains("山"));//true
  3. System.out.println(str1.contains("见"));//false

copyValueOf(char[] data)

定数组中表示该字符序列的 String

  1. char[] chars = {'月','落','乌','啼','霜','满','天'};
  2. String valueOf = String.valueOf(chars);
  3. System.out.println(valueOf);//月落乌啼霜满天

indexOf(int ch)

字符串中第一次出现处的索引

如果此字符串中没有这样的字符,则返回 -1如果此字符串中有这样的字符,则返回 0

  1. String value="凤姐姐我爱你,凤姐姐我想你";
  2. System.out.println(value.indexOf("凤姐姐"));//0
  3. System.out.println(value.indexOf("中"));//-1

lastIndexOf(int ch)

返回指定字符在此字符串中最后一次出现处的索引

  1. String str4 = "采菊东篱下,悠然见南山";
  2. System.out.println(str4.lastIndexOf("山"));

endsWith(String suffix)

getBytes()

String 转换一个新的 byte 数组

  1. String value="凤姐姐,我爱你";
  2. byte[] bytes = value.getBytes();
  3. String string = new String(bytes);
  4. System.out.println(string);

length()

返回此字符串的长度

数组中 length是属性,字符串中length是方法

  1. String value="abcdefgabc";
  2. System.out.println(value.length());
  3. String[] strings = {"a","c"};
  4. System.out.println(strings.length)

isEmpty

length()为 0 时返回 true 否则返回ture

  1. String s="江枫渔火对愁眠";
  2. String s1="";
  3. System.out.println(s1.isEmpty());//true
  4. System.out.println(s.isEmpty());//false

startsWith(String prefix)

subString() 

截取子字符串

substring(int beginIndex)

字符串从指定索引处的字符开始,直到此字符串末尾

  1. String string  = "一江春水向东流";
     
  2. System.out.println(string.substring(3,5));//水向

replace(char oldChar, char newChar)

通过用 newChar 替换此字符串中出现的所有 oldChar 得到的

  1. String v="我爱你";
  2. System.out.println(v.replace('爱', '恨'));//我恨你

replaceAll() 

替换字符串中的某一个字符串

toCharArray()

字符串转换为一个新的字符数组

  1. String s4  = "一江春水向东流";
  2. char[] charArray = s4.toCharArray();
  3. System.out.println(Arrays.toString(charArray));//[一, 江, 春, 水, 向, 东, 流]

trim()

返回字符串的副本,忽略前导空白和尾部空

取出字符串两侧的空格

  1. String info = "     我爱祖国天安门        ";
  2. info = info.trim() + ",天安门上太阳升";
  3. System.out.println(info);//我爱祖国天安门,天安门上太阳升

valueOf(char c)

返回 char 参数的字符串表示形式

  1. int i = 100;
  2. float f = (float) 100.0;
  3. double d = 100.0;
  4. String valueOf = String.valueOf(d);
  5. System.out.println(valueOf);//100.0

split(String regex)

给定的正则表达式来拆分此字符串

  1. String value="a,b,c,d,e,f,g,a,b,c";
  2. String[] split = value.split(",");
  3. System.out.print(Arrays.toString(split));//[a, b, c, d, e, f, g, a, b, c]
  4. for (String string : split) {    
  5.     System.out.print(string);//abcdefgabc

equalsIgnoreCase

等值判断忽略大小写

  1. String str1 ="Hello";
  2. String str2 = "hello";
  3.  System.out.println("str1.equalsIgnoreCase(str2):" + str1.equalsIgnoreCase(str2));  //true

toUpperCase() toLowerCase()

字符串大小写转换

  1. String info5 = "Hello";
  2. String info6 =info5.toUpperCase();
  3.  String info7 = info5.toLowerCase();
  4. System.out.println("大写后的内容:" + info6);
  5. System.out.println("小写后的内容:" + info7);

 

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值