2. Java基础语法

本文详细解析Java基础,涵盖类型转换的自动与强制转换、运算符的使用、键盘录入、程序流程控制(if, switch, for, while, do-while)及数组操作,包括排序、随机数、数组内存理解等,是Java入门者的必备指南。
摘要由CSDN通过智能技术生成


1. 类型转换

1.1 自动类型转换

在这里插入图片描述

1.2 表达式的自动类型转换

在这里插入图片描述

public class ClassDemo {
    public static void main(String[] args) {
        //表达式的自动类型转换
        byte a = 10;
        int b = 20;
        double c = 1.0;
        int rs1 = a + b;
        double rs2 = a + b + c;
        System.out.println(rs1); //30
        System.out.println(rs2); //31.0

        //面试题
        byte i = 10;
        byte j = 20;
        //byte k = i + j; //报错,因为i和j默认是int来运算
        int k = i + j;
        System.out.println(k); //30
    }
}

1.3 强制类型转换

在这里插入图片描述
在这里插入图片描述

2. 运算符

2.1 基本算数运算符

在这里插入图片描述
在这里插入图片描述

2.2 +符号做连接符

在这里插入图片描述

2.3 自增自减运算符

在这里插入图片描述
在这里插入图片描述

//面试题
public class Operator {
    public static void main(String[] args) {
        int k = 3;
        int p = 5;
        //k 3 4 5 4
        //p 5 4 3 4
        //rs     3   + 5  -  4   + 4   - 5   + 4   + 2
        int rs = k++ + ++k - --p + p-- - k-- + ++p + 2;
        System.out.println(k); //4
        System.out.println(p); //4
        System.out.println(rs); //9
    }
}

2.4 赋值运算符

在这里插入图片描述

2.5 关系运算符

在这里插入图片描述

2.6 逻辑运算符

在这里插入图片描述
在这里插入图片描述

2.7 三元运算符

在这里插入图片描述
在这里插入图片描述

//面试题
public class Operator {
    public static void main(String[] args) {
        int i = 10;
        int j = 30;
        int k = 50;
        int temp = i > j ? i : j;
        int rsMax = temp > k ? temp : k;
        System.out.println(rsMax); //50
    }
}

2.8 运算符优先级

在这里插入图片描述

3. 键盘录入技术及API

在这里插入图片描述
在这里插入图片描述

4. 程序流程控制

在这里插入图片描述

4.1 顺序结构

在这里插入图片描述

4.2 分支结构

4.2.1 if (适合区间匹配)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.2.2 switch (适合值匹配)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.3 循环结构

4.3.1 for循环

在这里插入图片描述
在这里插入图片描述

public class ForLoop {
    public static void main(String[] args) {
        for (int i = 100; i <= 999 ; i++) {
            int ge = i % 10;
            int shi = i / 10 % 10;
            int bai = i / 100;
            if((ge*ge*ge + shi*shi*shi + bai*bai*bai) == i){
                System.out.print(i+"\t"); //153	370	371	407
            }
        }
    }
}

4.3.2 while循环

在这里插入图片描述
在这里插入图片描述

4.3.3 do-while循环

在这里插入图片描述
在这里插入图片描述

4.3.4 死循环

在这里插入图片描述
在这里插入图片描述

import java.util.Scanner;

public class DeadLoop {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int okPassword = 520;
        while(true){
            System.out.println( "请输入正确密码:");
            int password = sc.nextInt();
            if(password == okPassword){
                System.out.println("成功了");
                break;
            }else{
                System.out.println("密码错误");
            }
        }
    }
}

4.3.5 循环嵌套

在这里插入图片描述

4.3.6 跳转关键字:break、continue

在这里插入图片描述
在这里插入图片描述

5. 随机数Random类

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

import java.util.Random;
import java.util.Scanner;

public class RandomTest {
    public static void main(String[] args) {
        Random r = new Random();
        int luckNumber = r.nextInt(100) + 1;

        Scanner sc = new Scanner(System.in);
        while(true){
            System.out.println("请您输入数据(1-100):");
            int guessNumber = sc.nextInt();

            if(guessNumber > luckNumber){
                System.out.println("过大");
            }else if(guessNumber < luckNumber){
                System.out.println("过小");
            }else{
                System.out.println("答对了");
                break;
            }
        }
    }
}

6. 数组

在这里插入图片描述
在这里插入图片描述

6.1 数组的定义

6.1.1 静态初始化数组

在这里插入图片描述
在这里插入图片描述

6.1.2 数组的访问

在这里插入图片描述
注意事项:
在这里插入图片描述

6.1.2 动态初始化数组

在这里插入图片描述
在这里插入图片描述

6.2 数组的遍历

在这里插入图片描述

6.3 数组的案例

6.3.1 数组元素求和

在这里插入图片描述

6.3.2 数组求最值

在这里插入图片描述

6.3.3 猜数字游戏

在这里插入图片描述

import java.util.Random;
import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        int[] data = new int[5];

        Random r = new Random();
        for (int i = 0; i < data.length; i++) {
            data[i] = r.nextInt(20) + 1;
        }

        Scanner sc = new Scanner(System.in);
        OUT:
        while(true){
            System.out.println("请您输入一个1-20之间的整数:");
            int guessData = sc.nextInt();

            for (int i = 0; i < data.length; i++) {
                if(data[i] == guessData){
                    System.out.println("您已经猜中了该数据,其索引值是:" + i);
                    break OUT; //结束整个死循环
                }
            }
            System.out.println("猜的数据在数组中不存在,请重新猜测");
        }

        for (int i = 0; i < data.length; i++) {
            System.out.println(data[i] + "\t");
        }
    }
}

6.3.4 随机排名

在这里插入图片描述

import java.util.Random;
import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        int[] codes = new int[5];

        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < codes.length; i++) {
            System.out.println("请您输入" + (i+1) + "个员工的工号:");
            int code = sc.nextInt();
            codes[i] = code;
        }

        Random r = new Random();
        for (int i = 0; i < codes.length; i++) {
            int index = r.nextInt(codes.length);

            int temp = codes[index];
            codes[index] = codes[i];
            codes[i] = temp;
        }

        for (int i = 0; i < codes.length; i++) {
            System.out.println(codes[i] + "\t");
        }
    }
}

6.3.5 数组排序

在这里插入图片描述
在这里插入图片描述

import java.util.Random;
import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        int[] arr = {5, 2, 3, 1};

        for (int i = 0; i < arr.length - 1; i++) {
            //i=0 比较次数 3 j = 0 1 2
            //i=1 比较次数 2 j = 0 1
            //i=2 比较次数 1 j = 0
            for (int j = 0; j < arr.length - i - 1; j++) {
                if(arr[j] > arr[j+1]){
                    int temp = arr[j+1];
                    arr[j+1] = arr[j];
                    arr[j] = temp;
                }
            }
        }
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i] + "\t");
        }
    }
}

6.4 数组的内存图

在这里插入图片描述
示例:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
两个数组变量指向同一个数组对象:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.5 数组使用常见问题

在这里插入图片描述

7. Debug

在这里插入图片描述

8. 方法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

8.1 方法定义、调用

8.1.1 完整版

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

8.1.2 其他方式

在这里插入图片描述

8.2 方法使用常见问题

在这里插入图片描述

8.3 方法案例

在这里插入图片描述

8.3.1 判断整数是奇数还是偶数

在这里插入图片描述

import java.util.Random;
import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        check(11);
        check(100);
    }

    public static void check(int num){
        if(num % 2 == 0){
            System.out.println(num + "是偶数");
        }else{
            System.out.println(num + "是奇数");
        }
    }
}

8.3.2 数组求最值

在这里插入图片描述

import java.util.Random;
import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        int[] ages = {23, 19, 25, 78, 34};
        int max = getMax(ages);
        System.out.println("最大值是:" + max);
    }

    public static int getMax(int[] arr){
        int max = arr[0];
        for (int i = 1; i < arr.length; i++) {
            if(arr[i] > max){
                max = arr[i];
            }
        }
        return max;
    }
}

8.4 方法调用的内存图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

另一个例子:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

8.5 方法的参数传递机制

在这里插入图片描述

8.5.1 基本类型的参数传递

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

8.5.2 引用类型的参数传递

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

8.6 方法的参数传递案例

8.6.1 打印数组内容

在这里插入图片描述

public class Test {
    public static void main(String[] args) {
        int[] ages = {10, 20, 30, 40};
        printArray(ages);

        int[] numbers = {1, 2, 3, 4, 5};
        printArray(numbers);
    }

    public static void printArray(int[] arr){
        System.out.println("[");

        if(arr != null && arr.length > 0) {
            for (int i = 0; i < arr.length; i++) {
                /*
                if(i == arr.length - 1){
                    System.out.println(arr[i]);
                }else{
                    System.out.println(arr[i] + ",");
                }
                */
                System.out.println(i == arr.length - 1 ? arr[i] : arr[i] + ",");
            }
        }
        System.out.println("]");
    }

8.6.2 从数组中查询元素的索引返回

在这里插入图片描述

public class Test {
    public static void main(String[] args) {
        int[] ages = {10, 20, 30, 40};
        int index = searchIndex(ages, 20);
        System.out.println(index);
    }

    public static int searchIndex(int[] arr, int data){
        for (int i = 0; i < arr.length; i++) {
            if(arr[i] == data){
                return i;
            }
        }
        return -1;
    }
}

8.6.3 比较两个数组内容是否一样

在这里插入图片描述

public class Test {
    public static void main(String[] args) {
        int[] arr1 = {10, 20, 30, 40};
        int[] arr2 = {10, 20, 30, 40};
        System.out.println(compare(arr1, arr2));
    }

    public static boolean compare(int[] arr1, int[] arr2){
        if(arr1.length == arr2.length){
            for (int i = 0; i < arr1.length; i++) {
                if(arr1[i] != arr2[i]){
                    return false;
                }
            }
            return true;
        }else{
            return false;
        }
    }
}

8.7 方法重载

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

8.8 return关键字单独使用

在这里插入图片描述

9. 包

在这里插入图片描述

10. 权限修饰符

在这里插入图片描述
在这里插入图片描述

11. final关键字

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值