目录
-
一、Object
1.Object
在java继承结构中,java.lang.Object类位于顶端
如果定义一个java类时没有使用extends关键字声明父类,则其父类默认为java.lang.Object类
Object类型的引用变量可以指向任何类型对象
package object;
/**
* Object 对象。东西
*
* Object 是所有类的超类
*
* 使用当前point测试Object 中经常被派生类中写的方法
* @author JaneLee
*
*/
public class Point {
private int x;
private int y;
public Point(int x, int y) {
super();
this.x = x;
this.y = y;
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
@Override
public String toString() {
return "Point [x=" + x + ", y=" + y + "]";
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + x;
result = prime * result + y;
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Point other = (Point) obj;
if (x != other.x)
return false;
if (y != other.y)
return false;
return true;
}
}
package object;
/**
* 测试Point中重写的Object中的方法
* @author JaneLee
*
*/
public class TsetPoint {
public static void main(String[] args) {
/*
* Object 中常被我们重写的第一个方法是:toString
* 这个方法的意思是将当前对象转换为一个字符串
* Object默认实现时返回的字符串格式是:类名@地址
*
*/
Point p = new Point (1,2);
//我们自定义的类不重写则输出通常没有价值
System.out.println(p);
String str = "hello";
/*
* system.out.println(Object o)
* 我们经常将一个对象输出到控制台看他的内容,但是
* 这个方法实际上是将该对象toString方法的返回值
* 输出到控制台,java提供的类如String,StriingBuilder
* 等都重写了这个方法
*/
System.out.println(str);
/*
* 在连接字符串时,非string的类型都会隐式调用toString
*
*方法转换文字符串后在连接
*/
String line = "这个p的内容是:"+p;
System.out.println(line);
Point p2 = new Point (1,2);
System.out.println(p2);
System.out.println(p == p2);//false
/*
* equals方法的意义是比较两个对象的内容是否相同
* Object定义时实现的规则就是用==比较的,所以
* 实际上没有价值,如果正是比较内容就需要子类去重写这个方法
* 注:java提供的类大多都重写了equals。比如
* 最常见的String类就重写了equals用于比较字符串的内容
*/
System.out.println(p.equals(p2));//true
}
}
2.toString方法
toString() 方法用于返回以一个字符串表示的 Number 对象值。
如果方法使用了原生的数据类型作为参数,返回原生数据类型的 String 对象值。
如果方法有两个参数, 返回用第二个参数指定基数表示的第一个参数的字符串表示形式。
语法
以 String 类为例,该方法有以下几种语法格式:
String toString()
static String toString(int i)
返回值
- toString(): 返回表示 Integer 值的 String 对象。
- toString(int i): 返回表示指定 int 的 String 对象。
实例
public class Test{
public static void main(String args[]){
Integer x = 5;
System.out.println(x.toString());
System.out.println(Integer.toString(12));
}
}
3.equals
equals() 方法用于判断 Number 对象与方法的参数内容是否相等。
“==”比较两个引用变量地址信息是否一致
二、包装类
package integer;
/**
* 包装类
* 包装类的出现是为了解决基本类型不能直接参与面向对象开发的问题
* 因为他们是以值的形式存在,不具备封装,继承,多态的特性
* @author Administrator
*
*/
public class IntegerDemo1 {
public static void main(String[] args) {
//基本类型如何变成对应的包装类
int d= 123;
// Integer i1 = new Integer (d);
// Integer i2 = new Integer (d);
//java推荐我们用valueof形式将基本类型转换为包装类
Integer i1 = Integer.valueOf(d);
Integer i2 = Integer.valueOf(d);
//Integer的valueof会重用一部分对象(-128-127)
System.out.println(i1 == i2);
System.out.println(i1.equals(i2));
double dou =123.123;
Double d1 =Double.valueOf(dou);
Double d2 = Double.valueOf(dou);
//Double的valueOf方法不做任何重用都是直接new
System.out.println(d1 == d2);
System.out.println(d1.equals(d2));
double doub = d1.doubleValue();
System.out.println(doub);
int in = d1.intValue();
System.out.println(in);
}
}
package integer;
/**
* 包装类中比较常见的操作
* @author Administrator
*
*/
public class IntegerDemo2 {
public static void main(String[] args) {
/*
* 包装类可以将字符串解析为基本类型,但是前提是该字符串内容
* 正确描述了基本数据类型可以保存的值,否则会抛出下面异常
* NumberFormatException
*/
String line ="123.123";
String line1 = "123";
// int i = Integer.parseInt(line);//NumberFormatException数字格式异常
// System.out.println(i);
int i = Integer.parseInt(line1);
System.out.println(i);
double d = Double.parseDouble(line);
System.out.println(d);
}
}