JAVA笔记 常用类_Object类/String类(字符串反转,去重)/StringBuffet类

API - Application Program Interface

  • 类的说明书:即叫什么(类名)
    有什么属性(类的解释)
    有什么(属性,方法,构造方法)
    具体如何做(每个方法的使用说明)

Object类:超类(所有类的父类)

每个类都使用 Object 作为超类,所以所有对象(包括数组)都可以实现这个类的方法。

  • hashCode() : 可以理解为对象在内存的位置信息
public static void main(String[] args){
		Object obj1 = new Object();
		System.out.println(obj1 .hashCode());
	}

结果

  • toString() :以字符串的形式返回当前对象信息,建议每个子类都重写
//自动生成(格式并不好看,可以自行更改)
@Override
	public String toString() {
		return "Test [getClass()=" + getClass() + ", hashCode()=" + hashCode() + ", toString()=" + super.toString()
				+ "]";
	}
  • equals

1 Object类的equals方法内部使用 == 判断对象的地址是否相等
2 但是在实际开发中,更多的是比较对象的内容
我们认为 两个对象的内容完全一致,就认为俩对象相等
所以,建议Object的子类都重写equals,用于比较对象内容而非地址

public class Student {
	String name;

	public Student(String name) {
		this.name = name;
	}
	
}
public static void main(String[] args){
		Student stu1 = new Student("张三");
		Student stu2 = new Student("张三");
		if(stu1.equals(stu2)){
			System.out.println("等于");
		}else{
			System.out.println("不等于");
		}
	}

结果

  • equals重写
public class Student {
	String name;

	public Student(String name) {
		this.name = name;
	}
	
	@Override
	public boolean equals(Object obj) {
		Student stu = (Student) obj;
		if(this.name.equals(stu.name)){
			return true;
		}
		return false;
	}
}

再次运行主函数

  • equals 和 == 的区别?
    1 在Object类中 ,都是比较对象的地址
    2 在其他子类中 , 一般都重写了equals,用于比较对象内容
    3 equals是方法

String类

  • String类,不能被继承,Java 程序中的所有字符串(如 “abc” )是此类的实例实现。 程序中任何一个字符串值都是String类的对象。字符串是常量,它们的值在创建之后不能更改(平时改变的是String类对象的引用而不是它的值本身)。
  • replace(): 替换使用“A”替换字符串序列中所有与“a”匹配的子字符串。该替换从字符串的开头朝末尾执行,例如,用 “b” 替换字符串 “aaa” 中的 “aa” 将生成 “ba” 而不是 “ab”。
  • replaceAll():替换此字符串所有匹配给定的正则表达式的子字符串(用replace替换的时候不可以使用正则表达式)。
  • split():根据给定正则表达式的匹配拆分此字符串。
static public void main(String[] args){ 
		String str1 = "java".replace("a", "A");//替换字符
		System.out.println(str1);
		String str2 = "java123".replaceAll("\\d", "A");//按正则表达式替换字符
		System.out.println(str2);
		String str = "java123";
		String[] str3 = str.split("\\d");
		System.out.println(Arrays.toString(str3));
		String[] str4 = str.split("");//按正则表达式截取转换数组
		System.out.println(Arrays.toString(str4));
		String str5 = str.substring(1);//从下标“1”开始,截取下标1之后的字符串返回
		System.out.println(str5);
		char[] str6 = str.toCharArray();//拆分成字节型数组
		System.out.println(Arrays.toString(str6));
		System.out.println("  java  ".trim());//过滤前后空格
		//(stataic) valueOf(参数) 可以将任意数据类型的数据转为字符串返回
		System.out.println(String.valueOf(true));//转换后true不再是布尔类型而是字符串类型
		char str7 = str.charAt(2);//返会字符串中下标为2的字符
		System.out.println(str7);
	}

在这里插入图片描述

package com.Fx;

import java.util.Arrays;

public class StringTest {
	public static void main(String[] args) {
		System.out.println("1."+"java".concat("222"));//拼接
		System.out.println("2."+"java".contains("2"));//判断包含
		System.out.println("3."+"com.java".startsWith("com."));//判断前缀
		System.out.println("4."+"java.txt".endsWith(".txt"));//判断后缀
		//忽略大小写判断字符串相等
		String s2 = new String("Java");
		String s3 = new String("java");
		System.out.println("5."+s2.equalsIgnoreCase(s3));
		
		byte[] bytes = "abcABC".getBytes();//转换为byte类型的数组
		System.out.println("6."+Arrays.toString(bytes));
		
		//返回字符下标(找不到返回-1)
		int i1 = "Java".indexOf('o');
		int i2 = "Java".indexOf('a',2);//下标2以后的字符
		int i3 = "Java".indexOf("av");
		System.out.println("7."+i1);
		System.out.println("7."+i2);
		System.out.println("7."+i3);
		
		int length = "".length();//返回字符串长度
		System.out.println("8."+length);
		System.out.println("8."+"".isEmpty());//判断是否为空
	}

}

在这里插入图片描述

  • 部分正则表达式

在这里插入图片描述

  • 反转
package com.API;

import java.util.Arrays;

public class A {
	public static void main(String[] args) {
		char[] i = "java".toCharArray();
		System.out.println(Arrays.toString(i));	
		
		char tem;
		for (int j = 0; j < i.length/2; j++) {
			tem = i[j];
			i[j] = i[i.length-j-1];
			i[i.length - j -1] = tem;
		}
		System.out.println(Arrays.toString(i));
		
	}

}
  • 去重
package com.API;

public class B {
	public static void main(String[] args) {
		String str = "soutssysaadvcb";
		String str1 = "";
		for (int i= 0; i < str.length(); i++) {
			char t = str.charAt(i);
			str1 = (str1.indexOf(t)==-1)
					?str1.concat(String.valueOf(t))
							:str1;
		}
		System.out.println(str1);
		
		
	}
}

Stringbuffer

  • 线程安全的可变字符序列. 效率低
package com.Fx;

public class StringBuffertest {
	public static void main(String[] args) {
		//stringbuffer提供了一些可以改变字符序列的方法
		StringBuffer sb = new StringBuffer("java");
		sb.setCharAt(1, 's');//替换下标为1的字符为's'
		System.out.println("1. "+sb);
		
		sb.deleteCharAt(1);//删除下标为1的字符
		System.out.println("2. "+sb);
		
		sb.insert(2, 1.5);//将下标为2的字符替换为''字符,""字符串,或者数字(不限于整数)
		System.out.println("1. "+sb);
		
		// append()返回的是SB对象的一个引用
		StringBuffer sb1 = new StringBuffer("java");
		StringBuffer sb2 = sb1.append(1);
		StringBuffer sb3 = sb1.append("big");
		StringBuffer sb4 = sb1.append(true);
		System.out.println(sb1);// java1bigtrue
		System.out.println(sb2);// java1bigtrue
		System.out.println(sb3); // java1bigtrue
		System.out.println(sb4); // java1bigtrue
	}

}

StringBuilder

  • 不保证线程安全的可变字符序列.与StringBuffer 的API完全一致, 效率高.

包装类

  • 包装类主要指 将8种基本数据类型包装成对应的类.
    在这里插入图片描述
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值