JavaSE07

Object类

Java.lang.Object类.根类,所有类的父类

不管是JavaAPI提供的类,还是自己自定义的类都是继承于object类,具有此类的方法

主要的方法有四个:

  1. toString();

获取对象的详细信息.打印出对象变量的时候自动调用toString()方法,把对象的信息通过字符串返回

默认信息:对象地址

 

  1. equals();

两个对象比较判断方法;

在Object类中,equals()方法是 == 符号比较

== 比较对象的地址

比较对象的内容,如果内容相等,返回true.反之false;

不重写,默认调用用hashCode():用对象地址值进行比较

此方法在自定义的类中要重写,重写可比较其他的内容

 

  1. hashCode();

返回哈希码:对象唯一标识符,对象的签名(id);返回对象的物理地址(哈希码);

重写equals()方法,必须重写hashCode()方法

保证两个对象的equals()的比较内容相等,同时两个相同的对象的哈希码也相同.

利用:对象中的属性进行比较

 

  1. getClass();

获取对象的类型,识别对象的类型进行判断

 

  • GC垃圾回收

垃圾回收机制,Java对象的变量(引用),有作用范围.

有调用对象的作用范围

垃圾回收器,作为一个线程运行,不清楚的情况下,对内存堆中已经死亡或者长时间没有使用的对象,进行垃圾回收.程序员不能实时调用垃圾回收器对对象进行回收

GC确定对象是不可使用的,GC回收这些对象内存空间,程序员手动执行System.gc();通过GC运行,不能保证GC一定会运行

 

总结原理:

  1. Java虚拟机(JVM)自动检测内存资源,资源紧张的时候,通过System.gc();让虚拟机回收资源,重新利用

目的:让Java程序有足够资源支持运行

  1. 识别对象的引用(变量)是否超过作用(域)范围,回收对象内存,从而达到回收资源,垃圾处理的作用
  2. System.gc()方法调用垃圾对象中finalize()清除没有引用的对象;虚拟机(JVM)控制垃圾回收器最多调用一次finalize()方法

 

finalize()方法:Object类中protected修饰符的方法.

  1. 功能:实现资源清理,回收无引用对象的资源.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高

猜你喜欢

转载自blog.csdn.net/CXY_ZPH/article/details/81634357
07