首页 > 其他 > 详细

String类

时间:2020-04-02 23:12:44      阅读:73      评论:0      收藏:0      [点我收藏+]

String类

String类代表字符串,Java程序中的所有字符串的字面值(如“abc")都作为此类的实例实现。(其实就是说:程序当中所有的双引号字符串,都是String类的对象。就算没有new,也照样是。)

字符串的特点:

  1. 字符串是常量(字符串的内容永不可变)。【重点】

  2. 正是因为字符串不可改变,所以字符串是可以共享使用的。

  3. 字符串效果上相当于char[]字符数组,但是底层原理是byte[]字节数组。

创建字符串的常见3+1种方式

三种构造方法:

public String():创建一个空白字符串,不含有任何内容。

String str1 =new String();//小括号留空,说明字符串什么内容都没有。
System.out.println("第一个字符串:" + str1);

public String(char[] array):根据字符数组的内容,来创建对应的字符串。

char[] charArray = new char[]{ ‘A‘, ‘B‘, ‘C‘ };
String str2 = new String(charArray);
System.out.println("第二个字符串:" + str2);

public String(byte[] array):根据字节数组的内容,来创建对应的字符串。

byte[] byteArray = { 97, 98, 99 };
String str3 = new String(byteArray);
System.out.println("第三个字符串:" + str3);

直接创建:

String str4 = "Hello";
System.out.println("第四个字符串: " + str4);

字符串的常量池

字符串常量池:程序当中直接写上的双引号字符串,就在字符串常量池中。new的不在池当中。

对于基本数据类型来说,==是进行数值的比较。

对于引用数据类型来说,==是进行地址值的比较。

public static void main(String[] args) {
  String str1 = "abc";
  String str2 = "abc";
?
  char[] charArray = { ‘a‘, ‘b‘, ‘c‘ };
  String str3 = new String(charArray);
?
  System.out.println(str1 ==str2);//true
  System.out.println(str1 ==str3);//false
  System.out.println(str2 ==str3);//false
}

字符串的比较相关方法

==是进行对象的地址值比较,如果确实需要字符串的内容比较,可以使用两个方法。

public boolean equals(Object obj):参数可以是任何对象,只有参数是一个字符串并且内容相同才会给出true;否则返回false。

public static void main(String[] args) {
  String str1 = "Hello";
  String str2 = "Hello";
?
  char[] charArray = new char[]{ ‘H‘, ‘e‘, ‘l‘, ‘l‘ , ‘o‘};
  String str3 = new String(charArray);
?
  System.out.println(str1.equals(str2));
  System.out.println(str2.equals(str3));
  System.out.println(str3.equals("Hello"));
  System.out.println("Hello".equals(str1));
  String str4 = "hello";
  System.out.println(str1.equals(str4));
}

注意事项:

  1. 任何对象都能用Object进行接收。

  2. equals方法具有对称性,也就是a.equals(b)和b.equals(a)效果一样

  3. 如果比较双方一个常量,一个变量,推荐把常量字符串写在前面。

    推荐:”abc“.equals(str) 不推荐:str.equals("abc")

public boolean equalsIgnoreCase(String[] str):忽略大小写,进行内容比较。

System.out.println(str4.equalsIgnoreCase(str3));

字符串的获取方法

public int length():获取字符串当中含有的字符个数,拿到字符串长度。

public static void main(String[] args) {
  int length = "afknvkafhkjvhfkjahvhf".length();
  System.out.println(length);
}

public String concat(String str):将当前字符串和参数字符串拼接成为返回值新的字符串。

String str1 = "Hello";
String str2 = "World";
String str3 = str1.concat(str2);
System.out.println(str1);
System.out.println(str2);
System.out.println(str3);

public char charAt(int index):获取指定索引位置的单个字符。(索引从0开始)

char ch = "Hello".charAt(1);
System.out.println("在一号索引位置的字符是:" + ch);

public int indexof(String str):查找参数字符串在本字符串当中首次出现的索引位置,如果没有返回-1值。

String original = "HelloWorld";
int index = original.indexOf("llo");
System.out.println("第一次索引值是:" + index);

字符串的截取方法

public String substring(int index):截取从参数位置一直到字符串末尾,返回新字符串。

public static void main(String[] args) {
  String str1 = "HelloWorld";
  String str2 = str1.substring(5);
  System.out.println(str2);
}

public String substring(int begin, int end):截取从begin开始,一直到end结束,中间的字符串。

String str3 = str1.substring(4,7);
System.out.println(str3);

备注:[begin,end),包含左边,不包含右边。

字符串的转换相关方法

public char[] toCharArray():将当前字符串拆分成为字符数组作为返回值。

public static void main(String[] args) {
  char[] chars = "HelloWorld".toCharArray();
  System.out.println(chars[0]);
  System.out.println(chars.length);
}

public byte[] getBytes():获得当前字符串底层的字节数组。

byte[] bytes = "abc".getBytes();
for (int i = 0; i < bytes.length; i++) {
  System.out.println(bytes[i]);
}

public String replace(CharSequence oldString,CharSequence newString):将所有出现的老字符串替换成为新的字符串,返回替换之后的结果新字符串。 备注:CharSequence意思就是说可以接受字符串类型。

String str1 = "How do you do?";
String str2 = str1.replace("o","*");
System.out.println(str2);

字符串的分割方法

public String[] split(String regex):按照参数的规则,将字符串切分成为若干部分。

注意事项:split方法的参数其实是一个”正则表达式“,今后学习。

今天要注意:如果按照英文句点”."进行切分,必须写“\\."(两个反斜杠)

public static void main(String[] args) {
  String str1 = "aaa,bbb,ccc";
  String array[] = str1.split(",");
  for (int i = 0; i < array.length; i++) {
      System.out.println(array[i]);
  }
?
  String str2 = "aaa.bbb.ccc";
  String[] array1 = str2.split("\\.");
  for (int i = 0; i < array1.length; i++) {
      System.out.println(array1[i]);
  }
}

练习

1.定义一个方法,把数组{1,2,3}按照指定格式拼接成为一个字符串。格式参照如下:[word1#word2#word3]。

public static void main(String[] args) {
  int[] array = {1, 2, 3};
  String str = fromArrayToString(array);
  System.out.println(str);
}
public static String fromArrayToString(int[] array) {
  String str = "[";
  for (int i = 0; i < array.length; i++) {
      if (i == array.length - 1) {
          str += "word" + array[i] + "]";
      } else {
          str += "word" + array[i] + "#";
      }
  }
  return str;
}

2.键盘输入一个字符串,并且统计其中各种字符出现的次数。种类有:大写字母、小写字母、数字和其它。

public static void main(String[] args) {
  Scanner sc = new Scanner(System.in);
  System.out.println("请输入一个字符串:");
  String input = sc.next();
?
  int countUpper = 0;
  int countLower = 0;
  int countNumber = 0;
  int countOther = 0;
?
  char[] charArray = input.toCharArray();
  for (int i = 0; i < charArray.length; i++) {
      char ch = charArray[i];
      if (ch <= ‘Z‘ && ch >= ‘A‘ ) {
          countUpper++;
      } else if (ch <= ‘z‘ && ch >= ‘a‘) {
          countLower++;
      } else if (ch <= ‘9‘ && ch >= ‘0‘) {
          countNumber++;
      } else {
          countOther++;
      }
  }
  System.out.println("大写字母有:" + countUpper);
  System.out.println("小写字母有:" + countLower);
  System.out.println("数字有:" + countNumber);
  System.out.println("其它有:" + countOther);
}

String类

原文:https://www.cnblogs.com/zl5233/p/12622619.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!