大数据预科班5

大数据预科班第五天

复习

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

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

面向对象

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

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


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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乘风御浪云帆之上

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值