Java:控制流程 + 数组 详解(原理 + 用法 + 例子)

news2024/10/5 4:39:10

目录

    • 控制流程
      • 块作用域
      • if 条件语句
      • for while 循环
      • switch 多重选择
      • break continue 中断控制流程语句
    • 大数值
    • 数组
      • 多维数组
      • 字符串类型数组
      • Array.sort() 数组排序
      • for each 循环

控制流程

块作用域

块(即复合语句)是指由一对大括号{}括起来的若干条简单的 Java 语句。块确定了变量的作
用域。一个块可以嵌套在另一个块中。

不能在块的嵌套中声明相同的变量。

任何语言中其内部原理都是用实现的。

if 条件语句

if (条件1){
	满足条件1执行;
}else if (条件2)
{
	满足条件2执行;
}else{
	上述都不满足执行;
}

在这里插入图片描述

for while 循环

for (变量; 条件; 变量的变化) // 里面也可以只有条件
{
	符合条件执行;
}

while(条件){
	符合条件执行;
}

还有 do while循环,先执行后判断条件。
在这里插入图片描述
在这里插入图片描述
可以写一个死循环:

import java.util.*;
public class Test{
	public static void main(String[] xxx){
		while(true){
			System.out.println("=======");
		}
		
	}
}

在这里插入图片描述
Ctrl + c 可以中断执行。

switch 多重选择

switch(x){ // x 为一个变量
	case 条件1:
		x满足条件1执行;
		break;
	case 条件2:
		x满足条件2执行;
		break;
	case 条件3:
		x满足条件3执行;
		break;
	default:
		x都不满足执行;
		break;
}

在这里插入图片描述

switch击穿:如果没有break,匹配之后会接着往下执行。
switch可选类型:char byte short int String 枚举

break continue 中断控制流程语句

break 打断循环,但只能跳出一层循环。
continue 跳过本次循环,进行下一次循环。

大数值

导入包 import java.math.*;

基本的整数和浮点数精度不能够满足需求, 那么可以使用 jaVa.math 包中的两个很有用的类: Bi glnteger 和 BigDecimaL 这两个类可以处理包含任意长度数字序列的数值。

Biglnteger 类实现了任意精度的整数运算。
BigDecimal 实现了任意精度的浮点数运算。
底层是 char 类型的数组来存的。
所以在项目中很多需要精确计算的都会使用其来代替基本类型。

注意其属于的引用类型,也不能运算符重载, 所以没有像 +、* 的操作,但可以利用如下方法:
valueOf(x) // 将x普通数值转换为大数值
a.add(b) // a + b
a.multiply(b) // a * b
在这里插入图片描述

数组

数组是一种数据结构,用来存储同一类型值的集合。通过一个整型下标可以访问数组中的每一个值。
例如,如果 a 是一个整型数组,a[i] 就是数组中下标为 i 的整数。

int [] a; // 声明数组
int a[]; // 也可以这样c语言的分格写,不过一般用上一种。
int [] a = new int [100]; // 初始化创数组

数组物理地址连续
只有基本类型的一维数组,数据才会在物理地址上严格连续。

Java中的引用类型完全等于c语言中的指针
数组无论多大,都只记录第一个的地址

在这里插入图片描述
元素地址 = 首地址 + i * m; // i 为下标(第 i + 1的位置),m 为所存的数据类型大小。

在计算机中,若一块数据没有任何一个地方记录其地址,将被标记为空白无效,被销毁。
在这里插入图片描述

多维数组

在这里插入图片描述
二维数组的储存:
在这里插入图片描述
可以发现数组之间都是通过记录地址来联系,真实地址并不连续。
三维数组与之同理:
在这里插入图片描述

字符串类型数组

	String[] arr2 = {"d","dsfs","daadf", "dd"};

在这里插入图片描述
也是存放的地址。
在修改 daadf 为 eeeeeee 时,不是在原位置修改,而是新创建一个再把对应位置地址指向它,而原来的 daadf 将被销毁。
在这里插入图片描述

Array.sort() 数组排序

导入import java.util.*;

Array.sort(arr) 对 arr 排序,内部和C++一样也是快排。不局限于基本类型,引用类型也可以,后面再介绍。
Array.toString(arr) 打印数组

import java.util.*;
public class Test{
	public static void main(String[] xxx){
		
		int[] arr = {1, 34, 3, 4, 5,8, 9,-1,12,33, 90};
		Arrays.sort(arr);
		System.out.println(Arrays.toString(arr));
		
	}
}

在这里插入图片描述

for each 循环

Java 有一种功能很强的循环结构,可以用来依次处理数组中的每个元素(其他类型的元素集合亦可)而不必为指定下标值而分心 。

for ( variable : collection ) statement

import java.util.*;
public class Test{
	public static void main(String[] xxx){
		int[] arr = {1, 34, 3, 4, 5,8, 9,-1,12,33, 90};
		Arrays.sort(arr);
		System.out.println(Arrays.toString(arr));
		
		for (int w: arr){
			System.out.println(w);
		}
		String[] arr2 = {"aa", "bb", "cc"};
		for (String w : arr2){
			System.out.println(w);
		}
		Object[] arr3 = {new Object(), new Object(), new Object()};
		for (Object w : arr3){
			System.out.println(w);
		} 
		
	}
}

在这里插入图片描述

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

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

相关文章

ARP解析MAC地址的全过程(ARP的工作机制)

目录 ARP解析MAC地址的过程: 源码等资料获取方法 以太网环境下,同一个网段的主机之间需要互相知道对方的MAC地址,才能访问。 TCP/IP协议栈从上层到下层的封装过程中,第三层封装需要知道目的IP,第二层封装需要知道目…

Linux下安装Mysql (CentOS 7) 详解

文章目录 前言环境检查查看是否安装MySql查看系统版本 源安装安装mysql的yum源官网下载从windows上传到linuxrz命令 方法2: 安装Mysql常见错误密钥问题安装后查看mysql是否可以工作查看是否安装成功启动服务 登录mysql配置文件方法(免密码) 使…

linux 安装 cuda

需求: inux 下安装 cuda 进程: 先查看一下系统版本 uname -a查看能支持什么版本的cudacuda toolkit 下载 wget https://developer.download.nvidia.com/compute/cuda/11.1.0/local_installers/cuda_11.1.0_455.23.05_linux.run sudo sh cuda_11.1.0_4…

MySql冷门但是很有用的语句

目录 1 查看当前的所有执行的进程 查看简略信息 查看详细信息 2 在所有数据库中查询包含某个字段的表 精确 模糊 1 查看当前的所有执行的进程 查看简略信息 show processlist 查看详细信息 show full processlist 终止进程 kill id 2 在所有数据库中查询包含某个字段…

gurobi安装vs配置gurobi

gurobi安装&vs配置gurobi 1、注册账号并登录 2、下载gurobi optimizer 3、获取license:User Portal (gurobi.com) online course可以免ip验证。 4、GENERATE NOW会生成,打开cmd进入gurobi安装路径(如F:\gurobi1001\win64\bin>)&am…

分布式事务 Seata

分布式事务 Seata 事务介绍分布式理论Seata 介绍Seata 部署与集成Seata TC Server 部署微服务集成 Seata XA 模式AT 模式AT 模式执行过程读写隔离写隔离读隔离 实现 AT 模式 TCC 模式TCC 模式介绍实现 TCC 模式 Saga 模式Seata 四种模式对比 事务介绍 事务(Transac…

分布式光伏监控系统运维系统实时查看数据分布式光伏电站监控管理

光伏电站是一种利用太阳能发电的设施,随着人们对可再生能源的需求不断增加,光伏电站的建设也越来越普遍。但是,光伏电站的运营和管理需要高质量的监控系统来确保其正常运行。本文将介绍光伏电站监控系统的组成及其原理。 详细软件具体需求可…

php连接上mysql数据库该的配置方法

用mysql官方的管理工具workbench: 打开导出界面后,下一步,选择csv格式,导出后excel就能打开了 如果你需要在程序代码中导出,需要找到对应代码的excel处理库。 如php 的 phpExcel( 最新版已更名为 phpoffice/phpspread…

vue3组件中使用live2d看板娘(官方包形式)

文章目录 先看最终效果吧关于官方包下载使用 vue3中调整使用基础使用关于样式调整 vue中Html主页调试(备用调试方案) 先看最终效果吧 看着还可以,其实还有很多问题没解决,因为是完全靠js渲染,实际上这个live2d的canvas…

前端开发多人协作的团队项目时应该要配置的一些规则

本文主要记录了团队开发一个前端项目需要进行的一些前期配置,例如Eslint语法检验,prettierrc格式化规则,以及提交代码时的规则等等。 目录 1.搭建项目 2.Eslint配置(代码检验工具) 2.1安装Eslint 2.2配置Eslint 2…

【Ajax】笔记-取消请求

在进行AJAX(Asynchronous JavaScript and XML) 请求时,有时候我们需要取消正在进行的请求。取消请求可以帮助我们提高用户体验,病减少不必要的网络流量和服务器负载。 取消请求的方法 在AJAX请求中,我们可以使用以下方法来取消正在进行的请求…

【大虾送书第三期】进阶高级Python开发工程师,不得不掌握的Python高并发编程

目录 ✨写在前面 ✨主要内容 ✨本书特色 ✨关于作者 🦐博客主页:大虾好吃吗的博客 🦐专栏地址:免费送书活动专栏地址 写在前面 Python成为时下技术革新的弄潮儿,全民Python的发展趋势让人们不再满足于简单地运行Python…

MacBook Java开发环境搭建记录

一、Homebrew的镜像设置 对于Java JDK的安装,我们更推荐使用Homebrew来进行安装管理。但Homebrew的curl国外源的下载速度实在是一言难尽,时常还会发生无法访问的情况。 那么我们此时的解决方法就有两种了,第一种便是使用全局的VPN代理进行下载…

SQLite Expert Personal的简单使用

官方网站: sqliteexpert官方网址 - SQLite administration | SQLite Expert ​—————————————————————————————————————————— 免费的受欢迎的 SQLite 管理工具 SQLite Manager 0.8.0 Firefox Plugin 这是一个 Firefox …

【MySQL】多表查询(四)

🚗MySQL学习第四站~ 🚩本文已收录至专栏:MySQL通关路 ❤️文末附全文思维导图,感谢各位点赞收藏支持~ 之前我们介绍DQL语句,也就是数据查询语句的时候,介绍的查询操作都是单表查询,他的功能当然…

山西电力市场日前价格预测【2023-07-20】

日前价格预测 预测明日(2023-07-20)山西电力市场全天平均日前电价为337.62元/MWh。其中,最高日前电价为375.88元/MWh,预计出现在06: 00。最低日前电价为291.47元/MWh,预计出现在13: 30。 价差方向预测 1:实…

Elasticsearch 介绍及java集成

一、Elasticsearch 基础介绍 ElasticSearch 是分布式实时搜索、实时分析、实时存储引擎,简称(ES), 成立于2012年,是一家来自荷兰的、开源的大数据搜索、分析服务提供商,为企业提供实时搜索、数据分析服务,…

Django MultiValueDictKeyError 表单数据用request.POST 非表单数据用request.body

表单数据:Content-Type(请求头)为application/x-www-form-urlencoded的数据。 用request.POST获取 a request.POST.get(a) a request.POST[a] alist request.POST.getlist(a) 非表单数据:Content-Type(请求头)为非application/x-www-form-urlenco…

ORACLE TO POSTGRESQL 来自2天上海的印象

开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到2群(共…

Qt MenuBar自定义Icon大小

提到QMenu中如何定制Icon的大小,第一个想到的是使用qss来修改样式,便尝试了如下语句: QMenu::icon { width: 24px;height: 24px; } 但是经尝试,这个办法并未奏效,QMenu中图标大小,默认为16*16&#xff0c…