java中的比较、调用对象---内容与地址,赋值操作

深入Java赋值操作的探索与实践 Java是一种广泛使用的编程语言,由Sun Microsystems公司在1995年发布。自推出以来,Java因其“一次编写,到处运行”的跨平台特性而广受欢迎。Java的演化经历了多个版本,不断增加了新的特性和改进,包括泛型、Lambda表达式和模块系统等,使其始终保持在现代编程语言的前沿。引用数据类型包括类、接口、数组等。其中,类是面向对象编程中的基本单元。通过new关键字可以创建类的实例。当实例化一个类时,Java虚拟机(JVM)会在堆内存中为新对象分配空间,并调用构造器初始化对象。 阅读详情

==

c=a>b?a:b;//两个中选出最大值

equals

重写equals

instanceof

change(int i);//值

change(A a);//地址

package com;

import com.day9.exam.Phone;

/**
 * @Title
 * @Author Eastlin
 * @Description:
 */
public class Test0116 {
    static class A{//加static是提升运行的优先级
        public String name;//默认构造器初始化
        public int age;
    }
    static class B{
        public String name;
        public int age;
    }
    static class C extends B{
//        public String name;
//        public int age;
    }
    static class D extends B{
//        public String name;
        public int salary;
    }
    public int change(int i){
        return i+1;
    }
    public void change(int[] i){
        for(int j=0;j<i.length;j++){
            i[j]=j+10;
        }
    }
    public static void main(String[] args) {
        Test0116 test0116=new Test0116();
        A a = new A();
        B b = new B();
        C c = new C();
        D d = new D();
        String str="abc";
        String str1="abc";
        String str2 = new String("abc");
        int[] e=new int[3];
        int[] f=new int[]{0,0,0};
        int g=9;
        System.out.println(e==f);//false,比地址
        System.out.println(e.equals(f));//false,里头还是==,比地址--Object-I

        //System.out.println(a==b);//报错,自定义引用数据类型不可这样比较---------------------1
        System.out.println(a.age==b.age);//true,基本数据类型可以,基本数据类型没有方法
        System.out.println(a.equals(b));//false,里头还是==,比较的对象地址--Object-II

        System.out.println(str==str1);//true,引用数据类型,比地址,引用的同一个内容,自然是同一个地址
        //比较特别是==可以比较String这个引用数据类型,关键点应该是它是系统定义的单属性(自定义的单属性无用)引用数据类型
        //特别的应该是它虽然是引用数据类型,但是它要作为基本属性的一项
        System.out.println(str==str2);//fase,new开辟新地址存储,地址自然不一样
        System.out.println(str.equals(str2));//true,最终比较的还是内容--String-III

        System.out.println(c instanceof C);//true,c是C的实例
        System.out.println(c instanceof B);//true,c是B的实例
        System.out.println(c==b);//false,不报错,自定义有关系的引用数据类型可这样比较----------2

        test0116.change(f);
        test0116.change(g);
        for(int j=0;j<e.length;j++){
            e[j]=j+10;
            System.out.println( e[j]);//10,11,12,引用数据类型引用的是地址
        }
        System.out.println(g);//9,基本数据类型只是用的变量的值,不改变变量值
        //总结:
        //父类Object提供的equals就是在比较==地址,没有实际的意义,我们一般不会直接使用父类提供的方法,仅String提供的equals就是在比较内容

        //为了比较内容,在子类中对这个方法进行重写,重写为对对象的内容是否相等 的一个比较方式,对象的内容指的就是属性。
        // 需要instanceof这个关键字进行判断对象从属问题,是则进一步判断内容(属性)&&,否则直接比地址
        //对equals方法进行重写:
//        @Override
//        public boolean equals(Object obj) {//Object obj = new B();
//            //将obj转为B类型:
//            B other = (B)obj;//向下转型,为了获取子类中特有的内容
//            if(this.getBrand()==other.getBrand()&&this.getPrice()==other.getPrice()&&this.getYear()==other.getYear()){//封装中属性获取
//                return true;
//            }
//            return false;
//        }按此模板重写API中Object的equals方法
//    }
    }

}

【Java完整版 面试必备】Leetcode Top100题目和答案-滑动窗口篇 阅读详情

相关推荐

告别串口打印:手把手教你用Qt Creator远程调试i.MX6开发板(附gdbserver配置)

本文详细介绍了如何使用Qt Creator配合gdbserver实现i.MX6等ARM开发板的远程调试,告别传统的串口打印调试方式。通过图形化界面设置断点、监控变量,显著提升嵌入式开发效率,适用于各类ARM架构开发板的调试需求。

weixin_30781775的博客 217

java中可以对对象赋值的位置及顺序

java中可以对对象赋值的位置及顺序

a1498665771的博客 353

不只是抓取:用五指灵巧手(ROH-A001/RH56)玩转ROS2下的力控与混合控制

本文深入探讨了在ROS2环境下使用五指灵巧手(ROH-A001/RH56)实现力控与混合控制的实战技巧。从硬件通信协议解析到ROS2节点开发,详细介绍了力感知架构、实时数据处理和混合控制策略,帮助开发者在Ubuntu系统中高效实现精密操作。通过鸡蛋抓取等实例,展示了力控技术在机器人灵巧操作中的关键作用。

weixin_28221501的博客 287

Java如何重写equals,比较对象的内存地址

Java中可以重写equals方法来比较两个对象是否相等。重写方法需要遵循如下规则: 自反性:对于任意非空引用值x,x.equals(x)应该返回true。 对称性:对于任意非空引用值x和y,x.equals(y)应该和y.equals(x)返回的结果相同。 传递性:对于任意非空引用值x、y和z,如果x.equals(y)返回true,并且y.equals(z)返回true,那么x.equa...

weixin_35754962的博客 323

Vivado FFT IP核避坑指南:从Matlab数据生成到FPGA验证的完整流程

本文详细解析了Vivado FFT IP核从Matlab数据生成到FPGA验证的完整流程,重点解决跨平台数据一致性、IP核配置陷阱和验证方法论等核心问题。通过实战案例和避坑指南,帮助工程师高效实现FFT运算的硬件验证,确保结果与Matlab的误差控制在0.3%以内。

weixin_42543046的博客 398

Python CalmAn(Calcium Imaging Analysis)神经生物学工具包安装及环境配置过程

CalmAn是一个用于大规模钙成像数据分析和行为分析的Python工具箱。CaImAn实施了大规模钙成像数据分析管道中所需的一套基本方法。针对多天的运动校正、源提取、尖峰反褶积和分量配准,实现了快速且可扩展的算法。它适用于双光子和单光子荧光显微镜数据,可以在批处理和在线模式下运行;CaImAn还包含一些分析摄像机行为的例程。

Fine的优快云博客 3558

Java基础

Java基础 1. Arrays类(java.util.Arrays) 常用方法: 打印数组 Arrays.toString(arr) int[] a = {1,2,3,4,5}; System.out.println(Arrays.toString(a)); 给数组赋值:fill Arrays.fill(a,0); //给数组所有的值都赋值为0 Arrays.fill(a,2,4,0); //[2,4)赋值为0 System.out.println(Arrays.toString(a));

yuyi_yuyi_的博客 275

别再拍脑袋估工时了!手把手教你用FPA功能点分析法,给软件项目算笔明白账

本文详细介绍了FPA功能点分析法在软件开发工作量评估中的应用,帮助团队告别拍脑袋估算。通过量化系统功能组件,FPA提供客观的工时和成本预估,特别适合需求不明确的项目初期。文章以财务系统为例,拆解FPA计算流程,并分享实用估算模板,助力技术管理者提升项目规划能力。

weixin_42614269的博客 391

JAVA的三种给对象赋值的方式

第一种,直接赋值的方式 package Experience; public class Teacher { String name; int age; public void act(){ System.out.println("大家好,我是田老师!"); } } package Experience; public class Test { public static void main(String args[]){ T

qq_47095931的博客 1万+

OAuth2.0集成SpringSecurity加JWT实现单点登录

单点登录(Single sign on),英文名称缩写SSO,SSO的意思就是在多系统的环境中,登录单方系统,就可以在不用再次登录的情况下访问相关受信任的系统。也就是说只要登录一次单体系统就可以

Nicky's blog 9039

使用 Simulink + Simscape Electrical 对基于VSG控制的背靠背变流器整流侧进行建模与仿真

本文介绍了基于Simulink的直驱风电系统背靠背变流器整流侧虚拟同步发电机(VSG)建模方法。首先阐述了直驱风电系统结构和VSG控制的作用,然后详细指导了模型搭建过程:从创建项目、添加PMSG和变流器模块,到搭建主电路拓扑和实现VSG控制逻辑。重点说明了VSG控制器如何模拟传统同步发电机的特性,并提供了仿真设置和结果分析方法。该模型可用于研究风电系统在不同工况下的响应特性,为新能源发电系统设计提供重要参考。

amy_mhd的博客 180

【java】数组地址赋值

java中 定义数组 int[] a;int [] b; a = b; 则进行的是 将b的地址赋值给a的地址 a被完全覆盖掉 。 类似于c中的指针 和clone要区分开来 //java中数组赋值 public class Example4_01{ public static void main(String[] args){ int[] a,b; int i; a = new int [4];//创建数组 b = new int [3]; for(i = 0 ; i < a.le

nruuu的博客 1564

34、实数域上高效负循环卷积算法解析

本文介绍了一种高效的实数域负循环卷积算法,通过引入离散傅里叶负循环变换(DFNT)避免传统方法的冗余,显著提升计算效率。文章详细分析了算法原理、误差传播机制,并推导出误差与方差界,提出无误差和基于3σ规则的参数设置方案。结合Cooley-Tukey与Gentleman-Sande FFT路径优化,实验验证了算法在不同精度和多项式长度下的性能优势与结果正确性,为密码学与信号处理等领域提供了高精度、高性能的卷积计算解决方案。

salt的博客 115

laya支持ajax吗,laya怎么传递数据到java

满意答案愤怒的草ni马2017.10.02采纳率:57%等级:12已帮助:4638人在Java中,引用类型的变量非常类似于C/C++的指针。基本类型与引用类型:基本类型java中int,float等属于基本类型,创建时存储于栈中。引用类型引用类型的引用存储于栈中,而对象则是存储与堆中。下面进行详细的阐述:假设我们在函数中写了如下这个简单的语句:StringBuffer str = new ...

weixin_33634121的博客 311

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

JAVA中对象的赋值与引用

前言最近在学习红黑树,当我尝试不使用递归来实现时,发现自己的大脑陷入了混乱。究其原因,是对JAVA中的基本类型和引用类型有所误解。特地重新搜索+实践一番,涨个姿势。先放出我参考的文章: @Intopass的知乎回答 java到底是值传递还是引用传递 @focusChen的博客 JAVA 对象引用,以及对象赋值 一番折腾先找个对象过年class Node { int value;

薛定谔的猫窝 1万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

JAVA中对象的几种比较

对象比较的最佳实践总结不同场景下的选择建议未来Java版本中可能的改进提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档比较方式核心作用灵活性适用场景equals()hashCode()判断内容相等低集合去重、逻辑相等判断Comparable自然排序(默认规则)低对象有固定排序规则Comparator定制排序(多规则)高多种排序需求、第三方类排序简化比较 + 空指针防护中JDK 8+ 简洁排序代码选型口诀判相等:重写equalshashCode。

2402_89003542的博客 2652

Java引用类型对象地址引用和内容复制

Java数组属于引用类型对象,以此为例说明地址引用和内容复制的区别 1.地址引用 为一个数组变量赋值另一个数组变量后,2个数组变量指向同一个内存地址,引用同一个数组对象,此时内存中并没有建立新的数组对象。 2.内容复制 有时候需要复制一个数组或数组的一部分,在内存中独立于原数组对象存在,即创建一个新数组对象。 复制一个新数组对象主要有3种方法 1)使用循环语句逐个地复制所有或部分数组元素 2)使用...

沧海桑田的博客 2996

Java中对象的赋值与引用

Java中对象的赋值与引用详解

Yummy 6万+

java对象数组赋值

前言 Redis是企业级系统高并发、高可用架构中非常重要的一个环节。Redis主要解决了关系型数据库并发量低的问题,有助于缓解关系型数据库在高并发场景下的压力,提高系统的吞吐量(具体Redis是如何提高系统的性能、吞吐量,后面会专门讲)。 而我们在Redis的实际使用过程中,难免会遇到缓存与数据库双写时数据不一致的问题,这也是我们必须要考虑的问题。如果还有同学不了解这个问题,可以搬小板凳来听听啦。 一、对象的实例化 1.创建对象的方式 new:最常见的方式(本质是构造器) 变形1 : Xxx的静态方法

m0_57077948的博客 4339

java String 内容的比较

用户经常需要判断两个字符串的大小或相等,比如可能需要判断输入的字符串和程序中另一个编码字符串是否相等。 序号 方法名称 类型 描述 1 Public boolean equals(String anObject) 普通 区分大小...

qq_158032149的博客 1万+

Java: 对象赋值

前言: 首先明确Java中万物都是类。而对于类的赋值,一直都很疑惑,因此总结一下 文章目录一个例子图示总结 一个例子 对int型做测试,输出其值和地址。 C: #include&amp;amp;amp;amp;amp;amp;lt;stdio.h&amp;amp;amp;amp;amp;amp;gt; using namespace std; int main(){ int a, b; a = 1; b = 2; printf(&amp;am

Wangpeiyi9979的博客 1527

==比较地址,equals比较值?错了!!【一文搞懂== 与equals 的底层区别】

“你是如何理解==与equals的?” 迄今最完整的回答!

1万+

java 中赋值_java中的赋值

java中的赋值使用符号“=”。按照java编程思想的解释:它的意思是“取等号右边的值,把它复制给左边”。当然左边必须是一个明确的,已命名的变量。基本类型:int a=2;int b=3;a=b; //把b的值赋值给aSystem.out.println("a="+a); //结果a=3a=4;System.out.println("a="+a); //结果a=4System.out.printl...

weixin_30253461的博客 3010

JAVA中string的赋值_Java中关于String赋值的两种形式

说明:String在java中是使用频率很高的一个类,之前使用的时候并没有过多的在意,只知道有两种赋值方式,一种是采用字面值方式(String string1 = “string”;),一种是使用new关键字(String string2 = new String(“string”);)。如果使用string1==string2比较的话,你会发现结果为false,说明两者的地址并不一致,虽然我知道...

weixin_29791447的博客 1万+

Java中的数据比较(再谈==与equals的区别)

本作品采用知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议进行许可。  Java中的变量与对象有区别吗? 引子:变量与对象变量是Java中最基本的存储单元,为变量赋值可以使用赋值表达式。如:int i = 10;该表达式的含义是将一个字面量(literal)10赋值给一个类型为int型的变量,变量名为i。这是一个为基本数据类型的变量赋值的例子,它表达了

丑小鸭技术专栏 1万+

如何理解对象赋值给接口的操作(关键在对象!)

今天被人问了一个问题,我去查了源码,进而引发另一个思考——对象赋值为接口的问题。 众所周知,如果一个对象赋值给它的接口,那么这个用接口“接”的对象只有接口所定义的方法和属性,失去了原本对象独有的方法和内容。(当然也规范了代码,不用管底层如何操作实现,不过本文不讨论这些) 按我之前的理解就是——如果把原对象比作一辆拥有众多功能的跑车,那么接口就是大家统一规格的小汽车。如果把这“跑车”赋值给小汽车,那么势必会失去一些独有的功能和属性。 但原来的属性和方法真会消失吗? 我突然又想到很多框架为了通用性,方法返回值常

风过孤屿,山海自成诗行。 2523
上一篇: 11.java的代码块执行优先级,普通的按先后顺序
下一篇: 12.抽象类abstract、接口interface与枚举enum
Eastlin_1
博客等级 码龄6年 3109粉丝 122原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值