当前位置: 首页 > news >正文

池州网站建设电话/深圳网络推广最新招聘

池州网站建设电话,深圳网络推广最新招聘,兴远建设网站,哪些网站可以做国外生意目录 1、引用传递进阶分析 2、对象比较 3、引用传递实际应用 4、总结 1、引用传递进阶分析 引用传递是Java的精髓所在,也是初学者比较难学的地方。下面通过三个程序进行分析。 【举例】:第一个,较简单 protected void onCreate(Bundle…

目录

1、引用传递进阶分析

2、对象比较

3、引用传递实际应用

4、总结


 

1、引用传递进阶分析

引用传递是Java的精髓所在,也是初学者比较难学的地方。下面通过三个程序进行分析。

【举例】:第一个,较简单

protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);Demo demo = new Demo(100);fun(demo);System.out.println(demo.getNum());//输出30}private void fun(Demo temp) {temp.setNum(30);}class Demo{private int num =10;public Demo(int num){this.num = num;}public int getNum() {return num;}public void setNum(int num) {this.num = num;}}

【举例】:第二个

    protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);String str = "hello";fun(str);System.out.println(str);  //输出hello}public static void fun(String temp) {temp = "world";}

以上输出的是hello,注意字符串一旦声明则不可改变,字符串内容的改变依靠的是引用的改变实现,观察如下内存分析图:

【举例】:第三个

protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);Demo demo = new Demo("world");fun(demo);System.out.println(demo.getMsg());//输出MLDN}public static void fun(Demo temp){temp.setMsg("MLDN");}class Demo{private String msg = "Hello";public Demo(String msg) {this.msg = msg;}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}}

基于String是引用数据类型的认知,见如下内存分析图:

引用传递一定要耐心使用内存分析,String这种类型 数据需要进行特殊处理。

2、对象比较

对象的比较就是判断两个对象是否相等,目前对象是否相等只能依靠地址是否相同来完成,但存在地址不同,内容相同的情况,好比String种的==与equals()。

要实现对象比较,首先必须进行对象种每一个属性内容进行比较,若完全相同,则为同一个对象,否则不同。

protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);Person perA = new Person("张三",20);Person perB = new Person("李四",20);if(perA.getName().equals(perB.getName()) && perA.getAge()==perB.getAge()){System.out.println("是同一个人");}else {System.out.println("不是同一个人");}}class Person{private String name;private int age;public Person(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}

以上代码虽然实现了功能,但是可以进一步优化,这种对象的比较操作应该是由自己完成,这时可以在Person类中增加compare方法。具体如下,注意要考虑null和自己与自己比较的场景。

protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);Person perA = new Person("张三",20);Person perB = new Person("李四",20);if(perA.compare(perB)){System.out.println("是同一个人");}else {System.out.println("不是同一个人");}}class Person{private String name;private int age;public Person(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}//接收要比较的对象,在本方法种有隐藏的对象thispublic boolean compare(Person person){if(person==null){ //避免null异常return false;}if(this == person){ //防止自己与自己比较return true;}if(this.name.equals(person.name) && this.age== person.age){return true;}return false;}}

对象比较一般是在分析层次上使用,而实际开发种,只有String应用的比较多。

3、引用传递实际应用

程序是生活的抽象,日常生活中的概念实际都可以用程序描述,eg:一个人有一辆车。

描述以上概念前,有这样一个对比,若现在进行数据库的设计,若描述以上操作形式,数据库表该如何设计?需要两个数据库表;以上进行类的设计,实际也需要两个类:Person、Car,可以发现两者的关联:

  • 表名称 = 类名称;
  • 表的字段 = 类属性;
  • 表的一行记录 = 一个实例化对象;
  • 表的多行记录 = 对象数组;
  • 表的外键关系 = 引用设置;

所以,正是因为有这样的匹配关系,所以在实际开发中,简单java类不是凭空设计的,往往要与数据表的结构一一对应。

【举例】:定义类

class Person{private int pid;private String name;//car 为null表示没有车private Car car;//一个人有一个车public Person(int pid, String name) {this.pid = pid;this.name = name;}public String getPersonInfo(){return "编号:"+this.pid+",姓名:"+this.name;}public Car getCar() {return car;}public void setCar(Car car) {this.car = car;}}class Car{private String cname;private Person person; //一车属于一人public Car(String cname) {this.cname = cname;}public String getCarInfo(){return "汽车名称:"+this.cname;}public Person getPerson() {return person;}public void setPerson(Person person) {this.person = person;}}

以上程序中使用了自定义的数据类型,Person和Car都是类。随后进行测试:

  • (1)设置内容
  • (2)取出内容
    protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//(1)根据已有结构设置内容Person per = new Person(1,"张三");Car car = new Car("奔驰");per.setCar(car); //人有车了car.setPerson(per);//车属于一个人了//(2)根据关系取出数据System.out.println(per.getPersonInfo());System.out.println(per.getCar().getCarInfo());//代码链System.out.println(car.getPerson().getPersonInfo());//代码链}

以上就是典型的一对一关系实现,可以进一步扩展下,比如每个人还有孩子,每个孩子还有车。这里孩子也是人,具备跟人一样的属性信息,那么可以在Person中设置孩子的属性。

protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//(1)根据已有结构设置内容Person per = new Person(1,"张三");Person child = new Person(2,"张小三");Car car = new Car("奔驰");Car car1 = new Car("奥迪");per.setCar(car); //人有车了per.setChild(child); //人有一个孩子child.setCar(car1);//孩子有一个车car.setPerson(per);//车属于一个人了//(2)根据关系取出数据//找到一个人的孩子信息System.out.println(per.getChild().getPersonInfo());//根据父亲的车-父亲的车-父亲孩子-孩子的车信息System.out.println(per.car.getPerson().getChild().getCar().getCarInfo());}class Person{private int pid;private String name;private Person child;//car 为null表示没有车private Car car;//一个人有一个车public Person(int pid, String name) {this.pid = pid;this.name = name;}public String getPersonInfo(){return "编号:"+this.pid+",姓名:"+this.name;}public Car getCar() {return car;}public void setCar(Car car) {this.car = car;}public Person getChild() {return child;}public void setChild(Person child) {this.child = child;}}class Car{private String cname;private Person person; //一车属于一人public Car(String cname) {this.cname = cname;}public String getCarInfo(){return "汽车名称:"+this.cname;}public Person getPerson() {return person;}public void setPerson(Person person) {this.person = person;}}

引用的关系,可以描述不同类之间的关联。现实生活中这样的设计实质上并不麻烦,理论上任何事物都可以进行抽象整合,比如一台电脑:

class 内存{}
class 硬盘{}
class 显卡{}
class CPU{}
class 键盘{}
class 鼠标{}
class 主板{private CPU  对象;private 内存 对象{};private 硬盘 对象{};private 显卡 对象{};}
class 电脑{private 主板 对象;private 鼠标 对象;private 键盘 对象
}

以上同样属于引用,这样的方式在设计模式中属于合成设计模型。

4、总结

  • 不要把程序当成纯粹的程序;
  • 引用传递除了进行数据分析外,还要掌握类与类的联系使用;
  • 代码链的使用必须掌握

 

作于202004061250,已归档

———————————————————————————————————

本文为博主原创文章,转载请注明出处!

若本文对您有帮助,轻抬您发财的小手,关注/评论/点赞/收藏,就是对我最大的支持!

祝君升职加薪,鹏程万里!

http://www.lbrq.cn/news/1343431.html

相关文章:

  • 网站建设品/网站seo重庆
  • 专业网站设计/软文写作的技巧
  • 建设什么网站/灰色关键词代发可测试
  • 电子邮箱注册网站申请/网络站点推广的方法有哪些
  • 学校网站怎么做的好坏/网站测速工具
  • 包包网站建设策划书/友链价格
  • 网站开发报价表/百度收录的网站
  • 一个asp网站的mdb数据库修改/建站公司排名
  • so域名网站/国家高新技术企业
  • 网站设计自学/广告代理公司
  • 网站建设的7种流程图/高端营销型网站建设
  • 评析政府网站的建设/营销软文范例500
  • 做翻译赚钱的网站好/百度上怎么做推广
  • 建设网站需要了解些什么/济南网络seo公司
  • 咸宁网站建设/他达拉非
  • 深圳网站制作价格/实体店营销方案
  • 网站开发转移合同/网站建设网络推广平台
  • wordpress文字大小/优化电脑的软件有哪些
  • 动态网站开发代码/网站怎么优化seo
  • 中国电信网站备案 密码重置/百度贴吧入口
  • 手机网站网页设计/网络推广竞价外包
  • 衡水做wap网站费用/北京seo优化外包
  • 做a的视频在线观看网站/网络广告投放公司
  • seo网站诊断方案/搜索引擎优化
  • 网站建设协议/免费建站工具
  • angularjs网站模板/东莞免费建站公司
  • 网站设计就业怎么样/百度推广和优化哪个好
  • 网站可以在手机上做吗/免费模板
  • vue做网站对seo/2024年新冠疫情最新消息
  • 宁波最靠谱的网站建设/北京网站seo招聘
  • strace的常用案例
  • Mybatis进阶
  • 简单聊聊PowerShell
  • Datawhale+AI夏令营_让AI读懂财报PDF task2深入赛题笔记
  • Vue框架总结案例
  • Ideogram:优秀的在线AI绘画平台