IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 2022年2月3日 -> 正文阅读

[Java知识库]2022年2月3日

可变参数

  1. 在方法声明中,在指定参数类型后加一个省略号(…)
  2. 一个方法只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它之前声明。
public class Demo_6 {
    public static void main(String[] args) {
        //可变参数
        Demo_6 demo_6 = new Demo_6();
        demo_6.test(1,2,3,4,5,6,7);
    }
    public void test(int x,int y,int... i){
        //可变参数 必须在 普通参数 后面
        for (int i1 = 0; i1 < i.length; i1++) {
            System.out.print(""+i[i1]+"\t");
        }
    }
}

递归

求阶乘

package Recursion;

import java.util.Scanner;

public class Demo_2 {
    //阶乘
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int x = scanner.nextInt();
        System.out.println(Factorial1(x));
    }
    public static int Factorial1(int x){
        if(x < 0){System.out.println("参数错误") return -1;}
        if(x == 0)return 1;
        else{return x * Factorial1(x - 1);}
    }
}

或者用三目运算符偷懒。。。。。

public static int Factorial2(int x){
        return x == 1 ? 1 : x * Factorial2(x - 1);
    }

嗷对了,阶乘的英文是 factorial (adj.阶乘的)

由于Java是栈机制,递归的消耗会很大,尽量别用

计算器作业


import java.util.Scanner;

public class Homework {
    //计算器
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        do{
            System.out.print("请输入第一个数字:");
            double a = scanner.nextDouble();
            System.out.print("请输入第二个数字:");
            double b = scanner.nextDouble();
            System.out.print("请输入要进行的运算:");
            String c = scanner.next();
            switch(c){
                case "+":System.out.println(""+a+" "+c+" "+b+" ="+" "+(a+b));break;
                case "-":System.out.println(""+a+" "+c+" "+b+" ="+" "+(a-b));break;
                case "*":System.out.println(""+a+" "+c+" "+b+" ="+" "+(a*b));break;
                case "/":System.out.println(""+a+" "+c+" "+b+" ="+" "+((double)a/b));break;
                case "%":System.out.println(""+a+" "+c+" "+b+" ="+" "+(a%b));break;
                default: System.out.println("输入不合理!");break;
            }
            System.out.println("请问是否要继续(Y/N):");
            String c1 = scanner.next();
            if(c1.equals("Y"))continue;
            else break;
        }while(true);
        scanner.close();
    }
}

比较两个字符串是否相同:

String a = "aaa";
String b = "bbb";
a.equals(b);
//返回false

有一点十分难受:

System.out.println("请问是否要继续(Y/N):");
String c1 = scanner.next();
System.out.print(c1 == "Y");
System.out.println(c1.equals("Y"));

上面false,下面true
可能的解释:
1、由于c1和"Y"地址不同,采用上面的比较法,输出肯定是false
2、通常采用equals进行比较,equals运用了Java的重载。

next() 和 nextLine() 的区别
hasNext() 和 hasNextLine() 的区别
判断字符串是否相等
Java字符串方法大全(超超超详细)

数组

数组的声明和创建

package Praparation;

public class Demo_1 {
    public static void main(String[] args) {
        //数组的定义
        int[] a = {1,2,3,4,5,6,7};
        char[] b = {'a','b','c','d','e'};

        //数组的声明,没有分配空间
        char[] c1;
        char c2[];//不建议
        //数组的创建,分配空间了
        c1 = new char[5];
        //数组的赋值
        c1[0] = 'a';
        c1[1] = 'b';
        c1[2] = 'c';
        c1[3] = 'd';
        c1[4] = 'e';

        int[] num = new int[10];

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

三种初始化及内存分析

内存分析


图源B站狂神
在这里插入图片描述

图源B站狂神

  1. 声明数组时,将变量类型放在栈中
  2. 创建数组时,在堆中开辟了数组的空间并准备储存数据
  3. 赋值数组时,在堆中给每一个位置赋值

三种初始化

package Praparation;
public class Initialization {
    public static void main(String[] args) {
        //静态初始化
        int[] a = {1,2,3};//创建+赋值
        Man[] men = {new Man(),new Man()};//引用类型
        //动态初始化,后期赋值,包含默认初始化
        int[] b = new int[10];
        b[0] = 10;
        //默认初始化
    }
}

默认初始化值:

  1. 整数类型(byte、short、int、long)的基本类型变量的默认值为0。
  2. 单精度浮点型(float)的基本类型变量的默认值为0.0f。
  3. 双精度浮点型(double)的基本类型变量的默认值为0.0d。
  4. 字符型(char)的基本类型变量的默认为 “/u0000”。
  5. 布尔性的基本类型变量的默认值为 false.
  6. 引用类型的变量是默认值为 null。
  7. 数组引用类型的变量的默认值为 null。
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-02-04 10:54:21  更:2022-02-04 10:56:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 10:33:02-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码