1,Java中==和equal的区别为:
1、== 表示 判断2个变量或对象实例是否指向同一个内存空间,equals ()表示判断2个变量或对象实例所指向的内存空间的值是否相同。
2、== 表示 对内存地址进行比较,equals ()表示对字符串的内容进行比较。
2,java中的break 和continue
1,break中断了循环,不再执行剩下的循环体,退出循环继续往后run;
2,continue则是跳出本次循环,本次循环之后的循环体不执行,然后去判断是否满足下一次循环体的条件,满足则继续执行下一次的循环;
3,方法的定义
方法是面向对象的思想,方法包含一个方法头和一个方法体;
方法的所有部分:
- 修饰符:可选项,告诉编译器如何调用该方法,定义了方法的访问类型。
- 返回值类型:方法可能会有返回值。returnValueType是方法返回值的数据类型。有些方法执行所需要的操作,但是没有返回值。这种情况下,returnValueType是关键字void
- 方法名:是方法的实际名称。方法名和参数表共同构成方法签名
- 参数类型:参数像是一个占位符。当方法被调用之时,传递值给了参数,该值被称为实参。参数列表是指方法的参数类型、顺序和参数的个数,参数是可选的,方法可以不包含任何参数。
形式参数:在方法被调用时,用于接受外界输入的数据;
实参:调用方法时,用于接受外界输入的数据。 - 方法体:方法体包含具体的语句,定义该方法的功能。
4,方法的重载
就是在一个类里面,有相同的函数名称,但形参不同的函数
重载规则:
方法名称必须相同;
参数列表必须不同(个数,类型,参数排列顺序等)
方法的返回类型可以相同也可以不同;
仅仅返回类型的不同不可以构成重载;方法重载的好处:不用为了对不同的参数类型或参数个数,而写多个函数,系统可以自动匹配;
多个函数用同一个名字,但参数表,即参数的个数或(和)数据类型可以不同,调用的时候,虽然方法名字相同,但根据参数表可以自动调用对应的函数。
这样我们在调用的时候,就不需要记那么多的方法名称,而是知道了方法的功能就可以直接的给他传递不同的参数,编译器会明确的知道我们调用了哪一个方法。
递归其实是一种思想的学习,小计算用递归可以,大计算不要用递归;java中栈的应用很广泛,递归如果很深,容易造成内存满,发生错误。递归很消耗计算机性能;
堆,栈,方法区
分析内存的时候重点在于理解
数组是相同数据类型的有序集合(其中的数据类型可以为任意的类型)
数组也是一个对象,数组的元素也相当与对象的成员变量。 数组长度是确定的,如果越界会报出ArrayIndexOutofBounds
Arrays类 是一个支持数组语言实现的基类。Arrays中存了很多的静态方法,对数组进行操作。
典型的就有toString方法,打印数组;
fill方法填充数组,其中方法重载有可以设置全部填充同一个元素,也可以fill(a[],startindex,endindex,value)
从哪里开始到哪里结束对数组进行填充;
冒泡排序
冒泡排序是最出名的排序算法之一,总共有八大排序!
分为两层循环,外层冒泡轮数,里层依次比较;
看到嵌套循环,应该立马可以得出这个算法的时间复杂度为O(n^2)
稀疏数组
[0]中存6行7列8个value;之后的 8个[ i],记录了所有的值的信息;
面向对象的本质就是:以类的方式组织代码,以对象的组织(封装)数据
从认识论监督考虑,先有对象后有类。对象,是及具体的事物,类,是抽象的,是对对象的抽象。
从代码运行的角度考虑,现有类后有对象,类是对象的模板。