美文网首页
Java数组判断循环, since 2021-08-16

Java数组判断循环, since 2021-08-16

作者: Mc杰夫 | 来源:发表于2021-08-16 21:34 被阅读0次

(2021-08-16)

数组

Java的数组被创建后,只能用来存储指定类型的信息。比如可以有int数组、String对象的数组或数组的数组,但一个数组不能同时存储String对象和int值。

一个规避这种限制的方法:一个数组可同时存储特定类及其所有子类的对象,因此一个Object数据可包含任何Java对象,包括与基本类型对应的类的对象。

在Java中创建数组,按下面过程进行

  1. 生命一个用于存储数组的变量
  2. 创建一个数组对象,并将它赋给数组变量
  3. 在数组中存储信息

数组声明

声明的数组变量指出了数组将存储的对象或数据类型以及数组的名称。声明方式有两种,即类型后加[]和变量名后加[]

String[] a;
Point[] b; //数组存储的对象是Point的对象
float[] c;
// 下面这样的形式与上面等效
String a[];
Point b[];
float c[];

数组是一个对象。
(2021.08.18 Wed)

创建数组对象

因数组是对象,创建时需要new关键字。

String[] players = new String[10]; //定义了一个长度是10的String数组

使用new创建数组对象时,其所有元素都被自动的初始化。

类型 默认初值
数字 0
boolean false
char '\0'
对象 null

数组赋初值的方式,可逐一赋值,比如

Interger[] series = new Integer[3];
series[0] = new Integer(10);
series[1] = new Integer(5);
series[2] = new Integer(999);

或者在初始化时将数组元素放在大括号中,用逗号分隔

Point[] m = {new Point(1,5), new Point(996, 0), new Point(7, 24)};

注意到String对象可以不用new来创建和初始化,用作字符串数组时,也可以如下初始化

String[] t = {"Mr.", "Mrs.", "Miss", "Dr."};

所有数组都有一个名为length的实例变量,指出了数组包含多少个元素。如刚刚定义的字符串数组t,有t.length = 4

访问数组元素时,index不能超过length变量,否则Java编译器返回错误消息ArrayIndexOutOfBoundsException
访问数组和修改数组的方式同Python。

注:指定整数字面量时,将每3位编组并用下划线_分割,让数字更加容易阅读。

short[] a = new short[2];
a[0] = 10_000; 

多维数组

数组可以多维,仅需在声明时加入相应个数的中括号。

int[][] dayValue = new int[53][7]; // 定义了一个53行7列的数组
int[][][] cen = new int[100][53][7]; // 定义了一个100*53*7的数组
System.out.println('Elements in 1st dimension: ' + cen.length);
System.out.println('Elements in 2nd dimension: ' + cen[0].length);
System.out.println('Elements in 3rd dimension: ' + cen[0][0].length);

块语句

用花括号(brace)括起来的内容是一个块语句(block statement)。Java块中声明的局部变量创建了作用域,在块中定义的变量仅能在块中使用。在块执行完毕后,在块中定义的变量将不复存在。

void testBlock() {
    int x = 10;
    {
        int y = 40;
        y = y + x;
    } // y的作用域到此结束
}

判断和循环语句

if条件语句

Java要求if的测试返回值只能是boolean值,即true/false,而在Python、C和C++中,测试可以返回整数值。

...
String server;
if (arguments.length < 1) {
    server = "localhost";
} else {
    server = "xxx";
}
// 另一个例子
if (operation == '+')
    add(o1, o2);
else if (operation == '-')
    subtract(o1, o2)
else if (operation == '*')
    multiply(o1, o2)
else if (operation == '/')
    divide(o1, o2)

switch条件语句

if语句的最后一个例子,是嵌套if语句。和C/C++相同,Java提供了一个更好的方式处理这种情况,也就是switch语句。

char grade = 'D';
switch (grade) {
    case 'A':
        System.out.println("Superb!");
        break;
    case 'B':
        System.out.println("not bad");
        break;
    case 'C':
        System.out.println("so so");
        break;
    case 'D':
        System.out.println("work harder please");
        break;
    default:
        System.out.print("wth");
}

每个case语句之后,可以有任何数目的语句,不必像if语句那样用花括号括起来。

每个case都有一个break语句,用于指出何时停止执行语句。如果case中没有break语句,则找到匹配的情况后,该case中的语句及其后到breakswitch末尾的所有语句都将执行。请记得多数情况下为每个case语句加入break语句。

int x = 5;
switch (x) {
    case 2:
    case 4:
    case 8:
        System.out.println("even number");
        break;
    default:
        System.out.println("odd number");
}

上面这个指令返回odd number

int month = 10;
switch (month) {
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:
        count = 31;
        break;
    case 4:
    case 6:
    case 9:
    case 11:
        count = 30;
        break;
    case 2:
        count = 28
}

上面代码的返回结果是31

(2021.08.19 Thur)

三目运算符

也叫条件运算符,格式为

test? trueResult:falseResult

相当于if判断。比如比较myScoreyourScore两个变量,返回其中比较大的那个并返回赋值给变量bestScore

bestScore = myScore > yourScore? myScore: yourScore;

该语句等效于

if (myScore > yourScore) {
    bestScore = myScore;
} else {
    bestScore = yourScore;
}

三目运算符的优先级很低,通常在所有子表达式计算完毕后才被计算,唯一比它优先级低的运算符是赋值运算。

for循环

格式如下

for (initialisation; test; increment) {
statement;
}

其中的test部分是boolean格式的表达式,当不满足该条件,则停止循环。一个例子

String[] salutation = new String[10];
byte i;
for (i = 0; i < salutation.length; i++) {
    salutation[i] = "Dr.";
}

一种特殊情况是每次循环什么都不做,可以简单的表达为

for (i = 0; i < salutation.length; i++);

while和do循环

这两类循环让Java代码重复执行,直到满足条件为止。
while循环

while (i < 10) {
    x += i;
}

这个循环中因只有一条语句,所以不用花括号也可以使用,但如果循环体内有多条语句,用花括号是必需的。

do循环与while循环类似,区别在于检测条件的位置,且do循环检测条件之前,至少执行循环体一次。

long i = 1;
do {
    i += 1111;
    System.out.println(i + " ");
} while (i < 3_000_000_000);

跳出和继续循环 break和continue

break跳出循环,continue执行下一次循环。

Reference

1 R. Cadenhead著,袁国忠译,21天学通Java(第7版),中国工信出版集团,人民邮电出版社

相关文章

  • Java数组判断循环, since 2021-08-16

    (2021-08-16) 数组 Java的数组被创建后,只能用来存储指定类型的信息。比如可以有int数组、Stri...

  • 循环数组判断

    思路:购物车去结算时,如果数组里的商品都没有被选中,则提示“请至少选择一件商品”,反之跳转至商品确认页面

  • 【学习笔记】JavaScript数组过滤相同元素的6种方法

    一. 题目说明: 题目 基本思路:采用循环嵌套外层循环将数组中的值赋给新的数组内层循环通过if语句判断新数组中是否...

  • JS数组扁平化的5种方法

    递归循环数组,判断 arr[i] 是否是数组,是数组的话再次调用此函数。const flatten = (arr)...

  • 队列

    基于数组的循环队列 Java实现 基于链表的队列实现 Java实现

  • LeetCode 217: 存在重复

    【记录性文章-数组】 代码思路:先排序,再用循环判断数组中相邻元素是否相同。

  • 总结的一堆扁平化数组的方法

    扁平化数组(多维数组=>一维数组) 一、递归 (concat) 循环数组元素,判断是否是一个数组Array.isA...

  • python与shell语法

    python与shell之间的语法联系: 变量 数组的定义 注释 逻辑判断 IF语法 for循环 while循环 ...

  • 根据数组中对象属性进行去重

    根据数组中对象属性进行去重 先遍历循环原数组,声明一个计数器,用于记录新数组的遍历次数,在新数组的循环遍历中判断,...

  • JavaScript 数组去重

    1.简单的循环遍历 最容易想到的方法就是for循环遍历数组,并用indexOf判断是否在数组中已经存在相同的值。 ...

网友评论

      本文标题:Java数组判断循环, since 2021-08-16

      本文链接:https://www.haomeiwen.com/subject/hxyvbltx.html