数组 二维数组 排序 查找 面向对象

数组 二维数组 排序 查找 面向对象


一维数组:用来存储数据的 连续存储空间并且创建之后时固定的

- 可以用来存储多个相同类型的数据,它是引用数据类型

- 数组是被放在堆区(动态开辟内存空间),有默认值

- 创建数组

-

new:在堆内存开辟空间,将数组的地址返回

数组的地址:是一个十六进制的数,是为了多存。

存储地址的类型就是引用数据类型

数组第一个元素的地址就是数组的地址,如果一个int数组,第一个元素的地址是1234,第二个是1238,第三个是123c.

因为是连续的存储空间,所以可以用下标存取,

int [] arr = new int[3];

int [] arr = new int[] {1,2,3,4};

int [] arr = {1,2,3};

如果下标超出了数的范围,会报下标越界异常

java.lang.ArrayIndexOutOfBoundsException

值传递和址传递?

值传递:将保存简单数据的变量作为参数传递

址传递:将保存地址的变量作为参数传递

https://blog.csdn.net/qq_35109096/article/details/81105320

二维数组:直接存储了多个一维数组的地址

int[][] arr = new int[3][];

arr[1] = new int[3];

排序

- 冒泡 选择 插入 快速  归并

https://blog.csdn.net/qq_38646470/article/details/79446581

查找

- 二分查找 :数组必须有序

while 不确定循环次数的时候用,for比较严谨有确定的循环次数

二分查找的效率高于普通查找。

面向对象

一切都是以对象为重,任何问题都通过调用来对象来解决,他把面向过程的封到了地层。

- 将功能封装进对象,强调具备了功能的对象

- 关注的是解决问题需要哪些对象

面向对象是基于面向过程

面向对象可以使开发者变成指挥者

对象(类是为创建对象)

- 万物皆对象

类和对象的关系?

一个类型一旦创建出来,就是一个独立的数据类型,在他可见的范围内都是可以使用的,包括自己的内部

拥有相同或相似的属性和行为的对象都可以抽象出一个类,

类名遵守的大驼峰的原则

数组就是特殊的对象

当一个对象没有引用指向的时候,就可以被垃圾回收机制回收。

匿名对象 :可以传参,(new Person())

static 静态  (有保值功能)

- 静态成员变量使用类名.调用,是字节码文件直接调用static属性,所以字节码文件也是对象,也可以使用引用调用(不建议)。

- 非静态的成员变量不能使用类名.调用,

成员变量的特点

- 创建对象的时候会有默认值

- 可以在类中定义变量的时候,直接二赋值

- 非静态的成员变量可以在出来static修饰的方法外的任何地方使用

为什么可以直接通过类名调用静态成员? 因为 当成员被static修饰之后就变成静态的,会在class生成的同时放在静态方法区中一份,随静态方法区的程序结束而释放,所以对象的创建与否不能影响他们的调用,所以可以直接使用该类名调用

非静态的成员变量不能通过引用调用?是因为出现的时间早晚有差异,可能调不到

方法区存储的是类的字节码文件.Class。

static 所修饰的,存放在静态方法区,生命周期和类一致,

静态的成员方法和非静态的成员方法优先使用哪一个?是静态的成员方法因为非静态 占用内存多,效率低

静态的方法只能调用静态的成员变量

构造方法

- 在创建对象的时候给属性初始化。修饰符 +类名

- this 当前对象的引用,避免 形参和成员变量同名(出现就近原则),this.name=name;

- this可以充当调用构造方法,this();必须放在第一行

- this可以在构造方法内部调用其他重载的方法时,ti

静态代码块 和 构造代码块

静态代码块 虽类加载而加载,只执行一次,执行的顺序优于main。作用对类进行初始化

static+{}

构造代码快,在构造方法的上面,每次创建对象都会执行一次,优先于构造方法。作用对对象进行初始化

{}

封装性:对属性的封装,可以把成员变量的访问权限私有(private),通过公共方法间接传值(过滤错误的值),增加了安全性、复用性、可读性。

getName setName 方法,自动生成是为了以后框架开发自动调用,

继承:单继承只有一个父类,

- 去除冗余(找共同的代码),增加安全性,复用性,可读性,多态的前提

继承当中方法的调用,先自己找,没有一直往上找,从先往上找

重写的方法中可以通过super()调用父类的方法,减少代码量

`public subTest callPhone() {

//System.out.println(“打电话”);

super.callPhone();//直接调到的是父类的成员

//this.callPhone();//代表当前的对象–死循环

System.out.println(“属于苹果的功能”);

return null;

}`

重写方法的返回值可以与父类同名,也可以是父类返回值的子类

继承当中的构造方法的使用

为什么在子类中调用父类的构造方法?原因 必须初始化父类的局部变量,如果子类要使用的时候,父类的还没有初始化。super();必须放在第一行。当你new子类的对象时,你会把所有父类的对象都new出来

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值