• 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
    			}
    
    		}
    
  • 相关阅读:
    javascript类的封装『转』
    闭包概念
    继承
    理解面向对象
    cookie的使用
    开园啦。。。
    Myslq 之常用命令
    Myslq 之修改提示符
    Myslq 之登陆、退出
    Javascript 之 Number
  • 原文地址:https://www.cnblogs.com/liqbk/p/12896655.html
Copyright © 2020-2023  润新知