Java学习第八天-----字符串
Java学习第八天-----字符串
java.lang.string 代表字符串
API当众说,java编译中所有的字符串自面子(如‘abc’)都作为此类的实现
其实就是说,程序当中所有的双引号都是字符串,都是String类的对象。就算没有new也照样是
字符串的特点:
1.字符串的内容不可改变[重点]
2.正是因为字符串的内容不可改变,所以字符串可以共享使用
3.字符串效果上相当与是char【】字符串,但是底层原理是byte【】数组。
创建字符串常见的四中方法:
三种构造方法,一种直接创建
public String ();创建一个空白字符串,不含有任何内容
public String(char[] arrya);根据字符数组来创建对应的字符串
public String(byet[] array);根据字节数组的内容来创建字符串
直接创建:
String Str = ”hello"
注意直接创建也是对象
示例代码:
public class Demo01String {
public static void main(String[] args) {
//使用空参构造
String str1 = new String();//小括号留空说明什么都没有
System.out.println(str1);
//根据字符数据创建字符串
char[] charArray = {'a','b','c','d'};
String str2 = new String(charArray);
System.out.println(str2);
//根据字节数组来创建字符串
byte[] byteArray = {97,98,99};
String str3 = new String(byteArray);
System.out.println(str3);
// 直接创建
String str4 = "hello";
System.out.println(str4);
}
}
字符串常量池
字符串常量值,程序当中直接写上双引号的字符串,都在字符串常量池中
字符串直接写的在常量值中,new的不在
public class Demo02StringPool {
public static void main(String[] args) {
String str1 = "abc";
String str2 = "abc";//abc已经存储在常量池中,直接从常量池中获取,
char[] charArray = {'a','b','c'};
String str3 = new String(charArray);//new出来的字符串存在堆当中
System.out.println(str1 == str2);//true
System.out.println(str1 == str3);//false
System.out.println(str2.equals(str3));//之比较内人True
int a = 0;
int b = 0;
System.out.println(a == b);
}
}
== 和equals的区别
== 是进行对象的地址值比较,如果确实要字符串的内容比较可以使用两个方法
public boolean equals(OBject obj ),参数可以使任意对象
备注:任何对象都可以用object进行接收
注意事项:
1.任何对象都可以用object进行接收
2.equals对象具有对称性,就是a.equals(b),b.equals(a)一样
3.如果字符串常量和变量比较,不推荐时用str.equals(‘hello),而是’hello’.eequals(str),因为变量如果为null会出现空指针异常
*/
public class Demo01StringEquals {
public static void main(String[] args) {
String str1 = "hello";
String str2 = "hello";
char[] charArrays = {'h','e','l','l','o'};
String str3 = new String(charArrays);
System.out.println(str1.equals(str2));//true
System.out.println(str2.equals(str3));//true
System.out.println(str3.equals("hello"));//true
System.out.println("hello".equals(str2));//true
String str4 = "Hello";
System.out.println(str1.equals(str4));//false
String stra = "Java";
String strb = "java";
System.out.println(stra.equals(strb));//区分大小写
System.out.println(stra.equalsIgnoreCase(strb));//不区分大小写
}
}
字符串相关方法
获取字符串
string 当中与获取相关的常用方法
public Int length()获取字符串的长度,并返回
public String concat(String)当前字符串和参数字符串拼接成一个新的字符串返回
public char charAt(int index)获取指定索引位置的字符
public int indexOf(String str)查找参数字符串在字符串首次数出的位置,没有返回-1
截取字符串
字符串的截取方式
public string substring(int index)截取从参数开始之一直到字符串末尾,返回新字符串
public string substring(int begin,int end)截取从begin到end的位置,左闭右开【begin,end)
转换字符串
String 当中与转换相关的方法有:
public char【】 toCharArray()将当前字符串拆分为字符数组作为返回值
public byte【】 gatBytes()获得当前字符串底层的字节数组
public String replace(charSequence oldString,CharSequence newString)
将老的字符串替换为新的字符串,并返回替换之后的新的字符串
分割字符串
字符串的分隔方法
public String【】 split(String regex) ,按照参数的规则,将字符串分分割成若*分
注意事项:
split的方法的参数其实是一个正则表达式,
//英文句点进行分割会什么都分割不出来,会出错 ,需要写成\.
public class Demo05StringSplit {
public static void main(String[] args) {
String str1 = "aaa,bbb,ccc";
String[] array1 = str1.split(",");//将str1按逗号分割
for (int i = 0; i <array1.length ; i++) {
System.out.println(array1[i]);
}
//英文句点进行分割会什么都分割不出来,会出错 ,需要写成\\.
String str2 = "aaa.bbb.ccc";
// String[] array2= str1.split(".");//将str1按逗号分割
String[] array2= str1.split("\\.");//将str1按逗号分割
for (int i = 0; i <array2.length ; i++) {
System.out.println(array2[i]);
}
}
练习:
package demo02;
import java.util.Scanner;
/*
题目
键盘输入一个字符串,并且统计各种字符的出现次数
字符种类:大写字母,小写字母,数字,其他
思路:
1.既然用到键盘输入,用到Scanner
2.键盘输入字符串 String str = sc.next();
3.定义四个变量,分别代表四中字符出现次数。
4.需要最字符一个一个逐一检查,string--》char[],方法是toCharArray()
5.遍历char【】,对当前字符种类进行判断。并且进行计数
5.打印输出
*/
public class Demo07StringCount {
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 ('A' <= ch && ch <= 'Z'){
countUpper++;
}else if('a' <= ch && ch <= 'z' ){
countLower++;
}else if ('0' <= ch && ch <='9'){
countNumber++;
}else {
countOther++;
}
}
System.out.println("大写字母的个数"+countUpper);
System.out.println("小写字母的个数"+ countLower);
System.out.println("数字的个数"+countNumber);
System.out.println("其他字符的个数"+countOther);
}
}
请输入一个字符串
lkju1233549876)(^^
大写字母的个数0
小写字母的个数4
数字的个数10
其他字符的个数4
Process finished with exit code 0
本文地址:https://blog.csdn.net/weixin_43853447/article/details/107891728