String类

String

1.赋值方式

①直接赋值:

String Name1 = "Grit";

②通过创建新的对象来赋值:

String Name4 = new String ("Grit");

区别:
对于①存在共享内存(值相同,从而存放值相同,出现这种的现象的原因,是存在常量池);/节省内存
对于②每次都是创建新对象,即使值相同,地址也不会相同。

2.String类常用方法

2.1判断开头结尾

String name = "Grit" ;
			System.out.println(name.startsWith("G"));//判断是否以G开头
			System.out.println(name.endsWith("t"));//判断是否以t结尾
			System.out.println(name.length());//获取字符有多少个字符串

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

2.2长度以及去掉两端空格

//如果在中间及两边加上空格
String name = " Gr it ";
			System.out.println(name.length());
			name = name.trim();//去掉字符串两端空格
			System.out.println(name.length());

运行结果:
在这里插入图片描述
可见:①空格也算长度②变量.trim();只能去掉两端空格,中间的去不掉;

2.3去除符号

String numbers = "110#120#114#119";
			String [] strs = numbers.split("#");//将字符串进行分割,分割之后结果是 {"","","",}返回值是数组类型,所以需要定义一个String类型的数组,来接收返回后的数组。
		    for(String str : strs) {		//for-each循环         for(数据类型 新变量:旧变量)
		    	System.out.println(str);
		    }

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

2.4 替换

 String numbers = "110#120#114#119";
		    numbers = numbers.replaceAll("#", "@");//将所有#替换成@,注意不能涉及$
		    System.out.println(numbers);

结果:
在这里插入图片描述
同理我们可以用replaceAll 来去除所有空格

String numbers = "    110     120      114       ";
			 numbers = numbers.replaceAll(" ", "");
			 System.out.println(numbers);
			 System.err.println(numbers);//输出颜色为红色,有时候会错乱顺序;
			 

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

2.5获取指定位置的字符

String letters = "一二三四五六日";
			int day = 1 ;
		//	System.out.println(letters.charAt(0));//获取指定位置的字符,从0开始
			String week = "星期"+"一二三四五六日".charAt(day-1);
			System.out.println(week);

通过获取指定位置的字符,可以引申到获得星期几;
结果:
在这里插入图片描述

2.6截取

String letters = "ABeBa";
			letters = letters.substring(0);//从指定位置截取字符串,从0开始;
			System.out.println(letters);
			
			//重载的方法
			String letter = "ABeBa";
			letter = letter.substring(0,2);//从指定位置截取字符串,至指定位置结束(不包含这个数);
			System.out.println(letter);
			

运行结果:
在这里插入图片描述
可以拿来做身份证截取出生年月等;
同时:

Integer.parseInt(letter);//Integer是int的包装类,parseInt() 方法用于将字符串参数作为有符号的十进制整数进行解析。所以该用法为强制类型转换,将字符串转换为Int型。

2.7查找字符所处的顺序

String letters = "ABeBA";
			int position = letters.indexOf("A");//获取字符串的位置,返回值是Int类型的
			System.out.println(position);
			position = letters.indexOf("AB");//结果还会是0
			System.out.println(position);
			
			//从后往前找的
			position = letters.lastIndexOf("A");
			System.out.println(position);

结果:
在这里插入图片描述
可以用来获得“.”的位置,从而结合substrting 来截取拓展名。

3. “==”与 String类中 equals方法

3.1 “==”

如果基本数据类型,比较的是值是否相等;引用类型比较地址是否相等;
实例代码:

		int a = 1 ;
		int b = 1 ;
		System.out.println(a==b);
		
		Test t1 = new Test();
		Test t2 = new Test();
		System.out.println(t1==t2);

在这里插入图片描述

3.2 equals

Object 类 中 equals 比较的是地址是否相同;
String类中equals方法:比较内容是否完全相同;(大小写也需要区分)//先比较地址,再比较是否为String,再逐字比较;

//①比较地址
		String name1 = "Grit";
		String name2 = "Grit";
		System.out.println(name1.equals(name2));
		
		//②比较类型是否相同,为String类
		Date date = new Date();
		Object obj = date;
		System.out.println(name1.equals(date));

		//③逐字比较
		String name3 = new String ("Grit");
		System.out.println(name1.equals(name3));
		
		//如果大小写不同
		String name4 = "GRIT";
		System.out.println(name1.equals(name4));
		
		//忽略大小写比较
		String name5 = "GRIT";
		System.out.println(name1.equalsIgnoreCase(name5));//equalsIgnoreCas是忽略大小写比较
		

对应结果:
在这里插入图片描述

4.StringBuffer

如果用普通方法,进行拼接

		String letters = "a";
		letters = letters + "a";
		letters = letters + "a";
		letters = letters + "a";
		letters = letters + "a";
		letters = letters + "a";

问题:每执行一行代码,则创建一个新的String类型对象
(阿里巴巴规定,三个及以上不可以用普通拼接方式)

StringBuffer的用法及优点

StringBuffer sb = new StringBuffer("a");
		sb.append("a");
		sb.append("a");
		sb.append("a");
		sb.append("a");
		sb.append("a");

优点:程序执行完之后,还是一个对象

5.toString

toString(); Object类 中的用于输出地址;
直接输出对象,实质输出的是该对象调用toString方法的返回值;

作业:

在这里插入图片描述

1.

思路:直接用split即可

public class c1 {
		public static void main(String[] args) {
			
			String name = "卡巴斯基#杀毒软件#免费版#俄罗斯";
			String nam [] = name.split("#");
			//用Split分割完后,是以数组方式存储,所以需要定义一个数组来存储
			//接下来用 for each  循环进行遍历
			for (String nam1 : nam) {
				System.out.println(nam1);
			}
			
		}
}

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

2

思路:通过substring 进行截取;其中需要用到求余运算;截取的是16-17位;(因为第一个数字代表开始截取的位置,第二个数字代表终止的位置(不包含这个数))

public class c2 {
	public static void main(String[] args) {
		
		String Id = "411330199909099892";
		int Sex = Integer.parseInt(Id.substring(16,17));
		if (Sex % 2 ==0) {
			System.out.println("是女孩");
		}
		else {
			System.out.println("是男孩");
		}
	}
}

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

3

思路:
首先是需要得到输入的值,这个本次课程并没有涉及到,所以需要去查资料,
查阅得到

import java.util.Scanner;
Scanner s = new Scanner(System.in);
long n =s.nextLong();
上面就是提取,和键入long类型的示例。
对应键入类型:
int——int num = s.nextInt();
float——float num = s.nextFloat()
String——String str = s.nextLine();

那么总共需要键入三次,用户名长度不少于6位,密码不少于8位,且两次密码需要一致;
长度位数 可以用 .length 获得
比较密码的话可以用 .equal获得

package com.jd.test;

import java.util.Scanner;

public class c3 {
	public static void main(String[] args) {
		//获得ID
		System.out.print("请输入您想要注册的ID:");
		Scanner a = new Scanner(System.in); 
		String Id = a.nextLine();
		if(Id.length() <6 ) {
			System.out.println("您的注册Id不符合规则,请重新注册");
			return;
		}
		else {
			System.out.print("请输入您想要注册的密码:");	
			Scanner b = new Scanner(System.in); 
			String M1 = b.nextLine();
			if(M1.length() < 8) {
				System.out.println("您的注册密码不符合规则,请重新注册");
				return;
			}
			else {
				System.out.print("请再次输入您想要注册的密码:");
				Scanner c = new Scanner(System.in);
				String M2 = c.nextLine();
				if (M2.length() < 8) {
					System.out.print("您的注册密码不符合规则,请重新注册");
					return;
					}
					else {
						if (M1.equals(M2)) {
							System.out.println("您已注册成功");
							System.out.println("您的账号为:" + Id);
							System.out.println("您的密码为:" + M1);
						}
						else {
							System.out.print("您两次注册密码不一致,请重新注册");
							return;
						}
					}
				}
			}
		}
	}

为方便起见,均以9个“a”,作为标准
运行结果:
1.均正确
在这里插入图片描述
2.账号不符合
在这里插入图片描述
3.账号符合,密码不符合
在这里插入图片描述
4.账号符合,密码不一致
在这里插入图片描述
后记:
作业写得有点久,早上起得有点晚
中午午休之后 又去健身房了
代码写着需要现翻上边的笔记
但是运行起来没什么问题
也刚好把前边的格式改了改
前记统一删除掉,这样就能直接找到对应的东西
而且 老写想法,搞得跟日记一样杂
要做一个 认真学习代码的小菜鸡
不要一天天呢么多抱怨

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值