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

目录

    • 控制流程
      • 块作用域
      • 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.hqwc.cn/news/29316.html

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

相关文章

Linux 系统编程-开发环境(二)

目录 7 压缩包管理 7.1 tar 7.2 rar 7.3 zip 8 进程管理 8.1 who 8.2 ps 8.3 jobs 8.4 fg 8.5 bg 8.6 kill 8.7 env 8.8 top 9 用户管理 9.1 创建用户 9.2 设置用户组 9.3 设置密码 9.4 切换用户 9.5 root用户 9.6 删除用户 10 网络管理 10.1 i…

Offset Explorer2 监视kafka的利器

kafka作为一个生产者和消费者集为一体的框架,消费者必须一直保持打开的状态,并且每隔一段时间接收一次数据,才能够保持生产者放入的数据及时被处理掉,而生产者则可以每隔一段时间发送一波数据,这样消费者就能够接收到了…

一篇文章带你用Jenkins和Kubernetes搭建DevOps平台

JenkinsKubernetes实现DevOps DevOps 介绍Jenkins环境准备准备JDK下载jdk安装jdk配置jdk环境变量 准备maven下载maven解压maven配置maven配置maven环境变量 安装Docker安装git 安装Jenkins初始化jenkins准备代码仓库和docker镜像仓库准备Kubernetes准备java项目搭建DevOps创建代…

Nacos服务注册和配置中心(Config,Eureka,Bus)1

SCA(Spring Cloud Alibaba)核心组件 Spring Cloud是若干个框架的集合,包括spring-cloud-config、spring-cloud-bus等近20个子项目,提供了服务治理、服务网关、智能路由、负载均衡、断路器、监控跟踪、分布式消息队列、配置管理等领域的解决方案,Spring C…

iOS APP外包开发的语言比较

iOS APP是Apple公司运行在iPhone手机上的APP,开发这样的APP有两种开发语言可以选择,都是由Apple公司提供的语言。其中Objective-C使用时间相对较长,有历史兼容考虑,而Swift是新的开发语言,更符合近些年开发语言的发展理…

Maven

Maven 1. Maven简介2. Maven安装搭建(windows)2.1 下载maven2.2 安装配置maven2.3 配置maven本地仓库 3. Maven安装搭建(linux)3.1 下载maven3.2 安装配置maven3.3 编辑 settings.xml 文件3.4 添加 maven 环境变量内容 4. IntelliJ IDEA创建web项目4.1 创建项目4.2 创建源码目录…

Nginx基础(复习理论篇)

一、Nginx基本概念 1、Nginx是什么 Nginx是一个高性能的Http和反向代理服务器,其特点是占有内存少,并发能力强,事实上Nginx的并发能力确实在同类型的网页服务器中表现较好。 Nginx专为性能优化而开发,性能是其最重要的考量&…

matlab中画有重影的机器人运动过程【给另一个机器人设置透明度】

1、前言如题 2、参考连接如下 How to plot two moving robot in the same figure and change one of them transparency? - MATLAB Answers - MATLAB Central (mathworks.cn)3、代码:【找到figure中对应对象并设置属性】 % Create two instances of a…

EXCEl——移除单元格中换行符

方法一:使用清除格式功能 步骤如下: 1.选中需要取消换行的单元格 2.在“开始"选项卡中找到"清除”功能,点击下拉菜单中的“清除格式" 3.这时单元格的换行就被取消了。 清除前效果图 清除后效果图 方法一:使用函数功能 步骤…

java贪心算法案例

1.零钱找回问题 这个问题在我们的日常生活中就更加普遍了。假设1元、2元、5元、10元、20元、50元、100元的纸币分别有c0, c1, c2, c3, c4, c5, c6张。现在要用这些钱来支付K元,至少要用多少张纸币?用贪心算法的思想,很显然,每一步…

高时空分辨率、高精度一体化预测技术之风、光、水能源自动化预测技术

能源是国民经济发展和人民生活必须的重要物质基础。在过去的200多年里,建立在煤炭、石油、天然气等化石燃料基础上的能源体系极大的推动了人类社会的发展。但是人类在使用化石燃料的同时,也带来了严重的环境污染和生态系统破坏。近年来,世界各…

[RK3568] AMP架构

Rockchip 平台异构多系统 AMP (非对称多核架构)的开发软件包,支持 Linux(Kernel) 、 Standalone(Hal)、 RTOS(RT-Thread) 组合 AMP 构建形式。 Standalone(Hal) HAL:Hardware Abstraction Layer,硬件抽象层。 硬件抽…