java视频学习笔记-7-(Object,Scanner,String,StringBuffer)

本文是关于Java API的学习笔记,涵盖了Object类的基本方法,如toString(),equals()和clone();Scanner类的使用,包括用户输入和处理;深入探讨了String类的特性,如equals(),substring(),以及转换和判断功能;最后介绍了线程安全的StringBuffer类及其常用操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

API(Application Programming Interface)

指JDK中提供的各种功能的java类

1.object类

(1)ToString 重写此方法 可以直接右键 get ToString
(2)equals 指示其他某个对象是否与此对象相等(基本类型:值是否相等,引用类型:地址值是否相等)
                     这个方法默认比的是地址值(意义不大),也需要重写一般用来比较对象的成员变量值是否相等
                     字符串的equals()方法是比较字符串的内容是否相等   可以直接右键 get 
(3)clone 创建并返回此对象的一个副本 创建的副本与原对象不在一个内存

2.Scanner类

用于获取用户的键盘输入  构造方法:public Scanner(InputStream source)
System类下有一个静态的字段:public static final InputStream in
​​​​​​“标准”输入流。 该流已经打开,该流对应于键盘输入或由主机环境或用户指定的另一个输入源。

基本格式
(1)hasNextXxx() 判断是否还有下一个输入项  
(2)nextXxx() 获取下一个输入项
默认情况下,Scanner使用空格,回车符作为分隔符   nextLine()获取一个String类型的值 

容易出现的问题及解决方法:
         先获取一个数值,再获取一个字符串,后面的会把回车符\n获取为字符串,及换行符的问题
         解决方法:把所有的数都先按照字符串读取,然后要什么再对应的转换成什么

3. String类

字符串是常量 
构造方法:
(1)public String(byte[] bytes) :把字节数组转成字符串
(2)public String(byte[] byte,int index,int length) :把字节数组的一部分转成字符串
(3)public String(char[] value) :把字符数组转成字符串
(4)public String(char[] value,int index,int length) :把字符数组的一部分转成字符串
(5)public String(String original) :把字符串常量转成字符串

判断功能

boolean equals(Object obj) :比较字符串的内容是否相同,区分大小写
boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写
boolean contains(String str):判断大字符串中是否包含小字符串
boolean startsWith(String str):判断字符串是否以某个指定的字符串开头
boolean endsWith(String str):判断字符串是否以某个指定的字符串结尾
boolean isEmpty():判断字符串内容是否为空

获取功能

int length():获取字符串的长度
char charAt(int index):获取指定索引位置的字符
int indexOf(int ch):返回指定字符在此字符串中第一次出现处的索引(int类型的原因是'a'和97都可以代表'a')
int indexOf(String str):返回指定字符串在此字符串中第一次出现处的索引
int indexOf(int ch, int fromIndex):返回指定字符在此字符串中从指定位置后第一次出现处的索引
int indexOf(String str, int fromIndex):返回指定字符串在此字符串中从指定位置后第一次出现处的索引
String substring(int start):从指定位置开始截取字符串,默认到末尾
String substring(int start,int end):从指定位置开始到指定位置结束截取字符串

转换功能

byte[] getBytes():把字符串转换为字节数组
char[] toCharArray():把字符串转换为字符数组
static String valueOf(char[] chs):把字符数组转换成字符串
static String valueOf(int i):把int类型的数据转成字符串
                注:String类的valueOf方法可以把任意类型的数据转换成字符串
String toLowerCase():把字符串转成小写
String toUpperCase():把字符串转成大写
String concat(String str):把字符串拼接

其他功能

String replace(char old,char new):替换功能
String replace(String old,String new)
String trim() :去除字符串两端空格
int compareTo(String str):按字典顺序比较两个字符串
int compareToIgnoreCase(String str)


字符串的方法:public int length():返回字符串的长度

字符串一旦赋值就不能改变,但是s+="world"这种并不属于
String类重写了equals()方法,比较的是内容是否相同

String的转换功能,获取功能,判断功能,替换功能
String作为参数传递,(即便是引用类型)效果和基本类型作为参数传递是一样的

String字面值对象和构造方法创建对象的区别:前者会创建2个对象,后者创建1个对象

实现一个用户名和密码检验功能

import java.util.Scanner;

public class StringTeat {
	public static void main(String[] args) {
		//定义用户名和密码
		String username = "admin";
		String password = "admin";
		
		//给三次机会
		for(int x=0;x<3;x++) {
			
			//键盘录入用户名和密码
			Scanner sc = new Scanner(System.in );
			System.out.println("请输入用户名:");
			String name = sc.nextLine();
			System.out.println("请输入密码:");
			String pwd = sc.nextLine();
			
			//比较用户名和密码
			if (name.equals(username) && pwd.equals(password)) {
				//如果都相同,则登陆成功
				System.out.println("登陆成功");
				break;
			}else {
				//如果有一个不同,则登录不成功
				//如果是第0次,应该换一种提示
				if((2-x) == 0) {
					System.out.println("账号被锁定");
				}else {
					System.out.println("登陆失败,你还有"+(2-x)+"次机会");
				}
			}
		}
	}
}

4.StringBuffer类

线程安全的可变字符序列(即字符串),一个类似于String的字符缓冲区,但不能修改
线程安全(多线程讲解):
       安全--同步--数据是安全的
       不安全--不同步--效率高一点

StringBuffer和String的区别:
(1)前者长度和内容可变,后者不可变
(2)如果使用前者做字符串的拼接,不会浪费太多的资源

StringBuffer的构造方法:
(1)public StringBuffer():无参构造方法
(2)public StringBuffer(int capacity):指定容量的字符串缓冲对象( 容量为理论值,长度为实际值)
(3)public StringBuffer(String str):指定字符串的字符串缓冲区对象

StringBuffer的添加功能:
(1)public StringBuffer append(String str):可以把任意类型数据添加到字符串缓冲区里面,并返回字符串缓冲区本身
(2)public StringBuffer insert(int offset,String str):在指定位置把任意类型的数据插入到字符串缓冲区里面,并返回字符串缓冲区本身
StringBuffer的删除功能
(1)public StringBuffer deleteCharAt(int index):删除指定位置的字符,并返回本身
(2)public StringBuffer delete(int start,int end):删除从指定位置开始,指定位置结束的内容,并返回本身
StringBuffer替换功能
(1)public StringBuffer replace(int start,int end,String str):从start开始到end用str替换
StringBuffer翻转功能
(1)public StringBuffer reverse()
StringBuffer截取功能(返回值是String类型,本身没有发生改变)
(1)public String substring(int start)
(2)public String substring(int start,int end)

StringBuffer把数组拼接成一个字符串

public class StringBufferTest2 {
	public static void main(String[] args) {
		int[] arr = {44,33,55,11,22};
		
		String s = arrayToString2(arr);
		System.out.println("s:"+s);
	}
	
	//把数组拼接成一个字符串
	public static String arrayToString2(int[] arr) {
		StringBuffer sb = new StringBuffer();
		
		sb.append("[");
		for (int i=0; i<arr.length;i++) {
			if (i==arr.length-1) {
				sb.append(arr[i]);
			}else {
				sb.append(arr[i]).append(",");
			}
		}
		sb.append("]");	
		
		return sb.toString();
	}
}

StringBuffer反转

import java.util.Scanner;

public class StringBufferTest3 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入数据:");
		String s = sc.nextLine();
		
		String s1 = myReverse2(s);
		System.out.println("s1:"+s1);
		
	}
	public static String myReverse2(String s) {
		return new StringBuffer(s).reverse().toString();
	}
}

判断一个字符串是否是对称的

import java.util.Scanner;

public class StringBufferTest4 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入一个字符串:");
		String s = sc.nextLine();
		
		boolean b = isSame(s);
		System.out.println("b:"+b);
	}
	
	public static boolean isSame(String s) {
		return new StringBuffer(s).reverse().toString().equals(s);
	}
	/*
	public static boolean isSame(String s) {
		//把字符串转成字符数组
		char[] chs = s.toCharArray();
		boolean flag = true;
		
		for (int start = 0, end = chs.length - 1; start <= end; start++, end--) {
			if(chs[start] != chs[end]) {
				flag =false;
				break;
			}
		}
		return flag;
	}
	*/
}

String,StringBuffer, StringBuilder的区别:
(1)String内容是不可变的,StringBuffer和StringBuilder内容都是可变的
(2)StringBuffer是同步的,数据安全,效率低;StringBuilder是不同步的,数据不安全,效率高

StringBuffer和数组的区别:
     二者都可以看出是一个容器,装其他的数据。但是,StringBuffer的数据是一个字符串数据
     而数组可以放置多种数据,但必须是同一种数据类型的

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值