脚本宝典收集整理的这篇文章主要介绍了Java API 之 Object,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
package cn.tedu.object; public class ObjectExer1 { public static void main(String[] args) { User u1 = new User(); u1.setUsername("lili"); u1.setPassword("123"); User u2 = new User(); u2.setUsername("lili"); u2.setPassword("123"); System.out.println(u1.equals(u2)); } } class User{ private String username; private String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } //hashCode的重写: //如果两个对象equals为true,那么哈希码一致 //不同对象的哈希码要不同并且要做到散列分布 @Override public int hashCode() { final int prime = 31;//31 位有效位 int result = 1;//奇数为1 result = prime * result + ((password == null) ? 0 : password.hashCode()); result = prime * result + ((username == null) ? 0 : username.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; User other = (User) obj; if (password == null) { if (other.password != null) return false; } else if (!password.equals(other.password)) return false; if (username == null) { if (other.username != null) return false; } else if (!username.equals(other.username)) return false; return true; } }
package cn.tedu.string; public class StringDemo { public static void main(String[] args) { String str = "abc"; str = "def"; System.out.println(str); //s1指向方法区 String s1 = "ab"; //s2指向堆内存,堆内存指向方法区 String s2 = new String("ab"); //字符串在方法区中只存放一份,后续使用到值相等的字符串的时候使用的是同一个 String s3 = "ab"; //"a"和"b"是两个字面量 //字面量在参与运算的时候为了提高效率在编译时期就会运算 //String s4 = "a" + "b"; -> String s4 = "ab"; String s4 = "a"+"b";//结果是true //实际上底层是利用了StringBuilder中的append方法来完成 String s5 = "a"; //s5 = new StringBuilder(s5).append("b").toString(); //s5最后指向堆内存,堆内存再指向方法区 s5 = s5 + "b";//结果是false,不会优化 System.out.println(s1 == s2);//false System.out.println(s1 == s3);//true System.out.println(s1 == s4);//true System.out.println(s1 == s5);//false } }
所以在append()方法后面需要加上一个 toString() 方法,将StringBuilder 的返回类型转为 String 类型的!!
以上是脚本宝典为你收集整理的Java API 之 Object全部内容,希望文章能够帮你解决Java API 之 Object所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。