复习JavaDay03

Java中的可变参数

java 可变参数是1.5版本的新特性,意思其实就是:用户若是想定义一个方法,但是并不知道以后要用的时候,到底要传几个参数进去,这时可以在方法的参数列表中写参数类型或者数组名,然后在方法内部直接用操作数组的方式操作。

public static void main(String[] args) {
      //题目,打印一个数组中最大值
      new Test1().test(null, 2, 3, 8, 20, 11111);
  }

  //从JDK1.5开始,Java支持传递同类型的可变参数给一个方法,但可变参数只能有一个并且在参数的最后
  public void test(double a[], int... i) {
      int max = 0;
      for (int j = 0; j < i.length; j++) {
          if (i[j] > max) {
              max = i[j];
          }
      }
      System.out.println(max);
  }

递归的初步理解

A方法调用B方法,我们很容易理解! 递归就是:A方法调用A方法! 就是自己调用自己 利用递归可以用简单的程序来解决一些复杂的问题。它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。 递归结构包括两个部分: 递归头:什么时候不调用自身方法。 如果没有头,将陷入死循环 递归体:什么时候需要调用自身方法

public static void main(String[] args) {
  //递归算出5的阶乘总和
  System.out.println(f(5));
}

public static int f(int a) {
  //如果传入的数字为1,则返回1的阶乘为1
  if (a == 1) {
      return 1;
  } else {
      //传入的参数每一次递归都-1,
      return a * f(a - 1);
  }
}

简易计算器题目

//写一个计算器,要求实现加减乘除功能,并且能够循环接收用户输入数据,通过用户交互实现
public static void main(String[] args) {
  result();
}

//接收用户输入的方法
public static double result() {
  double number1;
  double number2;
  String arithmetic;

  System.out.print("请输入第一个参数:");
  Scanner scanner = new Scanner(System.in);
  number1 = scanner.nextDouble();
  System.out.print("请输入+-*/中任意一种:");
  arithmetic = scanner.next();
  System.out.print("请输入第二个参数:");
  number2 = scanner.nextDouble();

  if (arithmetic.equals("+")) {
        add(number1, number2);
  }
  if (arithmetic.equals("-")) {
        minus(number1, number2);
  }
  if (arithmetic.equals("*")) {
        ride(number1, number2);
  }
  if (arithmetic.equals("/")) {
        divide(number1, number2);
  }
  return result();
}

//加法
public static double add(double number1, double number2) {
  System.out.println(number1 + number2);
  return number1 + number2;
}

//减法
public static double minus(double number1, double number2) {
  System.out.println(number1 - number2);
  return number1 - number2;
}

//乘法
public static double ride(double number1, double number2) {
  System.out.println(number1 * number2);
  return number1 * number2;
}

//除法
public static double divide(double number1, double number2) {
  System.out.println(number1 / number2);
  return number1 / number2;
}

数组的定义

数组是相同类型的有序集合。

数组描述的是相同类型的若干个数据,按照一定的先后次序排序组合而成。

其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们。

int[] numbers;  //首选,Java中常用
int list[];     //了解即可,c和c++中使用,为了方便其他语言程序员快速适应Java
//题目,求数组总和
      int sum = 0;

      //声明一个数组,数组长度为5
      int[] numbers = new int[5];

      //给数组赋值
      numbers[0] = 5;
      numbers[1] = 5;
      numbers[2] = 5;
      numbers[3] = 5;
      numbers[4] = 5;

      //便利数组中所有元素
      for (int i = 0; i < numbers.length; i++) {
          sum += numbers[i];
      }
      System.out.println(sum);

Java内存分析

堆:存放new的对象和数组。可以被所有的线程共享,不会存放别的对象引用。

栈:存放基本类型变量(会包含这个类型基本数值),引用对象的变量(会存放这个引用在堆里面的具体地址)

方法区:可以被所有线程共享,包含了所有的class和static变量。

数组的特点

数组的四个基本特点 其长度是确定的。数组一旦被创建,它的大小就是不可以改变的 其元素必须是相同类型,不允许出现混合类型。 数组中的元素可以是任何数据类型, 包括基本类型和引用类型 数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量 数组本身就是对象,Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型数组对象本身是在堆中的

小结: 数组是相同数据类型(数据类型可以为任意类型)的有序集合 数组也是对象。数组元素相当于对象的成员变量 数组长度的确定的,不可变的。 如果越界,则报:ArraylndexOutofBounds

增强for循环

//增强for循环(ForEach) JDK1.5开始使用,无下标,只能用于取所有值 //使用方式:数组名.for for (int number : numbers) { System.out.println(number); }

posted @ 2023-05-22 05:03  再叙旧  阅读(13)  评论(0)    收藏  举报