Java核心基础(十一)


本篇文章内容来自尚硅谷java核心基础免费课程的笔记整理(去掉了一些繁杂多余的内容)。
有零基础或者想看视频学习的可以去官网。
http://www.atguigu.com/
因为在深入学习研究公开的已知漏洞时发现自己的java功底不够。
于是又开了个新坑。

“一个好的黑客,必须要懂编程”- - 尹毅《代码审计 企业级Web代码安全架构》


Object类的使用

 Object类是所有Java类的根父类
 如果在类的声明中未使用extends关键字指明其父类,则默认父类为java.lang.Object类

public class A {

}

等价于

Public class A extends Object {

}

Object类中的主要结构(方法)

Object类中的主要结构(方法)

== 运算符 及 equals():

  equals():所有类都继承了Object,也就获得了equals()方法。还可以重写。
    只能比较引用类型,其作用与“==”相同,比较是否指向同一个对象。
    格式:obj1.equals(obj2)

  特例:当用equals()方法进行比较时,对类File、String、Date及包装类(Wrapper Class)来说,是比较类型及内容而不考虑引用的是否是同一个对象;
    原因:在这些类中重写了Object类的equals()方法。

  当自定义使用equals()时,可以重写。用于比较两个对象的“内容”是否都相等

  重写equals()方法的原则:

    对称性:如果x.equals(y)返回是“true”,那么y.equals(x)也应该返回是“true”。

    自反性:x.equals(x)必须返回是“true”。

    传递性:如果x.equals(y)返回是“true”,而且y.equals(z)返回是“true”,那么z.equals(x)也应该返回是“true”。

    一致性:如果x.equals(y)返回是“true”,只要x和y内容一直不变,不管你重复x.equals(y)多少次,返回都是“true”。

    任何情况下,x.equals(null),永远返回是“false”;x.equals(和x不同类型的对象)永远返回是“false”。

  == 和 equals()的区别:

    1 == 既可以比较基本类型也可以比较引用类型。对于基本类型就是比较值,对于引用类型就是比较内存地址
    2 equals的话,它是属于java.lang.Object类里面的方法,如果该方法没有被重写过默认也是==;我们可以看到String等类的equals方法是被重写过的,而且String类在日常开发中用的比较多,久而久之,形成了equals是比较值的错误观点。
    3 具体要看自定义类里有没有重写Object的equals方法来判断。
    4 通常情况下,重写equals方法,会比较类中的相应属性是否都相等。

toString() 方法

  toString()方法在Object类中定义,其返回值是String类型,返回类名和它的引用地址。

  在进行String与其它类型数据的连接操作时,自动调用toString()方法

Date now=new Date();
System.out.println(“now=+now); 相当于
System.out.println(“now=+now.toString());

  可以根据需要在用户自定义类型中重写toString()方法,如String 类重写了toString()方法,返回字符串的值。

s1=“hello”;
System.out.println(s1);//相当于System.out.println(s1.toString());

  基本类型数据转换为String类型时,调用了对应包装类的toString()方法

   int a=10; System.out.println(“a=”+a);


包装类的使用

 针对八种基本数据类型定义相应的引用类型—包装类(封装类)

 基本数据类型有了类的特点,就可以调用类中的方法,Java才做到了真正的面向对象

基本数据类型及其对应的包装类

基本数据类型包装成包装类的实例 —装箱
   通过包装类的构造器实现:
      int i = 500; Integer t = new Integer(i);
   还可以通过字符串参数构造包装类对象:
      Float f = new Float(“4.56”);
      Long l = new Long(“asdf”); //NumberFormatException
获得包装类对象中包装的基本类型变量 —拆箱
   调用包装类的.xxxValue()方法:
    boolean b = bObj.booleanValue();
 JDK1.5之后,支持自动装箱,自动拆箱。但类型必须匹配。

字符串转换成基本数据类型

  通过包装类的构造器实现:

    int i = new Integer(“12”);

  通过包装类的parseXxx(String s)静态方法:

    Float f = Float.parseFloat(“12.1”);

基本数据类型转换成字符串

  调用字符串重载的valueOf()方法:

    String fstr = String.valueOf(2.34f);

  更直接的方式:

    String intStr = 5 + “”

包装类总结

包装类在实际开发中用的最多的在于字符串变为基本数据类型。

String str1 = "30" ;
String str2 = "30.3" ;
int x = Integer.parseInt(str1) ; // 将字符串变为int型
float f = Float.parseFloat(str2) ; // 将字符串变为float型

文章作者: meta-taamr
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 meta-taamr !