学习java的第五周

java流程控制

顺序结构

  • 语句与语句之间,框与框之间是按从上到下的顺序进行的,它是由若干个依次执的处理步骤组成的,它是任何-一个算法都离不开的一种基本算法结构。

选择结构

if结构

if(布尔表达式)
{
 //如果为ture执行的语句
}
else
{
 //如果布尔表达式的值为false
}
  • if有四种结构,if单选择结构,if双选择结构,if多选择结构,嵌套的if结构

switch多选择结构

switch(expression)
{
      case value: //语句
}
  • 可以使用字符串String类型

九九乘法表

public class test {
    public static void main(String[] args) {
        for(int i = 1;i<10;i++)
        {
            for(int j = 1; j<=i;j++)
            {
                sum=j*i;
                System.out.printf("%d * %d = %d   ",j,i,i*j);
            }
            System.out.println();
        }
    }
}

  • 这是在看视频之前按照他题目写出来的代码,在看了他写的代码之后,发现在java中可以写的更简便些,可以将输出数据总和起来写成System. out . print(j+""+i+"="+(j"i) + "\t");

打印三角形

public class test {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int x = scanner.nextInt();
        for(int i = 0;i<x;i++ )
        {
            for(int k = x;k>=i;k--)
            {
                System.out.print(" ");
            }
            for(int j = 1;j<=i*2-1;j++)
            {
                System.out.print("*");
            }
            System.out.println();
        }
    }
      scanner.close();
}

  • 这是按照视频的题目写出的代码

方法

  • 类似于c中的函数

方法的重载

  • 重载就是在一个类中,有相同的函数名称,但形参不同的函数。
    规则
  • 方法名称必须相同。
  • 参数列表必须不同(个数不同、或类型不同、参数排列顺序不同等)
  • 仅仅返回类型不同不足以成为方法的重载。

可变参数

  • 在方法声明中,在指定参数类型后加一-个省略号(..)。
  • -个方法中只能指定-个可变参数,它必须是方法的最后-个参数。任何普通的参数必须在它之前声明。
    例子:public void max( double... numbers) {}

作业

  • 写-个计算器,要求实现加减乘除功能,并且能够循环接收新的数据,通过用户交互实现。
public class test {
    public static void main(String[] args) {
       Scanner scanner = new Scanner(System.in);
       System.out.println("请输入你要计算的算式,注意格式为:数字 符号 数字");
        System.out.println("输入字母'z'时结束运行");
       while(!scanner.hasNext("z"))
       {
           double sum=0;
           double num1 = scanner.nextInt();
           String sign = scanner.next();
           double num2 = scanner.nextInt();
           switch(sign)
           {
               case "+":sum = Add(num1,num2);System.out.println(sum);break;
               case "-":sum=Less(num1,num2);System.out.println(sum);break;
               case "*":sum = Mul(num1,num2);System.out.println(sum);break;
               case "/":sum = Div(num1,num2);System.out.println(sum);break;
           }
       }
    }
    public static double Add(double num1, double num2)
    {

        return num1 + num2;
    }
    public static double Less(double num1, double num2)
    {
        return num1 - num2;
    }
    public static double Mul(double num1, double num2)
    {
        return num1 * num2;
    }
    public static double Div(double num1, double num2)
    {
        if(num2!=0)
        {
            return num1 / num2;
        }
        else
        {
            return 0;
        }
    }
}

三种初始化及内存分析

内存分析

java内存

  • 存放new的对象和数组
  • 可以被所有的线程共享.不会存放别的对象引用
  • 存放基本变量类型(会包含这个基本类型的具体数值)
  • 引用对象的变量(会存放这个引用在堆里面的具体地址)
方法区
  • 可以被所有的线程共享
  • 包含了所有的class和static变量

三种初始化

静态初始化

int[] a = {1,2,3};
Man[ ] mans = {new Man(1,1),new Man(2,2)};

动态初始化

int[]a = new int[2];
a[0]=1;
a[1]=2;

数组的默认初始化

  • 数组是引用类型,它的元素相当于类的实例变量,因此数组-经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化。

Arrays类

  • 数组的工具类java.util.Arrays
  • 由于数组对象本身并没有什么方法可以供我们调用,但API中提供了一个工具类Arrays供我们使用,从而可以对数据对象进行一 些基本的操作。
    具有以下常用功能:
  • 给数组赋值:通过fill方法。
  • 对数组排序:通过sort方法,按升序。
  • 比较数组:通过equals方法比较数组中元素值是否相等。
  • 查找数组元素:通过binarySearch方法能对排序好的数组进行二分查找法操作。
  • 输出字符串:toString

稀疏数组

  • 当一个数组中大部分元素为0,或者为同一值的数组时,可以使用稀疏数组来保存该数组。
    稀疏数组的处理方式是:
  • 记录数组一共有几行几列,有多少个不同值
  • 把具有不同值的元素和行列及值记录在-个小规模的数组中,从而缩小程序的规模
    (行 列 有效数据)
posted @ 2020-08-16 13:16  沐乃伊  阅读(155)  评论(0编辑  收藏  举报