java语法(分支,方法,递归);Debug使用

news2024/11/13 23:02:05

java语法

x 操作符

->分支,循环,方法

分支

条件的三种if

if

这样的写法在方法中常用

if…else…

public class IfDemo01 {    
public static void main(String[] args) {        
int a =3;        
final int DAY = 3;        
if(a<DAY){         
}else if (a<DAY){
}else {
//保证了结构完整性            
System.out.println("不运行");       
}    
}
}

switch…case…

注意事项
  1. 有限个(少量)
  2. switch…case…不能使用浮点类型
  3. break;
问题
条件的类型

char/int/short/byre

String

enum(枚举类型)

case穿透
package com.ffyc.condition;

/**case穿透
 * 80~100 A 8,9,10
 * 70~79 B 7
 * 60~69 C 6
 * 50~59 D 5
 * 50< F 0~4
 */
public class SwitchDemo {
    public static void main(String[] args) {
        int s = 70;
        s/=10;
        switch (s){
            case 10:
            case 9:
            case 8:
                System.out.println("A");
                break;
            case 7:
                System.out.println("B");
                break;
            case 6:
                System.out.println("C");
                break;
            case 5:
                System.out.println("D");
            default:
                System.out.println("F");
        }
    }
}

菜单界面——计算器
package com.ffyc.condition;
/**
 * 带界面的计算机
 */

import java.util.Scanner;

public class SwitchDemo01 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        System.out.println("--------------------");
        System.out.println("1.加法\t 2.减法");
        System.out.println("3.乘法\t 4.除法");
        System.out.println("5.幂\t 6.进制转换");
        System.out.println("0.退出");
        System.out.println("--------------------");
        System.out.print("请选择:");
        String choice = sc.nextLine();

        int t  = Integer.parseInt(choice);
        if (t<0||t>6){
            System.out.println("输入不合法....");
            System.exit(-1);
        }

        System.out.print("请输入第一个数:");
        //String  line = sc.nextLine();
        int a = Integer.parseInt(sc.nextLine());//line-->(sc.line)
        //a^b
        System.out.print("请输入第二个数:");
        int b = Integer.parseInt(sc.nextLine());

        String s = "";
        String str="";
        switch (choice){
            case"1":
                str="+";
                break;
            case"2":
                str="-";
                break;
            case"3":
                str="*";
                break;
            case"4":
                str="/";
                if(b==0){
                    System.out.println("除数不能为零");
                }else {
                    s= 1.0*a / b+"";
                }
                break;
            case"5":
                str="^";
                int p=1;
                for (int i = 1;i<=b;i++){
                    p*=a;
                }
                s=p+"";
                break;
            case"6":
                //int x=Integer.parseInt(sc.nextLine());
                String change="";
                if (b==2){
                    str="化为2进制>>";
                    s=Integer.toBinaryString(a);
                } else if (b == 16) {
                    str="化为16进制>>";
                    s=Integer.toHexString(a);
                }else {
                    System.out.println("对不起,只能进行十进制向2/16进制的转换...");
                }
                break;
            case"0":
                System.out.println("程序退出>>>");
                break;
            default:
                break;
        }
        System.out.println(a +str+b+"="+s);

    }
}

注:只完成了部分功能

循环

while

  1. while…do…
  2. do…while…

for

几个关键字

  1. break
  2. continue
  3. return
package com.ffyc.Loop;

public class LoopDemo {
    public static void main(String[] args) {
        for (int i=0;i<5;++i){
            for (int j=0;j<5;++j){
                //if (i+j==5) break;//跳出当前循环j
                //if (i+j==5) continue;//跳过当前变量值
                if (i+j==5) return;//结束这个方法/函数
                System.out.println(j+"\t");
            }
        }
    }
}

案例

画图

用for循环

以及 九九乘法表

原理
eg:画三角形

在这里插入图片描述
在这里插入图片描述
第一个:
在这里插入图片描述

在画

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

两层循环构造建议

验证:

package com.ffyc.Loop;

public class DrawDoubleLoopDemo01 {
    public static void main(String[] args) {
        int m = 100;
        int n=  1000;

        long s1= System.nanoTime();//获取当前时间

        for (int i=0;i<n;++i){
            for (int j=0;j<m;++j){
                ;
            }
        }
        long s2= System.nanoTime();//获取当前时间
        System.out.println("循环一:"+(s2-s1)+"ns");

        long s3 =System.nanoTime();
        for (int i=0;i<m;i++){
            for (int j=0;j<n;++j){

            }
        }
        long s4 =System.nanoTime();
        System.out.println("循环二:"+(s4-s3)+"ns");
    }
}

在这里插入图片描述

外小里大 省时间

    *
   ***
  *****
 *******
  $ * $
    *
    *

for循环不写循环体–》空转

方法(函数)

目的 有啥用?

代码块复用—>高级叫Api接口调用

package com.ffyc.Method;

public class MethodDemo {
    /**
     * 定义一个函数
     *直角三角形
     * @param n 三角形高度
     */
    public static void triangle(int n){

        for (int i=1;i<n;++i) {//n:高度
            for (int j=1;j<=i;++j){
                System.out.print("*");
            }
            System.out.println();
        }
    }

    /**
     * 对称的直角三角形
     * @param n 高度
     */
    public static void triangle(int n,String tu){//tu——改变图标
    //同名可以用——重载
        for (int i=1;i<n;++i) {//n:高度
            for (int k=1;k<n-i;k++){
                System.out.print(" ");//空格
            }
            for (int j=1;j<=i;++j){
                System.out.print(tu);
            }
            System.out.println();
        }
    }



    public static void main(String[] args) {

        triangle(5);
        triangle(5,"$");
    }
}

main

    public static void main(String[] args) {
        
    }
public

访问控制符

static

main需要static,所有方法static

void

返回类型void–不需要返回值

main

方法名称

String[]args

参数列表

方法调用

  1. 直接调用:f(2)
  2. 作为结果:
    在这里插入图片描述

注意:

方法里面不能套方法

java 属性位置 (在方法外): 只能写一句 --> 要写只能static{}在语句块里

传参

形参

即:形式参数,参与方法使用

实参

实际在使用过程中传入参数的拷贝–值传递

多参数传递,不定参数

在这里插入图片描述

方法重载:

​ ——在一个类(一个class{}),方法名完全相同,参数的类型或者个数不一致。

优先选择精确的,有两个参数的就不选择模糊的

递归Recursion

建包–防止类名冲突

概念

自己调自己
英文含义
在这里插入图片描述

迭代法

在这里插入图片描述

递归方法

f() { f() }//函数

main{//用

f();

}

栈溢出
在这里插入图片描述

递归规律

  1. 起始条件:找规律
  2. 终止/跳出条件
    在这里插入图片描述
    在这里插入图片描述

数据结构-栈 - 理解:
在这里插入图片描述

阶乘:
在这里插入图片描述

package com.ffyc.Recursion;/** * 斐波那契数列 */public class RecursionDemo02 {    public static int f(int n){    if ((n==1)||(n==2)) {        return 1;    }else {        return f(n-1)+f(n-2);    }    }    /**     * 迭代法     */public static int fac(int n){    int a=1;    int b=1;    int c=0;    for (int i=3; i <=n ; i++) {        c=a+b;        a=b;        b=c;    }    return c;}    public static void main(String[] args) {    //比较两个用时,数字越大,递归越慢;迭代快,但递归简单        long s1 = System.nanoTime();        f(20);        long s2 = System.nanoTime();        System.out.println("递归:"+(s2-s1)+"ns");        long s3 =System.nanoTime();        fac(20);        long s4 = System.nanoTime();        System.out.println("迭代:"+(s4-s3)+"ns");    }}

递归问题:大量重复
在这里插入图片描述

解决方法:优化递归——存储已经算出的结果

在这里插入图片描述

案例3:输一个10进制数,用递归把它转化为二进制数

跳出条件:n<2

规律:n/2

案例4:输入123,输出1+2+3=6

跳出条件:n%10<10

规律:n%10/10

案例5:辗转相除求最大公约数

在这里插入图片描述

数组

概念

存储多个相同类型数据,有固定长度(Integer.MAx VALUE-8)。有时需要删除或者扩容。

数组–>链表–>堆

索引/下标 连续的 O(1)

定义数组

固定长度,定值
int[] a = {1,2,3,4};

动态数据(推荐)
int[] a = new int [6];
other
int [] a = new int []{1,2,3};

数组特性

固定长度

数组名称.length ——属性

索引从0开始

[0,a.length-1]

访问数组

a[i]

数组遍历

循环
/** * 数组遍历:普通for循环 */for (int i = 0; i < a.length; i++) {    System.out.print(a[i]+"\t");}System.out.println();
}
增强型for
  /**     * 增强型for 循环     * 不涉及索引     */   
for(int t : a){        //t像一个桶;把a都扔进t        
    System.out.print(t+"\t");    
}
数组案例
在这里插入图片描述
/**
*第二大的函数
*/

public static int second(int[] a) {
        int max = a[0];
        int second = a[1];

        if (max < second) {
            int t = max;
            max = second;
            second = t;
        }
        for (int i = 2; i < a.length; i++) {
            int curr = a[i];

            if (curr > max) {
                second = max;
                max = curr;
            } else if (curr < second) {
                continue;
            } else {
                second = curr;
            }
        }
        return second;
    }
改编力扣

元素:0~1000,找出数组中出现次数最多的元素。

算法无非时间换空间or空间换时间。

原理图

package com.ffyc.array;

import java.util.Arrays;



/**
 * 元素:0~1000,
 * 找出数组中出现次数(频率)最多的元素。
 */
public class ArrayDemo02 {
    public static void main(String[] args) {
        int[] a = {1,4,8,4,5,4,88,88,55,0,55,6,7,8,9,9,6,2,5,88,88,88,8,8,88,8,999};
        /**
         * 造一个数组,用索引表示出现次数
         */
        int[] bukets = new int[1001];//0~1000

        for (int i = 0; i < a.length; i++) {
            int index = a[i];
            bukets[index]= bukets[index]+1;
        }
        int max = bukets[0];
        int pos =0;
        for (int i=1;i<a.length;++i){
            if (max<bukets[i]){
                max = bukets[i];
                pos = i;
            }
        }
        System.out.println("pos:"+pos+",max:"+max);
    }
}

javaDebug

步骤

  1. 打断点(一般在if,for那一行)
  2. 追踪
  3. Step over 下一行
  4. Step in 进去函数/方法
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1926249.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

c语言中的字符串函数

strstr函数 函数介绍 strstr 用于在一个字符串中查找另一个字符串的首次出现。 我们来看这个函数的参数名字&#xff1a;haysytack&#xff08;干草堆&#xff09;needle&#xff08;针&#xff09;,这个其实就是外国的一句谚语&#xff1a;在干草堆中找一根针&#xff0c;就…

关于机械键盘的购买,该怎么选择?

一.关于轴体的选择。 1.青轴&#xff1a;青轴是机械键盘最有段落感的轴&#xff0c;声音比较大&#xff0c;以吵死人别人著称。有人将其比喻为Cherry的春天&#xff0c;爽快清脆的段落感如春天般舒畅。适合在宿舍、咖啡厅&#xff0c;图书馆使用。&#xff08;我装的 &#xf…

链表的回文结构(链表的中间节点+反转链表)

链表的回文结构 一.链表的中间节点思路1&#xff1a;暴力求解思路2&#xff1a;快慢指针 二.返回倒数第k个节点思路1&#xff1a;暴力求解思路2&#xff1a;快慢指针 三.反转链表思路1&#xff1a;头插法思路2&#xff1a;反转指针的指向 四.链表的回文结构思路1&#xff1a;利…

阿里云搭建vps服务器的过程

最近突发奇想想要搭建一个阿里云的的vps服务器&#xff0c;下面是搭建的过程&#xff1a; 首先&#xff0c;登录阿里云网站&#xff1a; 搜索&#xff0c;esc控制台&#xff1a; 点击创建实例&#xff1a; 选择地区&#xff1a; 选择实例规格&#xff1a; 选择镜像&#x…

【论文速读】| JADE:用于大语言模型的基于语言学的安全评估平台

本次分享论文&#xff1a;JADE : A Linguistics-based Safety Evaluation Platform for Large Language Models 基本信息 原文作者&#xff1a;Mi Zhang, Xudong Pan, Min Yang 作者单位&#xff1a;Whitzard-AI, System Software and Security Lab Fudan University 关键…

Vue3学习体验(一)

搭建工程 使用vue-cli脚手架创建vue3工程 vue create vue3-app-vue-cliVue-cli官网&#xff1a;https://cli.vuejs.org/zh/guide/installation.html 使用vite搭建vue3工程 npm init表示临时的下载vite应用来创建vue3工程&#xff0c;工程名称为vue3-app-vite npm init vit…

Vue3 markRaw的使用

markRaw 作用:将一个对象标记为不可以被转化为代理对象。返回该对象本身。 应用场景: 1.有些值不应被设置成响应式时,例如复杂的第三方类库等 2.当渲染具有不可变数据源的大列表时,跳过响应式转换可以提高性能 3.在动态渲染组件的时候我们就可以使用 markRaw 包裹。markRaw 的…

Redis 7.x 系列【23】哨兵模式

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Redis 版本 7.2.5 源码地址&#xff1a;https://gitee.com/pearl-organization/study-redis-demo 文章目录 1. 概述2. 工作原理2.1 监控2.2 标记下线2.3 哨兵领袖2.4 新的主节点2.5 通知更新 3. …

jvm 07 GC算法,内存池

01 垃圾判断算法 1.1引用计数算法 最简单的垃圾判断算法。在对象中添加一个属性用于标记对象被引用的次数&#xff0c;每多一个其他对象引用&#xff0c;计数1&#xff0c; 当引用失效时&#xff0c;计数-1&#xff0c;如果计数0&#xff0c;表示没有其他对象引用&#xff0c;…

【YOLO系列】快速部署YOLOv5(Windows)

引言 在计算机视觉领域&#xff0c;目标检测是至关重要的任务之一&#xff0c;它涉及识别图像或视频中的对象&#xff0c;并将其分类和定位。近年来&#xff0c;**YOLO&#xff08;You Only Look Once&#xff09;**算法因其速度与精度的平衡而变得非常流行。在这篇博文中&…

【触摸屏】【红十字会学习系统】功能模块:视频 + AI拍照合成

项目背景 提升公众急救能力&#xff1a;确保每个人都能在紧急情况下采取正确的急救措施&#xff0c;减少伤害&#xff0c;挽救生命。培养人道主义价值观&#xff1a;通过教育和培训&#xff0c;传播红十字精神&#xff0c;促进社会对弱势群体的关注与支持。建立社区响应网络&a…

怎么减少pdf格式的内存,怎么减少pdf文件大小

在数字化时代&#xff0c;pdf文件因其格式稳定、兼容性强等特点&#xff0c;成为工作与学习中的常用文档格式。然而&#xff0c;较大的pdf文件往往给存储和传输带来不便。本文将为你详细介绍如何巧妙减小pdf文件内存&#xff0c;助你轻松解决文件传输和存储的烦恼。 让我们来看…

Arduino PID整定

Arduino PID整定 Tuning an Arduino PID Introduction to Tuning an Arduino PID 例如&#xff0c;我们可能想把一箱水加热到华氏 100 度。 我们需要能够在不同的条件下实现这一目标&#xff0c;例如房间的环境&#xff08;周围&#xff09;温度。 此外&#xff0c;我们可能会…

CoreIDRAW标注尺寸箭头怎么修改 CoreIDRAW标注尺寸数字怎么修改

*CorelDraw&#xff1a;数字创意的无限可能** 在数字艺术与设计领域&#xff0c;CorelDraw无疑是一款备受推崇的图形设计软件。它不仅为设计师、艺术家和创意工作者提供了强大的工具集&#xff0c;还以其直观易用的界面和卓越的性能赢得了广泛的赞誉。本文将深入探讨CorelDraw…

【Playwright+Python】系列之元素定位

一、常见元素定位 定位器是 Playwright 自动等待和重试能力的核心部分。简而言之&#xff0c;定位器代表了一种随时在页面上查找元素的方法&#xff0c;以下是常用的内置定位器。 1、按角色定位 按显式和隐式可访问性属性进行定位语法&#xff1a;page.get_by_role&#xff0…

力扣经典题目之->删除有序数组中的重复项讲解 的讲解与实现

一&#xff1a;题目 二&#xff1a;思路讲解 第一步&#xff1a;创建两个下标&#xff0c;一个是第一个元素的&#xff08;start0&#xff09;&#xff0c;一个是第二个元素的&#xff08;end1&#xff09; 第二步&#xff1a; a&#xff1a;end移动&#xff0c;直到遇到不等…

Dify中Jieba类的create()方法实现过程

本文主要介绍Dify中Jieba类的create()方法执行过程&#xff0c;重点是段&#xff08;segment&#xff09;的关键词的生成。 一.create方法流程概述 整个create方法的目的是为了处理一批文本&#xff0c;提取它们的关键词&#xff0c;并更新关键词表&#xff0c;以便于后续的关…

Spark 实现自定义加密

文章目录 Spark 实现自定义加密一、建立加密和解密的自定义函数二、在 Spark 环境下导入对象实现的方法&#xff0c;并在 SparkSession 中注册 UDF 函数三、在SparkSQL中调用函数 Spark 实现自定义加密 一、建立加密和解密的自定义函数 import java.nio.charset.{StandardCha…

STM32+三色LED智能调光系统源程序 易安卓APP 原理图

资料下载地址&#xff1a;STM32三色LED智能调光系统源程序 易安卓APP 原理图 三色LED手机智能调光系统概述&#xff1a; 利用开发的智能手机软件&#xff0c;对照明三色LED进行智能调光。包含的功能有&#xff0c;支持多手机同时连接服务端&#xff0c;互动调光。支持关…

【数据结构】顺序表的应用

目录 一.引言 二.顺序表概念 三.顺序表的实现 1.定义顺序表 2.顺序表初始化 ​编辑 3.检查空间&#xff0c;如果满了&#xff0c;进行增容 4.顺序表尾插 5.顺序表尾删 6.顺序表头插 7.顺序表头删 ​编辑 8.顺序表查找 9.顺序表在pos位置插入x 10.顺序表删…