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

控制流程

块作用域

块(即复合语句)是指由一对大括号{}括起来的若干条简单的 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);
		} 
		
	}
}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cosmoshhhyyy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值