java基础语法二

一、流程控制
1.1 用户交互Scanner

java.util.Scanner jdk5的新特征

用于获取用户的输入

// 创建一个扫描器对象,用于接收键盘数据
Scanner sr = new Scanner(System.in);
// 使用next获取字符串,不能字符串中没有空格,有空格结束。
String name = sr.next();
// 接收字符串,以enter结束,字符串中可以带有空格。
String address = sr.nextLine();
// 关闭IO流,以达到节约资源
sr.close;
// 接收整数、浮点类型
int i = sr.nextInt();
double d = sr.nextDouble();
1.2 顺序结构

java的基本结构是顺序结构,就一条一条的执行。从上到下的顺序进行。依次执行。

1.3 选择结构
  • if单选泽结构
  • if双选择结构
  • if多选择结构
  • 嵌套的if结构
  • switch多选择结构
switch(expression){

case value:

 		//语句
   

}

switch语句中变量类型可以是:

​ byte、short、int或者char

从Java SE 7 支持String类型,同时case标签必须为字符串常量或者字面量。

1.4 循环结构
  • while 循环

    while(布尔表达式) {
    
      // 循环语句
    }
    
  • do…while循环

    do {
        // 循环语句
    }while(布尔表达式);
    
  • for 循环

    for(初始化;布尔表达式;循环控制变量){
    	// 循环体
    }
    
  • Java 5中引用了用于数组的增强型for循环

    for(声明语句 : 表达式){
    		
    	// 循环体
    }
    
    int[] numbers = {15,12,30,50};
    for(int i : numbers) {
        System.out.println(i);
    }
    
1.5 break & continue

break 终止循环

continue 终止本次循环

二、方法详解

2.1 什么是方法

是一段用来完成特定功能的代码片段

2.2 方法定义以及调用

修饰符 返回值类型 方法名(参数类型 参数名){

      // 方法体
    
    return 返回值;
}

方法的调用

​ 对象名.方法名(实参列表);

java是值传递

2.3 方法重载

(在一个类中)

规则

  • 方法名称必须相同。
  • 参数列表必须不同(个数不同、或者类型不同、参数排列顺序不同等)。
  • 方法的返回类型可以相同也可以不相同。
  • 仅仅返回类型不同不足以成为方法的重载。
2.4 命令行传参

靠传递命令行参数给main() 函数实现。

2.5 可变参数

jdk1.5的开始使用。

  • 在方法声明中,在指定参数类型后加一个省略号(…)
  • 一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它之前声明。
public static void printMax(int ... numbers) {
    if(numbers.length == 0) {
        System.out.println("No argument passed");
        return ;
    }
    int result = numbers[0];
    
    // 排序
    for(int i=1; i< numbers.length; i++) {
        if(numbers[i] > result) {
            result = numbers[i];
        }
    }
    System.out.println("The Max value is " + result);
}
2.6 递归

递归包括两个部分:递归头、递归体。

自己调用自己。

// 递归 5阶乘
public class DiGui {
    public static void main(String[] args) {
        DiGui di = new DiGui();
        System.out.println(di.dg(5));
    }

    private int dg(int i) {
        if(i ==1 ){
            return 1;
        } else {
            return dg(i-1)*i;
        }
    }
}
三 、数组
3.1 数组概述
  • 相同类型数据的有序集合。
  • 数组中每个数据成为元素,通过下标访问元素。(下标是从0开始的)
3.2 数组声明创建

数组的类型 数组的名字 = 变量的值

// 定义有10个元素的一维数组
int[] arr = new int[10];

使用length可以得到数组的长度。

java内存分析:

image-20210602011622605

静态初始化

int[] a = {1,2,3};
Food[] foods = {new Food("白菜","萝卜"),new Food("云","水")};

​ 动态初始化

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

数组的特点:

  • 数组的长度是确定的,一旦创建,它的大小就不能改变。
  • 元素必须是相同类型,不允许出现混合类型。
  • 数组中的元素可以是任何数据类型,包括基本数据类型和引用数据类型。
  • 数组变量属引用类型,数组也可以看成是对象。
3.3 数组使用
public class Arrays {
    public static void main(String[] args) {
        int[] a = {10,8,3,2,1};
        Arrays.printArr(a);
        System.out.println();
        a = reArry(a);
        Arrays.printArr(a);
    }
    // 进行数组翻转
    public static int[] reArry(int[] result) {
        int[] b = new int[result.length];
        for(int i=0, j=result.length-1; j>=0; i++,j--) {
            b[i] = result[j];
        }
        return b;
    }
    // 输出数组
    public static void printArr(int[] arrys) {
        for(int k : arrys) {
            System.out.print(k + " ");
        }
    }
}
3.4 多维数组

多维数组是由一维数组组成的,其每一个元素都是一个一维数组。

int[][] a = new int[3][2];
3.5 Arrays类

Arrays工具类在java.util.Arrays下

通过查看API可以使用相应的类的方法。(在那里之前,我们需要导入相应的类)

冒泡排序:

// 冒泡排序
    /*
     *  1、比较数组中,两个相邻的元素,如果第一个比第二个元素大,就交换元素。
     *  2、每一次比较,都会产生出一个最大,或者最小的数字
     *  3、下一轮则可以少一次排序
     *  4、依次循环,直到结束。
     */
    public static  int[] sort(int[] arr) {
        for(int i = 0; i < arr.length-1; i++) {
            // 用flag标识减少没有意义的比较,可以用提高效率。
            boolean flag = false;
            for(int j=0; j < arr.length - i -1; j++) {
                if(arr[j] > arr[j+1]) {
                    int temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                    flag = true;
                }
            }
            if (flag == false) {
                break;
            }
        }
        return  arr;
    }
3.6 稀疏数组

一个数组中大部分元素是0,或者同一值的数组时,可以使用稀疏数组来保存该数组。

稀疏数组的处理方式是:

  • 记录数组一共有几行几列,有多少个不同值。
  • 把具有不同值的元素和行列以及值记录在一个小规模的数组中,从而缩小程序的规模。
image-20210604001846219

左边为原始数组,右边表稀疏数组。(进行的压缩,以达到节省空间的效果)

  1. ​ 原始数组转为稀疏数组的步骤:
  2. ​ 获取有效值的个数
  3. ​ 创建一个稀疏数组的数组
  4. ​ 遍历原始数组,把其中非零的值存放在稀疏数组中
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

苍茫云雾

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

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

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

打赏作者

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

抵扣说明:

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

余额充值