Java程序编写(下)

Scanner对象

通过java.util.Scanner来获得Scanner

基本语法:

Scanner s = new Scanner(System.in)

通过next()nextLine()方法获取输入的字符串。
通过hasNext()hasNextLine()判断是否还有输入的数据。

next():
1、一定要读取到有效字符后才可以结束输入
2、对输入有效字符之前遇到的空白,next()方法会自动将其去掉
3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符
4、next()不能得到带有空格的字符串

nextLine():
1、以Enter为结束符,也就是说nextLine方法返回的是输入回车之前的所有字符
2、可以获得空白
在这里插入图片描述
除了scanner.hasNext()之外还有scanner.hasNextInt()scanner.hasNextDouble()等。

Switch多选择结构

switch语句中的变量类型可以是byteshortintchar,还有String(从Java SE 7 开始)
case标签必须为字符串常量或字面量

switch(expression) {case value:...break;case value:...break;default:...
}

如果没有break的话,每个case语句都会执行——case穿透。

循环结构

  • while

  • do…while

    do {}while(布尔表达式)
    
  • for
    100.for是下述代码的快捷键

    for (int i = 0; i < 100; i++) {}
    

    增强for循环

    for(声明语句: 表达式) {}
    

方法

注意保证方法的原子性,最好一个方法实现一个功能。
类方法要使用static关键字

方法声明

修饰符 返回值类型 方法名(参数类型 参数名){...方法体...return 返回值;
}

方法调用

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

什么是值传递和引用传递?

值传递:在值传递中,方法接收的是实际参数值的一个拷贝,而不是参数本身。这意味着在方法内部对参数进行的任何改变都不会影响到原始参数的值。**在Java中,基本数据类型(如整数、浮点数、布尔值等)都是以值传递的方式进行传递。**当你将一个基本数据类型的变量传递给一个方法时,方法接收的是这个变量的一个拷贝。

引用传递:在引用传递中,方法接收的是实际参数的引用(地址)而不是参数的拷贝。这意味着在方法内部对参数进行的任何改变都会影响到原始参数的值。在一些编程语言中,比如C++,可以通过指针实现引用传递。但在Java中,并没有显式的引用传递机制。Java中的对象引用是以值传递的方式进行传递,但这个值是对象的引用,因此看起来类似于引用传递。

方法重载

在一个类中,有相同的函数名称,但形参不同(参数的类型、顺序或数量不同)的函数。

方法重载的规则:

  1. 方法名相同,参数列表不同。
  2. 返回类型可以相同也可以不同。
  3. 方法的重载与方法的返回类型无关。
public class Calculator {  public int add(int a, int b) {  return a + b;  }  public double add(double a, double b) {  return a + b;  }  public int add(int a, int b, int c) {  return a + b + c;  }  public String add(String a, String b) {  return a + b;  }  
}  

命令行传参

假设你有一个名为 MyProgram.java 的程序,你可以通过以下方式在命令行中运行它并传递参数:

java MyProgram arg1 arg2 arg3  

在这个例子中,arg1arg2arg3 是传递给程序的参数。在 MyProgram.java 中,你可以通过 args 数组来访问这些参数:

public class MyProgram {  public static void main(String[] args) {  System.out.println("Number of arguments: " + args.length);  for (int i = 0; i < args.length; i++) {  System.out.println("Argument " + i + ": " + args[i]);  }  }  
}  

可变参数

语法:

public void myMethod(Type... variableName) {  // 方法体  
}  

使用注意事项:

  1. 可变参数必须是方法的最后一个参数。
  2. 一个方法只能有一个可变参数。
  3. 可变参数在方法内部被视为数组,因此你可以像操作数组一样操作它们。

数组

数组的声明和创建

int[] myArray = new int[5];  

内存分析

Java内存:

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

三种初始化

  1. 静态初始化

    int[] a = {1,2,3};
    Man[] m = {new Man(1, 1), new Man(2, 2)};
    
  2. 动态初始化

    int[] a = new int[2];
    a[0] = 1;
    a[1] = 2;
    
  3. 数组的默认初始化
    数组是引用类型,它的元素相当于类的实例变量,因此一旦数组分配空间结束,其中的每个元素也会按照和实例变量同样的方式被隐式初始化。

    • 对于整型数组(int[]、long[]等),默认值为0。
    • 对于浮点型数组(float[]、double[]等),默认值为0.0。
    • 对于布尔型数组(boolean[]),默认值为false。
    • 对于引用类型数组(String[]、Object[]等),默认值为null。

数组的四个特点

  1. 固定长度: 一旦数组被创建,它的长度就是固定的,不能再改变。
  2. 相同类型元素: 数组中的所有元素必须是相同的数据类型。
  3. 元素任意类型:数组中元素可以是任何数据类型,包括基本类型和引用类型。
  4. 数组属于引用类型: 在Java中,数组本身也是对象,其中每个元素可以看做对象的成员变量,因此可以调用其相应的方法。
    Java中对象是在堆中,因此数组无论保存原始类型还是其他对象类型,数组对象本身都是在堆中的。

数组边界

合法区间[0, length - 1]

ArrayIndexOutOfBoundsException:数组下标越界异常!

Arrays类

Java中的Arrays类是java.util包中提供的一个实用工具类,用于对数组进行各种操作。
这个类提供了许多静态方法来对数组进行排序、搜索以及其他常见的操作。
由于Arrays类中的方法都是static修饰的静态方法,因此可以直接通过类名进行调用。

一些Arrays类中常用的方法包括:

排序方法:
sort():用于对数组进行排序,可以按升序或者自定义的比较器进行排序。

搜索方法:
binarySearch():使用二分查找算法在已排序的数组中搜索指定元素。

比较方法:
equals():用于比较两个数组是否相等。

填充方法:
fill():将数组的所有元素设置为指定的值。

转换为列表:
asList():将数组转换为列表。

输出为字符串:
toString():将数组转换为字符串。

在这里插入图片描述

注意import java.util.Arrays以及Array.XXX()

稀疏数组

稀疏数组是一种数据结构,用于表示大部分元素为同一值(通常为0)的二维数组。
它通过压缩存储来节省空间,通常用于表示稀疏矩阵或者在某些特定条件下的二维数组。

稀疏数组通常由三列组成:

  • 行数:原始二维数组的行数。
  • 列数:原始二维数组的列数。
  • 数值:包含非默认值的元素及其位置信息。
row  col  value  3    4     6  0    0     1  0    3     2  1    1     3  1    2     4  2    0     5  2    2     6  

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

15:00面试,15:06就出来了,问的问题太变态了。。。

刚从小厂出来&#xff0c;没想到在另一家公司我又寄了。 在这家公司上班&#xff0c;每天都要加班&#xff0c;但看在钱给的比较多的份上&#xff0c;也就不太计较了。但万万没想到5月一纸通知&#xff0c;所有人不准加班了&#xff0c;不仅加班费没有了&#xff0c;薪资还要降…

自定义异步任务管理器和线程

import com.lancoo.common.utils.Threads; import com.lancoo.common.utils.spring.SpringUtils;import java.util.TimerTask; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit;/*** 异步任务管理器* * author lancoo*/ public c…

单片机控制步进电机

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、步进电机的工作原理是什么&#xff1f;二、连线图三、程序1.参考程序2.实际测试 四、开发板1.原理图2.实际连接图3.参考程序4.测试5. 思考 五、步距角总结 …

搭乘“低代码”快车,引领食品行业数字化转型全新升级

数字化技术作为重塑传统行业重要的力量&#xff0c;正以不可逆转的趋势改变着企业经营与客户消费的方式。 在近些年的企业数字化服务与交流过程中&#xff0c;织信团队切实感受到大多数企业经营者们从怀疑到犹豫再到焦虑最终转为坚定的态度转变。 在这场数字化转型的竞赛中&a…

Linux网络——高级IO

目录 一.五种IO模型 1.阻塞式IO 2.非阻塞式IO 3.信号驱动IO 4.多路转接IO&#xff1a; 5.异步IO 二.同步通信 vs 异步通信 三.设置非阻塞IO 1.阻塞 vs 非阻塞 2.非阻塞IO 3.实现函数SetNoBlock 四.I/O多路转接之select 1.初识select 2.select函数原型 3.socket就绪…

第 9 部分 — 内存增强 Transformer 网络:数学见解

一、说明 在顺序数据处理领域&#xff0c;传统的 Transformer 架构擅长处理短期依赖性&#xff0c;但在需要大量内存和长序列上下文保留的任务中表现不佳。在这篇综合博客中&#xff0c;我打算探索一种新颖的混合方法&#xff0c;将 Transformer 与显式长期记忆模块集成在一起。…

AX和A(T)X的区别是?

目录 1.快速了解的例子&#xff1a; &#xff08;1&#xff09;假设所有节点的初始特征都是[1, 0, 0] &#xff0c;那么AX的结果是&#xff1a; &#xff08;2&#xff09; 的结果是&#xff1a; (3) 总结&#xff1a; 2.计算结构系数的例子 &#xff08;1&#xff09…

Vue学习计划-Vue2--VueCLi(三)ref属性、mixins混入、插件、scoped样式

1. ref属性 被用来给元素或子组件注册引用信息&#xff08;id的替代者&#xff09;应用在html标签上获取的是真实DOM元素&#xff0c;应用在组件标签上是组件实例对象&#xff08;VC&#xff08;VueComponent&#xff09;&#xff09;使用方式&#xff1a; 打标识<h1 ref&q…

安装Anconda时出现Failed to extract packages的解决方法

目录 1. 问题所示2. 原理分析3. 解决方法 1. 问题所示 在win7安装Anconda的时候&#xff0c;出现Failed to extract packages 截图如下所示&#xff1a; 2. 原理分析 该版本过于新&#xff0c;无法兼容win7系统&#xff0c;要么更换系统 要么将anconda版本降低即可 3. 解决…

Axure简单安装与入门

目录 一.Axure简介 二.应用场景 三.安装与汉化 3.1.安装 3.2.汉化 四. 入门 4.1.复制、剪切及粘贴区域 4.2.选择模式 4.3. 插入形状 4.4.预览、共享 感谢大家观看&#xff01;希望能帮到你哦&#xff01;&#xff01;&#xff01; 一.Axure简介 Axure RP是一款专业的原型…

十五、机器学习进阶知识:K-Means聚类算法

文章目录 1、聚类概述2、K-Means聚类算法原理3、K-Means聚类实现3.1 基于SKlearn实现K-Means聚类3.2 自编写方式实现K-Means聚类 4、算法不足与解决思路4.1 存在的问题4.2 常见K值确定方法4.3 算法评估优化思路 1、聚类概述 聚类&#xff08;Clustering&#xff09;是指将不同…

跟着我学Python基础篇:06.列表

往期文章 跟着我学Python基础篇&#xff1a;01.初露端倪 跟着我学Python基础篇&#xff1a;02.数字与字符串编程 跟着我学Python基础篇&#xff1a;03.选择结构 跟着我学Python基础篇&#xff1a;04.循环 跟着我学Python基础篇&#xff1a;05.函数 目录 往期文章1. 列表的基本…