🌿🌿🌿跟随博主脚步,从这里开始→博主主页🌿🌿🌿
字符串的性质
String对象的不变性
一旦创建一个String对象,就不能对其内容进行改变。
String s ="Hello,world";
s.replace('o','A');//HellA,wArldSystem.out.println(s);//Hello,world
s = s.substring(0,6).concat("Java");
s.toUpperCase();//HELLO,JAVASystem.out.println(s);//Hello,Java
解释:
1、s.replace(‘o’, ‘A’); 这行代码确实会生成一个新的字符串,其中所有的 ‘o’ 都被替换成了 ‘A’,但是这个新字符串并没有被赋值给任何变量,所以原字符串 s 保持不变。
2、s = s.substring(0,6).concat(“Java”); 这行代码正确地修改了 s 的值。substring(0,6) 返回 “Hello,”,然后 .concat(“Java”) 将这两个字符串连接起来,形成 “Hello,Java”,并且这个新字符串被赋值给了 s。
3、s.toUpperCase(); 这行代码同样生成了一个新的字符串,其中所有的字符都被转换成大写,但是这个新字符串没有被赋值给任何变量,所以原字符串 s(此时为 “Hello,Java”)仍然保持不变。
对字符串的操作会产生另一个字符串,原字符串没有任何影响。
命令行参数
publicstaticvoidmain(String[]args){}publicstaticvoidmain(String … args){}main()方法参数String[] args称为命令行参数,是一个字符串数组。
实战演练
使用下面的方法签名编写一个方法, 统计一个字符串中包含字母的个数。
public static int countLetters(String s)
编写测试程序调用countLetters(“Beijing 2020”) 方法并显示它的返回值7。
publicclassStringLetterCounter{// 方法定义:统计字符串中包含的字母个数 publicstaticintcountLetters(String s){int count =0;for(int i =0; i < s.length(); i++){// 使用Character.isLetter方法检查当前字符是否为字母 if(Character.isLetter(s.charAt(i))){
count++;}}return count;}// 测试程序 publicstaticvoidmain(String[] args){String testString ="Beijing 2020";int letterCount =countLetters(testString);System.out.println("The number of letters in \""+ testString +"\" is: "+ letterCount);// 根据题目要求,应显示返回值7 }}
格式化输出
System.out.printf()方法在控制台上显示格式化输出
PrintStreamprintf(String format,Object... args)}
格式控制串 输出数据列表
常用的格式符
格式符含义%d结果被格式化成十进制整数%f结果被格式化成十进制浮点数%e结果以科学计数法格式输出%s结果以字符串输出%b结果以布尔值(true或false)形式输出%c结果为Unicode字符%n换行格式符,它不与参数对应。与\n含义相同,但%n是跨跨平台的
1、**%d:** 输出十进制整数,按数据的实际长度输出。
%md: m为指定的输出的长度
若指定的输出的长度m大于实际长度,则左端补空格;
若指定的输出的长度m小于实际长度,则按实际输出。
例:
System.out.printf("year = |%6d|%n",2017);//year = | 2017|
2、%f:用来以小数形式输出
%m.nf:指定格式宽度和小数位数。
例:
System.out.printf("|%8.3f|",2017.1234);//|2017.123|
3、%e:用来以科学计数法的格式输出浮点数。
%m.ne:指定格式宽度和小数位数。
例:
System.out.printf("|%10.2e|",123.567);//|1.24e+02|
4、%c:用来以字符方式输出。
例:
byte b =65;System.out.printf("b = %c%n", b);//b = A
5、%s:用来以字符串的格式输出。
可以用在任何数据上。
例:
String str =newString("Hello");System.out.printf("str = %s", str);//str = Hello boolean b =true;System.out.printf("b = %s", b);//b = true
在String类中还提供了format()方法,它的格式如下:
staticStringformat(String format,Object … args)
功能:按照参数指定的格式,将args格式化成字符串返回。
🌻创建StringBuilder对象
StringBuilder类是Java 5新增的,创建可变字符串。常用构造方法如下:
public StringBuilder(String str): 利用一个已存在的字符串对象str创建一个字符串缓冲区对象,另外再分配16个字符的缓冲区。
例:
StringBuilder str =newStringBuilder("Hello");
缓冲区主要是为了方便StringBuilder对象的修改, StringBuilder对象是可变的,即修改是在原对象上完成的
<.font>
StringBuilder的访问和修改
length()、charAt()、indexOf()、substring()
intcapacity()voidsetCharAt(int index,char ch)intcapacity()voidsetCharAt(int index,char ch)StringBuilderinsert(int offset,int n)StringBuilderinsert(int offset,String str)StringBuilderdeleteCharAt(int index)StringBuilderdelete(int start,int end)StringBuilderreplace(int start,int end,String str)StringBuilderreverse()voidsetLength(int newLength)
实战演练
packagecom.demo;publicclassStringBuilderDemo{publicstaticvoidmain(String[] args){StringBuilder str=newStringBuilder("Hello");System.out.println(str.length());// 5System.out.println(str.capacity());//21
str.append("Java");System.out.println(str);//HelloJavaSystem.out.println(str.insert(5,","));//Hello,JavaSystem.out.println(str.replace(6,10,"World"));//Hello,WorldSystem.out.println(str.reverse());//!dlroW,olleH}}
⭐️运算符
“+”的重载“+”运算符是Java唯一的重载运算符,用于实现字符串的连接,当“+”运算符连接的两个操作数其中一个为String类型时,该运算即为字符串连接运算。
例1:
str="Hello"+"Java";//str的值为"HelloJava"
例2:
int i=10;String s="i="+i;//s的值为"i=10"
例3:
String str1 ="Java"+"Good";//str1的值为"JavaGood"
实战演练
编写一个加密程序,要求从键盘输入一个字符串,然后输出加密后的字符串。加密规则是对每个字母转换为下一个字母表示,原来是a转换为b,原来是B转换为C。小写字母z转换为小写字母a,大写字母Z转换为大写字母A。
提示: 使用构造函数StringBuilder(String str)创建字符串对象
importjava.util.Scanner;publicclassSimpleEncryptor{publicstaticvoidmain(String[] args){Scanner scanner =newScanner(System.in);System.out.print("请输入一个字符串: ");String input = scanner.nextLine();// 使用构造函数StringBuilder(String str)创建字符串对象 StringBuilder sb =newStringBuilder(input);// 加密过程 for(int i =0; i < sb.length(); i++){char c = sb.charAt(i);if(Character.isLowerCase(c)){// 小写字母的加密
c =(char)((c -'a'+1)%26+'a');}elseif(Character.isUpperCase(c)){// 大写字母的加密
c =(char)((c -'A'+1)%26+'A');}// 替换原字符
sb.setCharAt(i, c);}// 输出加密后的字符串 System.out.println("加密后的字符串: "+ sb.toString());}}
运行结果:
博主用心写,读者点关注,互动传真情,知识不迷路
版权归原作者 倾听一世,繁花盛开 所有, 如有侵权,请联系我们删除。