大数据预科班5

来源:互联网 发布:苹果手机恢复软件 编辑:程序博客网 时间:2024/04/30 04:44

大数据预科班第五天

复习

  • 数组:定义好长度不可变、类型不可变
  • 二维数组:二维数组中的每一个元素都是一维数组

    1. 定义格式:数据类型[][] 数组名=new 数据类型[二维数组的长度(或者称为包含一维数组的个数)][每一个一维数组的长度];
    2. 获取具体的数据需要两个下标;
    3. 第一的[]的值必须有,第二个可有可无;写第二个参数注意使用时必须初始化再使用,否则将报NullPointExeception;
    4. []放在数据类型之后,=之前;[]放钱在一位数字没有啥差别,在二维数组中有差别。[]在变量名前的时候,是紧跟数据类型的;如果在[]后,则是属于当前变量名
    5. 直接声明时进行初始化:数据类型[][] 数组名={};//数据的长度可以不一致
  • 二维数组的应用

    1. 二维数组的长度:数组名.length
    2. 每一个数组的长度:数组名[下标.length]
    3. 二维数组的遍历:两层for循环
    4. 二维数组的反转:头尾交换

    二维数组的反转
    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();
    }
    }

  • 注意

    1. 如果函数没有返回值,则返回值类型为void
    2. return之后的代码将不再执行
    3. 任何一个实体函数都有return语句
  • 函数重载

    1. 一个类中存在类名一致,而参数列表不一致(参数类型,参数个数)
    2. 匹配最优结果
      add(double a,int b)和 Aadd(int b,double a)一致,调用出错
    3. 当进行函数重载时,尽量重载所有的情况,以防出现都匹配的情况。
  • 练习

    1. 任何任何一个大于6的偶数都可以分解成两个质数的和
      14=3+11
      14=7+7

    2. 亲密数:如果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+1

    sum(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搜素)

面向对象

  • 面向对象是相对于面向过程而言的。面向过程注重的是过程,强调的是过程;
  • 面向对象是基于面向过程的。
  • 面向对象一定优于面向过程吗?

    当场景比较复杂的时候:建议使用面向对象
    当事务比较简单的时候:建议使用面向过程


对象:面试官您好,一个公司需要很多的的对象来完成不同的工作,我就是您要完成工作的一个对象
!