java学习day11--API--Object类-String类-StringBuilder类

API

Object类

1概念

​ 类 Object 是类层次结构的根类。每个类都使用 Object 作为超类。

​ 所有对象(包括数组)都实现这个类的方法。

2 创建对象
public Object()
3 常用方法
方法名 解释
public String toString() 返回该对象的字符串表示。
public int hashCode() 返回该对象的哈希码值
public boolean equals(Object obj) 指示其他某个对象是否与此对象“相等”。
public final Class<?> getClass() 返回此 Object 的运行时类
4 测试
package cn.tedu.api;
		//这个类用来测试  Object的使用
		//总结:
		//1、在打印对象的时候,默认打印的就是地址值(原因是自动调用Object里的toString()..)。但是如果想打印属性值,就需要重写toString()...
		//2、如果要比较两个对象间的地址值,就可以使用默认的Object提供的方式。但是,如果想要比较对象间的属性值,就需要重写equals()
		public class Test1_Object {
			public static void main(String[] args) {
				// 创建对象测试
				Student s = new Student("皮皮霞", 20);
				// 2、需求:想查看对象的属性值,但是不想一个一个去get()
				// System.out.println( s.getName() + s.getAge() );
				// 底层默认调用了Object的toString(),默认打印了对象的地址值cn.tedu.api.Student@15db9742
				// 怎么做,才能 不看地址值 而 看属性值?--重写父类原有的toString()
				System.out.println(s);// Student [name=皮皮霞, age=20]

				System.out.println(s.hashCode());// 3、用来返回对象的哈希码值--相当于对象在内存中的编号,每个对象编号都不一样。

				Class clazz = s.getClass();// 4、返回该对象的Class类型
				System.out.println(clazz);// class cn.tedu.api.Student

				Student s2 = new Student("皮皮霞", 20);
				// 5、equals():比较两个对象是否相等,默认使用Object提供的==比较
				System.out.println(s.equals(s2));
				// == 比较基本类型时,直接比值本身。 比较引用类型时,比较的是地址值。
				System.out.println(2 == 2);// true

				// 6、需求:别再比较两个对象的地址值了!!需要去比较两个对象间的属性值
				// 如果两个对象的每个属性值都完全一样,就让equals()认为两个对象是相同的,返回true
			}
		}
		// 创建Student类
		// class Student extends Object{//1、每个类都继承了Object
		class Student {
			// 构造方法
			public Student() {
			}

			public Student(String name, int age) {
				this.name = name;
				this.age = age;
			}

			private String name;
			private int age;

			// get() set() 右键-source-
			public String getName() {
				return name;
			}

			public void setName(String name) {
				this.name = name;
			}

			public int getAge() {
				return age;
			}
			public void setAge(int age) {
				this.age = age;
			}
			// 2、想要打印属性值而不是默认的地址值,需要重写Object的toString()
			// 右键-source-toString()...-ok
			@Override
			public String toString() {
				return "Student [name=" + name + ", age=" + age + "]";
			}
			// 3、目前equals比较的是两个对象间的地址值!我想要比较对象间的属性值!!
			/*
			@Override
			public boolean equals(Object obj) {
				//把参数转成Student类型,是为了同一类型作比较
				Student param = (Student) obj ;
				//开始比较,拿着两个对象的属性比较
				if( this.name == param.name &&  this.age==param.age ) {
					return  true;//当两个对象的属性值完全相同时,就是同一个对象!!
				}
				return false;
			}*/
			//右键-source--hashCode() and equals()... ok
			@Override
			public boolean equals(Object obj) {
				if (this == obj)
					return true;
				if (obj == null)
					return false;
				if (getClass() != obj.getClass())
					return false;
				Student other = (Student) obj;
				if (age != other.age)
					return false;
				if (name == null) {
					if (other.name != null)
						return false;
				} else if (!name.equals(other.name))
					return false;
				return true;
			}
			
		}

String类

1 概念

String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。
字符串是常量;它们的值在创建之后不能更改。
--源码摘抄:public final class String,是一个最终类不能被继承
--源码摘抄:private final char value[];字符串是个常量,因为底层维护了char[]是final的值不能改

2 构造方法
 new String() 
3 常用方法
方法名 解释
char charAt(int index) 返回指定索引处的 char 值。
String concat(String str) 将指定字符串连接到此字符串的结尾。
boolean startsWith(String prefix) 测试此字符串是否以指定的前缀开始。
boolean endsWith(String suffix) 测试此字符串是否以指定的后缀结束。
boolean equals(Object anObject) 将此字符串与指定的对象比较。
int hashCode() 返回此字符串的哈希码。
byte[] getBytes() 将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中
boolean contains(CharSequence s) 当且仅当此字符串包含指定的 char 值序列时,返回 true。
int indexOf(String str) 返回指定子字符串在此字符串中第一次出现处的索引。
boolean isEmpty() 当且仅当 length() 为 0 时返回 tru
int lastIndexOf(String str) 返回指定子字符串在此字符串中最右边出现处的索引。
int length() 返回此字符串的长度。
String replace(char oldChar, char newChar) 返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的
String[] split(String regex) 根据给定正则表达式的匹配拆分此字符串
String substring(int beginIndex) 返回一个新的字符串,它是此字符串的一个子字符串。
String substring(int beginIndex, int endIndex) 返回一个新字符串,它是此字符串的一个子字符串。
char[] toCharArray() 将此字符串转换为一个新的字符数组。
String toLowerCase() 将字符串的大写字母转化成小写字母
String toUpperCase() 将字符串的小写字母转化成大写字母
String trim() 返回字符串的副本,忽略前导空白和尾部空白。
static String valueOf(int i) 返回 int 参数的字符串表示形式。把int型转化为字符串
4 测试
package cn.tedu.api;

		import java.util.Arrays;

		//这个类用来测试 字符串:字符串底层维护了一个char[]
		public class Test2_String {
			public static void main(String[] args) {
				//1、创建对象
				char[] cs = new char[] {'a','b','c'};
				String s = new String(cs) ; // 触发了含参构造,对象存在堆内存中
				String s2 = "abc" ;//简写,对象存在 堆内存中的常量池中。常量池高效。相同数据只会存一次。
				
				//2、常用方法
				System.out.println(  s.charAt(1)  );  //  获取指定下标对应的字符 
				System.out.println(  s.concat("opq")  );// 在原有数据的末尾处 拼接指定字符串
				System.out.println(  s.contains("bc")  );// 判断是否包含指定的字符串
				System.out.println(  s.endsWith("c") );// 判断是否以指定的字符串结尾
				System.out.println(  s.equals("abc") );// 判断是否和指定的字符串  相等
				System.out.println(  s.hashCode() ); // 获取 字符串在内存中的哈希码值
				System.out.println(  s.isEmpty() );	// 判断字符串 是否为空
				System.out.println(  s.length() );   //获取字符串的长度
				
				s =  "abcdefa" ; //修改s的值
				System.out.println(  s.indexOf("a") +"======");// 获取 指定字符串  第一次出现的下标值
				System.out.println(  s.lastIndexOf("a") );// 获取 指定字符串 最后一次出现的下标值
				System.out.println(  s.replace('a','1') );//替换字符
				System.out.println(  s.startsWith("ab") );// 判断是否以指定的前缀开始
				System.out.println(  s.substring(1) ); // 从指定下标处 开始截取字符串
				System.out.println(  s.substring(1,5) );//从指定位置开始,到指定位置结束 截取字符串 [1,5),含头不含尾
				System.out.println(  s.toLowerCase() );//把字符串全转小写
				System.out.println(  s.toUpperCase() );//把字符串全转大写
				
				s = "    a  c  123     " ; 
				System.out.println(  s.trim() );  //删除前面和后面的多余空格
				
				String num = String.valueOf(123);//把各种其他类型的数据转成String类型
				
				s =  "123.abc.xyz" ;
				//java中有一些特殊的符号 | ?  , 。  .  如果程序没有正确的解析时,你需要转义  \\
				String[] strs = s.split("\\.") ;//按照指定的字符串切割
				System.out.println( Arrays.toString(strs)  );//[123, abc, xyz]
				
				char[] cs2 = s.toCharArray() ;
				System.out.println( Arrays.toString(cs2)  );//[1, 2, 3, ., a, b, c, ., x, y, z]
			}
		}

StringBuiler类

1 概念

一个可变的字符序列。优化了字符串操作。

2 构造方法
StringBuilder() 
    构造一个不带任何字符的字符串生成器,其初始容量为 16 个字符。  	      
3 常见方法
方法 解释
StringBuilder append(Object obj) 追加 Object 参数的字符串表示形式。
4 测试代码
package cn.tedu.api;

		//这个类用来测试  StringBuilder
		public class Test3_StringBuilder {
			public static void main(String[] args) {
				// method();//用+拼接,慢
				method2();// 用工具拼接,快!!
			}
			// 用工具拼接,快!!
			public static void method2() {
				String str = "abcdefghijklmnopqrstuvwxyz";

		//		StringBuilder sb = new StringBuilder() ;
				StringBuffer sb = new StringBuffer() ;
				// 2、把字符串拼接100次,并打印结果
				long start = System.currentTimeMillis(); // 计时开始ms
				for (int i = 0; i < 10000; i++) {
					sb.append(str)  ; // 通过工具类拼接字符串
				}
				long end = System.currentTimeMillis(); // 计时结束ms

				System.out.println(end - start);// 1ms
			}
			// 使用+拼接字符串
			public static void method() {
				// 1、创建字符串
				String str = "abcdefghijklmnopqrstuvwxyz";

				String res = ""; // 定义变量,记录拼接结果
				// 2、把字符串拼接100次,并打印结果
				long start = System.currentTimeMillis(); // 计时开始ms
				for (int i = 0; i < 10000; i++) {
					res = res + str; // 通过+拼接字符串
				}
				long end = System.currentTimeMillis(); // 计时结束ms

				System.out.println(end - start);// 3046ms
			}

		}

猜你喜欢

转载自www.cnblogs.com/liqbk/p/12896655.html