大数据预科班第五天
复习
- 数组:定义好长度不可变、类型不可变
二维数组:二维数组中的每一个元素都是一维数组
- 定义格式:数据类型[][] 数组名=new 数据类型[二维数组的长度(或者称为包含一维数组的个数)][每一个一维数组的长度];
- 获取具体的数据需要两个下标;
- 第一的[]的值必须有,第二个可有可无;写第二个参数注意使用时必须初始化再使用,否则将报NullPointExeception;
- []放在数据类型之后,=之前;[]放钱在一位数字没有啥差别,在二维数组中有差别。[]在变量名前的时候,是紧跟数据类型的;如果在[]后,则是属于当前变量名
- 直接声明时进行初始化:数据类型[][] 数组名={};//数据的长度可以不一致
二维数组的应用
- 二维数组的长度:数组名.length
- 每一个数组的长度:数组名[下标.length]
- 二维数组的遍历:两层for循环
- 二维数组的反转:头尾交换
二维数组的反转
for(int start=0,end=arr.length-1;start
函数(方法)
- 将一段逻辑或者功能提取出来,这种提取的形式就是函数
格式
修饰符 返回值类型 函数名(参数列表){
方法体;
return 返回值;
}//1. 两个整数的和
//2. 返回值一定是整数
//3. 加数是未知量,以参数的进行传递
//4. 定义参数实际上在声明变量
//5. 在函数中声明的参数–没有实际值:称为形式参数(形参)
//6. 调用函数时,输入的参数:实际参数(实参)
//7. 方法签名:add(int sum1,int sum2)eg:求两个整数的和
public static int add(int num1,int num2){
return (num1+num2);
}//8. 函数没有返回值时,返回值类型写void
eg:P打印*
public static void printStar(int row){
for(int i=1;i<=row;i++){
for(int j=1;j<=i;j++){
System.out.print(“*”);
}
System.out.ptintln();
}
}注意
- 如果函数没有返回值,则返回值类型为void
- return之后的代码将不再执行
- 任何一个实体函数都有return语句
函数重载
- 一个类中存在类名一致,而参数列表不一致(参数类型,参数个数)
- 匹配最优结果
add(double a,int b)和 Aadd(int b,double a)一致,调用出错 - 当进行函数重载时,尽量重载所有的情况,以防出现都匹配的情况。
练习
任何任何一个大于6的偶数都可以分解成两个质数的和
14=3+11
14=7+7亲密数:如果A的所有因数(含1,不含本身)之和等于b,且b的所有因数之和为a
package com.peng.demo;
public class Demo01 {
public static void main(String[] args) {
// 亲密数:A的因数的和=B,且b的因数之和等于A
for (int i = 3; i <= 3000; i++) {
int tt = getXSum(i);
int mm = getXSum(tt);
if (i == mm && tt > i) {
System.out.println(i);
}
}
}// 参数:数X // 返回值:数X的因数之和 public static int getXSum(int x) { int sum = 1; for (int i = 2; i <= x / 2; i++) { if (x % i == 0) { sum += i; } } return sum; }
}
递归
例子
sum(10)
10+sum(9)
10+9+sum(8)
…
10+9+8+7+6+5+4+3+2+1sum(int number){
if(number==1){
return 1;
}
return number+sum(–number);
}函数自己调用本身,即递归
eg:求任意一个数的阶乘
package com.peng.demo;public class Demo01 {
public static void main(String[] args) {
System.out.println(getJieCheng(4));
}public static long getJieCheng(int x) { if (x == 0) { return 1; } return x * getJieCheng(x - 1); }
}
栈溢出错误StackOverflowError
1. 函数在栈中执行(函数在栈中没有执行完会一直存在)
2. 当递归的次数太多,就会出现这个错误
1. 循环不会犯这个错误:变量只占几个字节,不会溢出
2. 递归的速度<for循环:递归调用函数又从头开始加载执行
坑—— ——☞
- 对于基本类型来说,传的值是实际值;对于引用数据类型而言是传入的是地址。
坑—— ——☞
Eclipse(日食)
- 智能开发工具,IDE
- 绿色(免安装)、开源的(可以查到源代码)、免费的、基于插件
- IDEA:Intelli J(吃内存、收费、管理方便)
- MyEclipse:收费、基于插件
- alt+/提示键(keys搜素)
面向对象
- 面向对象是相对于面向过程而言的。面向过程注重的是过程,强调的是过程;
- 面向对象是基于面向过程的。
面向对象一定优于面向过程吗?
当场景比较复杂的时候:建议使用面向对象
当事务比较简单的时候:建议使用面向过程
对象:面试官您好,一个公司需要很多的的对象来完成不同的工作,我就是您要完成工作的一个对象
!