java类 举例分析_java中object类实例分析

问:什么是Object类?

答:Object类存储在java.lang包中,是所有java类(Object类除外)的终极父类。当然,数组也继承了Object类。然而,接口是不继承Object类的,Object类不作为接口的父类。

下面,我们就通过实例,对object进行分析

public class ObjectStu {

/*Object类:java里所有类的父类,顶层的类

*equals:判断两个对象是否"相等";

*hashcode:返回一个对象的哈希码值,是一个整数

*因为之后的容器,例如hashset和hashMap会对元素进行去重的处理;所以equals和hashcode需要同时重写;

*重写之后需要满足的标准:

*当equals的结果为true的时候,要求两个对象的hashcode值相等;

*当equals的结果为false的时候,要求两个对象的hashcode值不等;(hashcode可以相等,但是如果不等可以提升效率)

*toString:返回对象的字符串表示

*作用:方便程序内查看对象属性,方便调试代码

*debug学习:

*1.在可能出现bug的地方设置断点

*2.run as debug

*3.f6,执行当前代码;f5,进入当前本句代码的方法内部;f8,快速跳到下一个断点,如果没有下一个断点,运行余下所有代码

*equals:

*1.一致性:使用对象A调用equals和对象b进行比较,每一次的结果都应该一样

*2.自反性:对象A调用equals比较对象b和对象b调用equals比较对象a的结果应该一样

*/

public static void main(String[] args)

{

Person per = new Person("小王",10,150);

Person per1 = new Person("小王",20,140);

Person per2 = per;

System.out.println(per==per1);

System.out.println(per.equals(per1));

String str = "123";

str.equals("123");

str.hashCode();

System.out.println(per.hashCode());

System.out.println(per1.hashCode());

System.out.println(per2.hashCode());

System.out.println(per);

System.out.println(per1);

}

}

class Person {

String name;

int age;

int height;

public Person(String name, int age,int height)

{

super();

this.height = height;

this.name = name;

this.age = age;

}

/*@Override

public boolean equals(Object obj)

{

if(this==obj){

return true;

}

if(obj instanceof Person){

Person per = (Person)obj;

if(this.name.equals(per.name)&&this.age==per.age){

return true;

}

}

return false;

}*/

//重写hashcode

/*@Override

public int hashCode(){

return name.hashCode()+age*31+height*31;

}*/

@Override

public int hashCode()

{

final int prime = 31;

int result = 1;

result = prime * result + age;

result = prime * result + height;

result = prime * result + ((name == null) ? 0 : name.hashCode());

return result;

}

@Override

public Boolean equals(Object obj)

{

if (this == obj)

return true;

if (obj == null)

return false;

if (getClass() != obj.getClass())

return false;

Person other = (Person) obj;

if (age != other.age)

return false;

if (height != other.height)

return false;

if (name == null)

{

if (other.name != null)

return false;

} else if (!name.equals(other.name))

return false;

return true;

}

@Override

public String toString()

{

return "Person[name="+name+",age="+age+"]";

}

}

总结

以上就是本文关于java中object类实例分析的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:

如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java自定义标签是指在JSP页面自定义标签,以便在JSP页面使用自己开发的标签,便于模块化和重用。下面我们通过一个实例来了解Java自定义标签的用法。 假设我们需要在JSP页面显示一个表格,表格的数据是从后台数据库读取的。为了避免在JSP页面写大量的Java代码,我们可以使用Java自定义标签来实现。 首先,我们需要在项目创建一个Java类,用于实现自定义标签的功能。该类需要继承TagSupport类,并且需要实现doStartTag()方法和doEndTag()方法。doStartTag()方法用于处理开始标签,doEndTag()方法用于处理结束标签。 下面是一个简单的实例,该实例实现了一个自定义标签,用于在JSP页面显示一个表格: ``` public class TableTag extends TagSupport { private List<Object[]> data; // 表格数据 public void setData(List<Object[]> data) { this.data = data; } public int doStartTag() throws JspException { try { JspWriter out = pageContext.getOut(); out.print("<table>"); out.print("<tr><th>姓名</th><th>年龄</th></tr>"); for(Object[] row : data) { out.print("<tr>"); out.print("<td>" + row[0] + "</td>"); out.print("<td>" + row[1] + "</td>"); out.print("</tr>"); } out.print("</table>"); } catch (IOException e) { throw new JspException(e.getMessage()); } return SKIP_BODY; } public int doEndTag() throws JspException { return EVAL_PAGE; } } ``` 在上面的代码,我们定义了一个TableTag类,该类继承自TagSupport类。我们还定义了一个data属性,用于存储表格数据。在doStartTag()方法,我们使用JspWriter输出表格的HTML代码,并且将数据填充到表格。在doEndTag()方法,我们返回EVAL_PAGE,表示继续执行JSP页面的剩余部分。 接下来,我们需要在JSP页面使用该自定义标签。为了使用该标签,我们需要在JSP页面引入该自定义标签: ``` <%@ taglib prefix="mytag" uri="/WEB-INF/taglib.tld" %> ``` 在上面的代码,我们定义了一个mytag前缀,并且指定了自定义标签的URI。URI是一个唯一的标识符,用于识别自定义标签库。 下面是一个使用自定义标签的JSP页面: ``` <mytag:table data="${data}" /> ``` 在上面的代码,我们使用mytag前缀引入自定义标签,并且使用data属性传递数据。在后台Java代码,我们需要将数据存储到request或session,以便在JSP页面使用。 以上就是Java自定义标签的实例分析,通过该实例,我们可以了解到Java自定义标签的用法以及如何在JSP页面使用自定义标签。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值