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类、String类、StringBuffer字符串缓冲区)
一.JAVA的API及Object类 1.API 概念: Java 的API(API: Application(应用) Programming(程序) Interface(接口)) Java API就 ...
- 【代码笔记】Java常识性基础补充(三)——Java的API及Object类、正则表达式、getTime()方法、DateFormat类、Calendar类
1.0 Java 的API(API: Application(应用) Programming(程序) Interface(接口)) 2.0 Java API就是JDK中提供给我们使用的类,这些类将底层 ...
- Java的API及Object
API: Java API就是JDK中提供给我们使用的类,这些类将底层的代码实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可. 源文件使用方法: Object类概述: O ...
- Java的API及Object类、String类、字符串缓冲区
Java 的API 1.1定义 API: Application(应用) Programming(程序) Interface(接口) Java API就是JDK中提供给开发者使用的类,这些类将底层的代 ...
- 代码块和Java的API及Object类
代码块 局部代码块 特点: 以”{}”划定的代码区域,此时只需要关注作用域的不同即可 方法和类都是以代码块的方式划定边界的 构造代码块 优先于构造方法执行,构造代码块用于执行所有对象均需要的初始化动作 ...
- java 的API及Object类
一 Java的API Java 的API(API: Application(应用) Programming(程序) Interface(接口)) Java API就是JDK中提供给我们使用的类,这些类 ...
- 【分布式】Zookeeper使用--Java API
一.前言 上一篇博客我们通过命令行来操作Zookeper的客户端和服务端并进行相应的操作,这篇主要介绍如何通过API(JAVA)来操作Zookeeper. 二.开发环境配置 首先打开Zookeeper ...
- Java API 快速速查宝典
Java API 快速速查宝典 作者:明日科技,陈丹丹,李银龙,王国辉 著 出版社:人民邮电出版社 出版时间:2012年5月 Java编程的最基本要素是方法.属性和事件,掌握这些要素,就掌握了解决实际 ...
- mybatis Java API
既然你已经知道如何配置 MyBatis 和创建映射文件,你就已经准备好来提升技能了. MyBatis 的 Java API 就是你收获你所做的努力的地方.正如你即将看到的,和 JDBC 相比, MyB ...
- jboss7 Java API for RESTful Web Services (JAX-RS) 官方文档
原文:https://docs.jboss.org/author/display/AS7/Java+API+for+RESTful+Web+Services+(JAX-RS) Content Tuto ...
随机推荐
- salesforce零基础学习(一百四十一)刷新dev sandbox需要强制group
本篇参考:https://help.salesforce.com/s/articleView?id=sf.data_sandbox_selective_access.htm&type=5 背景 ...
- 新手入门Java自动化测试的利器:Selenium WebDriver
今天我们将深入探讨一款强大的Java自动化测试工具--Selenium WebDriver.在正式介绍Selenium WebDriver之前,让我们首先对Selenium本身进行简要概述,以便更好地 ...
- Nuxt.js 应用中的 schema:extend事件钩子详解
title: Nuxt.js 应用中的 schema:extend事件钩子详解 date: 2024/11/10 updated: 2024/11/10 author: cmdragon excerp ...
- Air780E篇:采集温湿度传感器数据,并网页查看
今天我们学习合宙低功耗4G模组Air780E篇:采集温湿度传感器数据并实现网页查看,以下进入正文. 一.硬件装备 1.1 硬件连接 使用跳线帽将IO_SEL连接3.3V,给引脚供3.3V的电.dh ...
- 功能齐全的 WPF 自定义控件资源库(收藏版)
前言 推荐一款界面美观.功能齐全的 WPF 自定义控件资源库.这款资源库通过封装一系列常用的控件,简化开发流程,加快项目交付速度. 控件介绍 资源库封装了一些常用的控件,将其整合到一个自定义的控件库中 ...
- 探究内存泄露—Part1—编写泄露代码
本文由 ImportNew - 黄索远 翻译自 captaindebug.如需转载本文,请先参见文章末尾处的转载要求. ImportNew注:如果你也对Java技术翻译分享感兴趣,欢迎加入我们的 Ja ...
- 反编译工具之Jadx
jadx 是一款功能强大的反编译工具,使用起来简单方便(拖拽式操作),不光提供了命令行程序,还提供了 GUI 程序.一般情况下,我们直接使用 GUI 程序就可以了. jadx 支持 Windows.L ...
- canvas(一)描边与填充
1.画布大小 canvas默认的大小是 300*150,通过操作width/height属性可以设置画布的大小,属性值只能是具体是像素值,而不能是百分比. <body> <div c ...
- C/C++源码扫描系列- Fortify 篇
首发于 https://xz.aliyun.com/t/9276 概述 Fortify是一款商业级的源码扫描工具,其工作原理和codeql类似,甚至一些规则编写的语法都很相似,其工作示意图如下: 首先 ...
- Gitlab:Restoring PostgreSQL database gitlabhq_production ... ERROR: must be owner of extension pg_trgm
Restoring PostgreSQL database gitlabhq_production ... ERROR: must be owner of extension pg_trgm ERRO ...