Object类
Java.lang.Object类.根类,所有类的父类
不管是JavaAPI提供的类,还是自己自定义的类都是继承于object类,具有此类的方法
主要的方法有四个:
- toString();
获取对象的详细信息.打印出对象变量的时候自动调用toString()方法,把对象的信息通过字符串返回
默认信息:对象地址
- equals();
两个对象比较判断方法;
在Object类中,equals()方法是 == 符号比较
== 比较对象的地址
比较对象的内容,如果内容相等,返回true.反之false;
不重写,默认调用用hashCode():用对象地址值进行比较
此方法在自定义的类中要重写,重写可比较其他的内容
- hashCode();
返回哈希码:对象唯一标识符,对象的签名(id);返回对象的物理地址(哈希码);
重写equals()方法,必须重写hashCode()方法
保证两个对象的equals()的比较内容相等,同时两个相同的对象的哈希码也相同.
利用:对象中的属性进行比较
- getClass();
获取对象的类型,识别对象的类型进行判断
- GC垃圾回收
垃圾回收机制,Java对象的变量(引用),有作用范围.
有调用对象的作用范围
垃圾回收器,作为一个线程运行,不清楚的情况下,对内存堆中已经死亡或者长时间没有使用的对象,进行垃圾回收.程序员不能实时调用垃圾回收器对对象进行回收
GC确定对象是不可使用的,GC回收这些对象内存空间,程序员手动执行System.gc();通过GC运行,不能保证GC一定会运行
总结原理:
- Java虚拟机(JVM)自动检测内存资源,资源紧张的时候,通过System.gc();让虚拟机回收资源,重新利用
目的:让Java程序有足够资源支持运行
- 识别对象的引用(变量)是否超过作用(域)范围,回收对象内存,从而达到回收资源,垃圾处理的作用
- System.gc()方法调用垃圾对象中finalize()清除没有引用的对象;虚拟机(JVM)控制垃圾回收器最多调用一次finalize()方法
finalize()方法:Object类中protected修饰符的方法.
- 功能:实现资源清理,回收无引用对象的资源.GC在回收对象之前调用此方法
GC:System.gc(),由虚拟机控制回收内存资源(总)
Finalize():调用本类的对象,清除本类对象的垃圾(本)
- String类
Java.lang.String:字符串都是属于对象的
字符串的值是不可改变的,增加字符串后创建了新的字符串
字符串与数组类似,字符串也是有长度
数组:length 长度属性,字符串:length();长度的方法
常用方法:
// 字符串类中的常用方法 // 1.连接 str = "中央空调".concat("是zzy"); System.out.println(str); // 2.通过下标查询字符 char cha = str.charAt(4); char cha2 = str.charAt(5); System.out.println(cha+" "+cha2); // 3.测试字符串是否以指定的后缀结束 boolean res = "JavaSE07.doc".endsWith(".doc"); System.out.println(res); // 4.indexOf():通过字符串/字符查询首次的下标 String email = "[email protected]"; int index = email.indexOf("@qq.com"); System.out.println(index);//6 index = email.indexOf('q'); System.out.println(index);//7 // 5.lastIndexOf():通过字符串/字符查询最后一次的下标 index = email.lastIndexOf("com"); System.out.println(index); // 查询不到字符串,返回下标是-1 index = email.lastIndexOf("好"); System.out.println(index); // 6.字符串截取 subString str = "https://www.baidu.com/s?ie=utf-8&wd=abc"; // subString(开始截取下标);从开始一直到结束 str2 = str.substring(22); System.out.println(str2); // subString(开始截取下标,结束下标);[截取下标,结束下标) str2 = str.substring(1,4); System.out.println(str2); // 找到关键字符: / str2 = str.substring(str.lastIndexOf('/')+1); System.out.println(str2);//s?ie=utf-8&wd=abc // 7.split("字符串") 根据字符串,拆分字符串 str2 = str.substring(str.lastIndexOf("?")+1); System.out.println(str2); String[] ary2 = str2.split("&"); System.out.println(Arrays.toString(ary2));//[ie=utf-8, wd=abc] String[] ary3 = ary2[1].split("="); System.out.println(Arrays.toString(ary3));//[wd, abc] // 8.把字符串转化成字符数组 char[] chs = str.toCharArray(); System.out.println(Arrays.toString(chs)); // 9.清空前后空格 str2 = " admin "; str2 = str2.trim(); System.out.println(str2);
- StringBuffer和StringBuilder
String:长度不可变,固定.对字符串进行修改,创建新字符串
StringBuffer 和StringBuilder长度是可变,字符串修改的效率更高
StringBuffer:线程安全,可同步访问,特点比builder效率更低
StringBuilder:线程不安全的.无法同步访问。特点效率比buffer高