自学内容网 自学内容网

Java语言程序设计——篇六(1)

概述

字符串

  • 用一对双引号“”括起来的字符序列。
  • Java语言中,字符串常量或变量均用类实现。
    字符串有两大类:
    1)创建之后不会再做修改和变动(String类对象)
    2)创建之后允许再做修改(StringBuilder类对象)声明为final,不能被继承

创建String类对象     

使用String类的构造方法创建字符串变量
🍉格式一:

String 变量名;
变量名 = new String("字符串")

eg:String s; //声明字符串型引用变量s,此时s的值为null
   s=new String(“Hello”);
   //在堆内存中分配空间,并将s指向该字符串首地址
格式二:

String 变量名 = new String("字符串");
eg:String s=new String("Hello");
   使用字符串字面值创建String对象

格式三:

String 变量名 = "字符串";
eg:String s="Java is cool";

字符串基本操作

字符串在内存的表示。设有下面声明:

String str = new String("Java is cool");

在这里插入图片描述
这个字符串共有12个字符,每个字符有一个下标,下标从0开始。 可以通过下标访问每个字符。
可以调用String类的方法操作字符串
例:

String s = new String("Java is cool");
System.out.println(s.length());  //12
System.out.println(s.substring(5,7));//is
System.out.println(s.substring(8));//cool
System.out.println(s.toUpperCase());//JAVA IS COOL
System.out.println(s.toLowerCase());//java is cool
System.out.println(s.replace(‘a’,A));//jAvA is cool
System.out.println(s.isEmpty());//false
System.out.println(s.charAt(6));//s
String s1 = "Cool,";
s1 = s1.concat(s);
System.out.println(s1);//Cool, Java is cool

实战演练

例:编写一个方法判断字符串是否是回文串。
思路:取出字符串的第一个和最后一个比较,若不相同,程序结束,返回false。若相等,比较第二个字符和倒数第二字符,直到比较到字符串的中间字符为止,若都相等,则是回文,返回true。

package shujia_test1;

import java.util.Scanner;

public class Csdn6_1 {
public static boolean isPalindrome(String s) {
int low = 0;
int high = s.length() - 1;
while (low < high) {
if (s.charAt(low) != s.charAt(high))
return false;
low++;
high--;
}
return true;
}

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入一个字符串:");
String s = sc.nextLine();
if (isPalindrome(s))
System.out.println(s + ":是回文。");
else
System.out.println(s + ":不是回文。");
}

}

在这里插入图片描述

字符串查找

String类提供了从字符串中查找字符子串的方法

public int indexOf( int ch):查找字符ch第一次出现的位置(在原字符串中的下标),如果查找不成功,返回-1public int indexOf( int ch, int fromIndex):查找字符ch从fromIndex开始第一次出现的位置。
public int lastIndexOf( int ch):查找字符ch最后一次出现的位置
public int lastIndexOf( int ch, int endIndex):查找字符ch到endIndex为止最后一次出现的位置。

public int indexOf(int ch):接收一个整数(字符的 Unicode 编码值)作为参数。
public int indexOf(char ch):接收一个字符(字符字面量)作为参数。
你应该根据你的需求选择使用哪一个。如果你有一个字符的 Unicode 编码值,就使用第一个;如果你有一个字符字面量,就使用第二个。
上述方法中int ch换成String str,表示子串的相关查找
例:

String s = new String("This is a Java string.");
System.out.println(s.length());//22
System.out.println(s.indexOf(‘a’));// 8
System.out.println(s.lastIndexOf(‘a’, 12));// 11
System.out.println(s. indexOf("is"));//2
System.out.println(s. indexOf("my"));//-1
System.out.println(s. lastIndexOf ("is"));// 5

字符串转换为数组

字符串不是数组,String类有从字符串转换成数组的方法

public char[] toCharArray():将字符串中的字符转换成数组
public void getChars( int srcBegin, int srcEnd,char []dst, int dstBegin):将字符串中从起始位置srcBegin到结束位置srcEnd之间的字符复制到字符数组dst中, dstBegin为目标数组的起始位置

例:

String s = new String("This is a Java string.");
Char []chars = s.toCharArray();
System.out.println(chars);//This is a Java string.
Char []subs = new char[4];
s.getChars(10,14,subs,0);
System.out.println(subs);//Java

字符串比较

1、String类有比较两个字符串内容是否相等的方法

public boolean equals(String anotherString):比较两个字符串内容是否相等,区分大小写
public boolean equalsIgnoreCase(String anotherString):比较两个字符串内容是否相等,不区分大小写

例:

String s1 = new String("Hello");
String s2 = new String("Hello"); System.out.println(s1.equals(s2));//true
System.out.println(s1.equals(hello));//false 
System.out.println(s1.equalsIgnoreCase (hello));//true

不能使用“==”号来比较字符串内容是否相等

String s1 = new String("Hello");
String s2 = new String("Hello"); 
System.out.println(s1== s2);//false

解释:
在 Java 中,当你使用 new 关键字创建对象时,每次调用都会在内存中分配一个新的空间来存储该对象,即使这些对象的内容相同。因此,s1 和 s2 虽然都包含了字符串 “Hello”,但它们是在堆内存中的两个不同位置创建的独立对象。

当你使用==操作符来比较 s1 和 s2 时,你实际上是在比较这两个对象的引用(即它们在内存中的地址),而不是它们的内容。由于 s1 和 s2 指向的是堆内存中的两个不同位置,所以 s1 == s2 的结果将是 false。
在这里插入图片描述

String s1 = "Hello";
String s2 = "Hello";
System.out.println(s1== s2);//true

解释:
字符串常量是存储在常量池中,内容相同的字符串在常量池中只有一个副本
在这里插入图片描述
2、String类有比较两个字符串大小的方法

public int compareTo (String another):
当前字符串与参数字符串比较
如果字符串相等,则返回 0;
如果调用字符串的字典顺序在参数字符串之前,则返回小于 0 的值;
如果调用字符串的字典顺序在参数字符串之后,则返回大于 0 的值。

例:

String s1 = "ABC";
String s2 = "ABE";
System.out.println(s1.compareTo(s2));//-2
public int compareToIgnoreCase (String another):当前字符串与参数字符串比较,不区分大小写

实战演练

例:利用起泡排序法,将字符串数组由小到大排序

package shujia_test1;

public class Csdn6_2 {
public static void main(String[] args) {
String[] str = { "China", "USA", "Russia", "France", "England" };
for (int i = str.length - 1; i > 0; i--)
for (int j = 0; j < i; j++) {
if (str[j].compareTo(str[j + 1]) > 0) {
String temp = str[j];
str[j] = str[j + 1];
str[j + 1] = temp;
}
}
for (String s : str)
System.out.print(s + " ");
}

}

运行结果:
在这里插入图片描述

字符串的拆分与组合

String类的split()方法可以将一个字符串分解成子字符串

public String[] split(String regex): 参数regex表示正则表达式,根据给定的正则表达式将字符串分解成字符串数组

例:

String ss = "one little, two little,three little.";
String []str = ss.split("[ , .]");//含义是使用空格、逗号、点为分隔符拆分字符串
for(String s : str){
     System.out.println(s);//one 
                           //little 
                           //two 
                           //little 
                           //three
                          //little
}

String类的join()方法将字符数组组合成字符串

public static String join(CharSequence delimiter,CharSequence... elements):使用给定的分隔符delimiter将elements的各元素组合成一个新字符串

例:

String joined = String.join( "/", "usr", "local", "bin" );
System.out.println(joined);
//usr/local/bin

String []seasons = { "春", "夏", "秋", "冬" };
String s = String.join( "-", seasons );
System.out.println(s);//春-夏-秋-冬

博主用心写,读者点关注,互动传真情,知识不迷路


原文地址:https://blog.csdn.net/2201_75851346/article/details/140592493

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!