22、Java面向对象——String类

目录

课前先导

一、String类

1、string类

2、字符串的特点

3、String类中的构造方法

4、String类对象的特点

5、字符串的比较

6、获取字符串中的字符

7、获取字符串的长度

二、字符串对象的练习 

1、遍历字符串

2、统计字符串中的字符

3、拼接字符串

4、字符串反转


课前先导

在学习Object类中的方法之前,我们先学习一下String类,前面我们讲字符串类型Sring是一个类,我们今天就详细看一下String类,也了解一下其他定义字符串的方法;掌握关于字符串的操作。

一、String类

1、string类

(1)String类是java.lang包中的一个类,所以使用的时候不用导包;

(2)String类代表字符串,Java程序中的所有字符串字面值(如"abc")都作为此类的实例实现。

2、字符串的特点

(1)字符串不可变,它们的值在创建后不能被更改;

(2)虽然String的值是不可变的,但它们可以被共享;

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

(Ascll码)) 

 字符串的值为什么不可变?

   我们在创建字符串的时候会在内存中创建一个字符串常量池,当使用双引号创建字符串对象时候,系统会检查该字符串是否在字符串常量池中存在,若不存在则创建,存在:不会创建,而是直接复用(共享)。

public static void main(String[] args){
	
		String str01 = "abc";
		String str02 = "abc";
		boolean result01 = (str01 == str02); // == 比较的是字符串地址值
		System.out.println("result01 = "+result01+"\n");
		
		String str03 = "ab";
		String str04 = str03 + "c";
		System.out.println("str04 = "+str04+"\n");
		boolean result02 = (str01 == str04);
		System.out.println("result02 = "+result02);
	}

3、String类中的构造方法

创建字符串的两种方式:

(1)通过构造方法创建对象的方式;

(2)直接赋值的方式(建议使用)。

(1) 创建空白字符串对象

 (2)根据字符数组创建字符串对象

(3) 根据字节数组创建字符串对象

(4) 直接赋值创建字符串对象

4、String类对象的特点

(1)通过new创建的字符串对象,每一次new都会申请一个内存空间,虽然内存相同,但是地址值不同

(2)以双引号" "方式定义的字符串,只要字符序列相同(顺序和大小写);无论在程序代码中出现几次,JVM都只会建立一个String类对象,并在字符串中维护

String str01 = "abc";

String Str02 = "abc";

这里我们定义了两个字符串变量,程序在运行第一行时,JVM会建立一个String类的对象放在字符串池中,并给str01作为参考;程序运行第二行时让str02直接参考字符串池中的String对象,也就是说它们本质上是同一个对象

5、字符串的比较

(1)使用 == 做比较

基本类型:比较的是数据值是否相同;

引用类型:比较的是地址值是否相同

(2) equals()方法

字符串是对象,它比较内容是否相同,要通过String类中的一个方法来实现:equals();

public boolean  equals(Object anObject)  :将此字符串与指定对象进行比较;

由于我们比较的是字符串对象,所以参数直接传递一个字符串。

我们前面讲过字符串的比较:字符串1.equals(字符串2);我们这里依然是这么用,因为每个字符串都是String类的对象吗。所以通过对象调用equals方法,并传递参数 

public static void main(String[] args){
		//直接复制的方式得到字符串对象
		String str01 = "abc";
		String str02 = "abc";
		//构造方法方式得到字符串对象
		char[] chs = {'a','b','c'};
		String str03 = new String(chs);
		String str04 = new String(chs);
		//比较字符串地址是否相同
		System.out.println("str01与str02的地址是否相同?"+(str01 == str02));
		System.out.println("str01与str02的地址是否相同?"+(str01 == str03));
		System.out.println("str03与str02的地址是否相同?"+(str03 == str04));
		//比较字符串中的内容是否相同
		System.out.println("str01与str02的字符串内容是否相同?"+str01.equals(str02));
		System.out.println("str01与str02的字符串内容是否相同?"+str01.equals(str03));
		System.out.println("str01与str02的字符串内容是否相同?"+str03.equals(str04));
	}

6、获取字符串中的字符

如果想获得字符串中的某个字符,可以通过下标去获得:charAt();

public char charAt(int  index):返回指定索引处的char值,字符串的索引也是从零开始的。

public static void main(String[] args){
		String str = "abcdefg";
		char ch = str.charAt(5);
		System.out.println("你获取的字符是:"+ch);
	}

7、获取字符串的长度

获取字符串的长度就是获取字符数组的长度,用String类中的方法:length();

public  int  length( );返回此字符串的长度

数组长度:数组名.length( );

字符串长度:字符串对象.length;

public static void main(String[] args){
		
		String str = "abcdefg";
		System.out.println("你获取的字符是:"+str.length());
	}

二、字符串对象的练习 

1、遍历字符串

从键盘输入一个字符串,使用程序实现在控制台遍历该字符串

public static void main(String[] args){
		Scanner input = new Scanner(System.in);
		
		System.out.println("请输入一个字符串:");
		String str = input.next();
		
		for(int i = 0;i<str.length();i++){
			char ch = str.charAt(i);
			System.out.println(ch);
		}

2、统计字符串中的字符

从键盘输入个字符串,统计该字符串中大写字母字符、小写字母字符、数字字符出现的次数

public static void main(String[] args){
		Scanner input = new Scanner(System.in);
		int dChar = 0;//大写字母的个数
		int xChar = 0;//小写字母的个数
		int numChar = 0;//数字字符的个数
		
		System.out.println("请输入一个字符串:");
		String str = input.next();
		
		for(int i = 0;i<str.length();i++){
			char ch = str.charAt(i);
			
			if(ch >= 'A' && ch <= 'Z'){
				dChar++;
			}else if(ch >='a' && ch <= 'z'){
				xChar++;
			}else if(ch >= '1' && ch <= '9'){
				numChar++;
			}
			
		}
		System.out.println("大写字母"+dChar+"个");
		System.out.println("小写字母"+xChar+"个");
		System.out.println("数字"+numChar+"个");
		
	}

3、拼接字符串

从键盘输入个字符串,然后按要求输出;比如输入"abcdefg",输出:数组:[a,b,c,d,e,f,g]

public static void main(String[] args){
		Scanner input = new Scanner(System.in);
		
		System.out.println("请输入一个字符串:");
		String str = input.next();

		String newStr = "数组:[";
		for(int i = 0;i < str.length();i++){
			
			if(i >= 0 && i < str.length()-1){
				newStr += str.charAt(i) + ",";
			}else if(i == str.length()-1){
				newStr += str.charAt(i) + "]";
			}
			
		}
		System.out.println(newStr);
		
	}

4、字符串反转

输入一串字符串,让它在控制台逆序输出

public static void main(String[] args){
		Scanner input = new Scanner(System.in);
		
		System.out.println("请输入一个字符串:");
		String str = input.next();

		for(int i = str.length()-1;i >= 0;i--){
			char ch = str.charAt(i);
			System.out.println(ch);
		}
		
	}

今天的学习内容主要掌握String类方法的使用,关于创建字符串我们还用直接赋值的方法,其他创建字符串的方法混个眼熟就行。好了,今天的学习到此结束,我是一米八、有腹肌、低于半小时你报警的Loveletter,觉得内容不错的小伙伴可以点点关注,我们下篇博文见,再见!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值