分布式机器 VR全景图片 机器学习 Netty makefile performance vue自定义事件 vue入门 微信小游戏开发视频 java后台框架 直销系统源码 sublime分屏快捷键 bootstrap文件上传样式 kb转mb mysql卸载重装 wps文件修复工具下载 mysql教程 mysql更新 python运算符优先级 java正则表达 java循环语句 java重载和重写的区别 java编程语言 java求阶乘 java对象是什么 java停止线程 java接口调用 java网页 java字符串相等 linux命令行 flash实例 真实女友补丁 删除数组中的某个元素 复制到剪贴板 中维高清监控系统安装 xapk安装器 脚本学习 相册制作软件 igfxpers 德玛上单天赋
当前位置: 首页 > 学习教程  > 编程语言

数组和面向对象

2020/12/5 9:44:45 文章标签:

1、将一个引用数据类型的值赋值给了另一个引用数据类型,相当于将地址值给了另外一个;2、对一个数据的操作会影响到另外一个数组 数组的操作: 两个数组的内存图: 两个数组指向相同的引用 数组的遍历 概述:数组通过索…

1、将一个引用数据类型的值赋值给了另一个引用数据类型,相当于将地址值给了另外一个;2、对一个数据的操作会影响到另外一个数组

数组的操作:

两个数组的内存图:

两个数组指向相同的引用

数组的遍历

概述:数组通过索引来操作其中的元素,索引又是连续的数字,所以我们可以通过循环来操作数组。

索引值是从0开始的数字,循环的起点应该是0,循环的终点是最后一个元素的索引,获取数组的长度

本质上获取数组中元素的个数

格式:数组名.length;当前数组的长度,所以循环的终点是length-1

获取数组中元素的最大值:核心思想就是用打擂的思想去获取最大值

数组的反转:就是将数组中的元素倒置

(如何确保数组对称,需要定义两个变量,一个变量往左走,一个变量往右走;2、交换元素的逻辑,定义一个中间变量;3、交换的边界:当两个变量的值相等,或者左边的变量大于右边的变量

获取数组中元素的位置:就是获取数组中某个元素对应的索引

要求:返回对应的索引值,如果没有找到就提示不存在这个元素

面向对象思想

面向对象:是一种思维的方式,是处理问题的一种方式

面向过程:更加注重事物实现的过程(C语言),更加强调的是解决问题的方法,面向过程的特点:自顶向下,不断分解。

面向对象:更加注重事物实现的结果,更加强调是解决问题的数据或者是人。自底向上,不断拼装。

好处:1、就是将数据源准备完毕,使用时直接调用;2、更加符合我们人的行为逻辑,遇到事情先去找,可能用到的工具或者人

类和对象的关系

类:类是一个抽象概念就是指的一个类型

类和对象的关系:类是对象中的特征给抽取出来,进行封装。抽象:抽取出相似的,相同的部分。

类中存储了对象应该具有的属性和行为。

属性:在Java中我们把属性叫做成员变量,都是一个可以量化值

成员变量需要定义在类中方法外,跟之前定义的变量功能相同。一般是名词。

行为:行为就是类中提取出来的具有相似的行为,也就是可以实现的功能。行为在Java中我们叫做成员方法。跟之前方法功能一致,定义时需要修改,不需要static关键字的修饰。一般是动词或者动宾结构。

对象:对象就是对类的具体的实现。

对象的定义:

定义的格式:

数据类型 对象名 = new 数据类型();

说明:

数据类型:就是声明这个对象的类型(就是类名,class后面那个

对象名:就是在内存中一段空间,用来指向这个对象的引用。

new:在堆内存中开辟空间用来存储对象中的数据

数据类型():这个类型的方法指向了创建对象的构造方法;

对象的使用:

获取对象中的属性:对象名.属性名;

修改对象中的属性:对象名.属性名="属性值";

调用对象中的方法:对象名.方法名();

创建对象的内存图:

main方法进栈,main中创建一个p1的空间,new--去堆中开辟空间-Person,给他一个地址值,通过地址值,可以找到堆内存中的空间,

person加载到方法区中,,,,堆中存放数据,划掉初始值,默认值name=null,age=0;调用eat(),eat()方法进栈

说明:1、主类的类字节码文件需要被加载进方法区;2、主类中main函数需要进栈执行;3、main方法中需要开辟一个储存地址的空间等待被赋值;4、new关键字去堆内存中开辟空间,并且给当前控件的地址,非陪给我们栈内存中的空间;5、当堆内存中需要使用或者需要操作数据时 方法区也有一个隐藏空间用来储存字节码的信息;6、堆内存会通过这个字节码的信息去找到类的加载信息,然后使用或者操作。7、当方法被调用时也会先去方法区中加载类信息了

注意事项:

1、方法区的信息当类被创建时就需要去加载

2、第一次创建对象,需要去方法区中加载信息

3、第二次以后就不需要再去方法区中加载类的信息了

两个对象创建的内存图:

相同对象引用的内存图:

成员变量和局部变量的区别

成员变量:就是类的属性

局部变量:普通变量

定义方式:

定义的位置不同:成员变量在类中方法外;局部变量在方法中或者方法的形参中

在内存的空间:

成员变量:随着对象的创建被储存在堆中;局部变量:会去储存在栈内存的方法的栈帧中

在内存的时间:(生命周期不同)成员变量随着对象的创建被创建,随着方法的使用结束(p1=null)被当作垃圾回收;局部变量随着方法的使用被创建,随着方法的出栈被回收

初始值的不同:局部变量没有初始值,没有默认值需要我们自己定义默认值,如果不赋值就无法使用;成员变量有初始值,即使不赋值也可以直接使用。

局部变量的默认值:整数类型:0;浮点类型:0.0;char:'\u0000';布尔类型:false;引用数据类型:null

作用域方面:成员变量的作用范围,根据它的访问权限来决定可以用访问权限修饰符来修饰,最小的范围就是在本类中可以使用;局部变量:作用范围就是在声明它的方法中

匿名对象:

含义:就是没有名称的对象

创建对象的语法:类名称 对象名 = new 类名称();前半段是在栈中存储变量名,后半段使用new开辟的堆空间存储对象内容,若是只有"new 类名称();"这部分的话,那就是只是在堆中开辟了一个空间来保存对象信息,没有栈去指向它。也就是这个空间是没有名字的。所以简单来说,没有栈中引用指向的对象就叫做匿名对象

格式:new 数据类型();

应用场景:1、当创建一个对象并且只需要调用一次这个对象的方法时,对象就可以被回收;2、匿名对象可以当作一个方法的实际参数进行传参;3、匿名对象可以当作一个方法的返回值返回。

注意事项:当匿名对象对属性进行赋值或者修改时,匿名对象在执行完毕后会直接被回收,所以修改的操作没有意义

 

 

 

 

 

 

 

 


本文链接: http://www.dtmao.cc/news_show_450070.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?