Java基础(二)流程控制和数组

流程控制

break结束多重循环

public static void main(String[] args) {
    outer:
    for(int i = 0; i < 5; i++) {
        for(int j = 0; j < 3; j++) {
            System.out.println("i的值为:" + i + " j的值为:" + j);
            if(j == 1) {
                break outer;
            }
        }
    }
}

//输出:
//i的值为:0 j的值为:0
//i的值为:0 j的值为:1

当运行到 break outer; 时,直接结束 outer 这个标签标识的循环。

Contine忽略多重循环

public static void main(String[] args) {
    outer:
    for(int i = 0; i < 5; i++) {
        for(int j = 0; j < 3; j++) {
            System.out.println("i的值为:" + i + " j的值为:" + j);
            if(j == 1) {
                continue outer;
            }
        }
    }
}

//输出
/*
i的值为:0 j的值为:0
i的值为:0 j的值为:1
i的值为:1 j的值为:0
i的值为:1 j的值为:1
i的值为:2 j的值为:0
i的值为:2 j的值为:1
i的值为:3 j的值为:0
i的值为:3 j的值为:1
i的值为:4 j的值为:0
i的值为:4 j的值为:1*/

与 break 类似,当运行到 continue outer; 时,直接跳过 outer 标签所标识循环的当次循环的剩下语句,重新开始下一次循环。

数组类型

基本使用

首先明确一点,数组是是引用类型int[] a 中的 int[] 是引用类型,和 int、String 一样是一种数据类型, a 是引用变量,也就是指针。

Java 数组既可以存基本数据类型,也可以存引用类型。数组一旦初始化,内存空间就固定下来,长度无法改变。

数组初始化方式:

//静态初始化
//方式一
int[] intArr = {1, 2, 3, 4};
//方式二
Object[] objArr = new Object[]{1, "Java", 3, "hello"};
//动态初始化
int[] intArr = new int[5];

执行动态初始化时,只需指定空间大小,系统会自动分配初始值:

  • byte、short、int 和 long,初始值为 0
  • float、double,初始值为 0.0
  • char,初始值为 \u0000
  • boolean,初始值为 false
  • 引用类型(类、接口和数组),初始值为 null

根据索引访问数组,数组提供了一个 length 属性获取数组长度。

public static void main(String[] args) {
    int[] arr = new int[]{1, 2, 3, 4};

    //通过属性length获取数组长度,遍历数组
    for(int i = 0; i < arr.length; i++) {
        System.out.println(arr[i]);
    }

    //foreach遍历数组
    //使用foreach进行迭代时,不要对临时变量a再次进行赋值
    //因为迭代过程,只是对数组元素逐一拷贝赋给a,改变a的值,不会影响数组元素
    for(int a : arr) {
        System.out.println(a);
    }
}

深入数组内存

数组是一种引用类型,数组引用变量和数组元素在内存里是分开存放的。实际的数组对象被存储在堆(heap)内存中;如果数组引用变量是一个局部变量,那么它被存储在栈(stack)内存中。

如果数组类型是基本类型,则堆内存中的数组元素存储的是基本类型数据;如果数组类型是引用类型,则堆内存中的数组元素存储的是对象的引用(地址),该引用又指向实际存储的对象,例如:有一个 Students 数组,里面存储两个 Student 对象 zhang 和 lee,内存分配如下图。如果堆内存中数组对象不再有任何引用变量执行它,内存会被 GC 回收。

public static void main(String[] args) {
    int[] a = new int[]{1, 2, 3, 4};
    int[] b = a;

    //a和b指向的内存地址相同,指向同一个数组对象,改变b中元素,a也会变
    System.out.println(a.hashCode());  //460141958
    System.out.println(b.hashCode());  //460141958
}

多维数组

多维数组的本质是将一个数组的引用变量作为元素存储到另一个数组中。多维数组也是一种引用类型, int[][] a 中的 int[][] 也是一种数据类型,变量 a 是对元素为 int[] 类型的数组的引用。

//二维数组当一维数组使用,相当于定义了一个含有4个int[]类型引用的数组,初始化时元素存null
int[][] a = new int[4][];

int[][] b = new int[3][4];
//相当于下列代码,定义了一个含有3个int[]类型引用的数组,每个int[]数组大小为4,初始化时为0
int[][] b = new int[3][];
b[0] = new int[4];
b[1] = new int[4];
b[2] = new int[4];

//静态方式初始化二维数组
String[][] strArrays1 = new String[][] {
    new String[3],
    new String[]{"hello"}
};

String[][] strArray2 = {
    new String[3],
    new String[]{"hello"}
};

原文地址:https://www.cnblogs.com/zongmin/p/11332797.html

时间: 2025-01-10 14:14:33

Java基础(二)流程控制和数组的相关文章

java基础二 &lt;流程控制语句, 方法,数组,java内存结构&gt; 未完待续...

话不多说,直接上干货... 一:流程控制语句 break :  结束当前循环 continue:  结束本次循环,继续下次循环 return:  结束方法 二: 方法 1.方法的特点: 定义在类中的,有特定功能的函数. 方法与方法之间是平级的,不能在方法中定义方法.方法只能够调用方法. 2.方法的重载: 在同一类中,方法名相同,参数列表不同(个数不同,对应的类型不同). 与返回值类型无关. 对应的类型不同的话,与顺序有关系 与形式参数的变量名无关 3.方法的重写: 子类可继承父类中的方法,而不需

黑马程序员——Java基础语法---流程控制与函数

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! -------       程序控制流 一.程序流程控制 也称语句,主要有:判断结构.选择结构和循环结构. 1. 判断结构——if if语句的三种格式: a)  if(条件表达式) { 执行语句: } b)  if(条件表达式) { 执行语句: } el

黑马程序员---java基础语法--流程控制与函数

-----------android培训.java培训.java学习型技术博客.期待与您交流!------------ 一.程序流程控制 也称语句,主要有:判断结构.选择结构和循环结构. 1. 判断结构——if if语句的三种格式: a)  if(条件表达式) { 执行语句: } b)  if(条件表达式) { 执行语句: } else { 执行语句: } c)  if(条件表达式) { 执行语句: } else  if (条件表达式) { 执行语句 } …… else { 执行语句: } if

Java基础总结--流程控制

Java流程控制* 顺序结构--最常见的执行情况,语句按照出现的先后次序依次执行.* 判断结构--对条件进行判断,执行相应的语句.有三种常见的形式< if(判断条件){语句;}--为真执行语句,否则不执行< if(判断条件){语句;}else{语句;}--注意这个结构是一个整体,只会执行一个分支,为真-if控制的语句,假-执行else控制的语句.< if(判断条件){语句;}else if(判断条件){语句;}else{语句;}--注意多重条件判断-这个结构也是一个整体,只会执行一个,满

Java基础之流程控制

一.顺序结构 顺序结构的程序语句只能被执行一次.如果您想要同样的操作执行多次,,就需要使用循环结构. if-else-if 语句 语法: if(条件){ 当条件为true时,执行大括号内的代码 }else if(条件){} 代码实例: public static void main(String[] args){ int a=2; if(a>1){ System.out.println("该数字大于1"): }else if(a<1){ System.out.println

java基础:流程控制(选择结构switch语句)

(1)格式: switch(表达式) { case 值1: 语句体1; break; case 值2: 语句体2; break; ... default: 语句体n+1; break; } 格式解释说明: switch:说明这是switch语句. 表达式:可以是byte,short,int,char JDK5以后可以是枚举 JDK7以后可以是字符串 case:后面的值就是要和表达式进行比较的值 break:表示程序到这里中断,跳出switch语句 default:如果所有的情况都不匹配,就执行这

Java中的流程控制(二)

关于Java程序的流程控制(二) 关于Java程序的流程控制(二) 3.switch选择语句 switch语句用于将一个表达式的值同许多其他值比较,并按比较结果选择下面该执行哪些语句. switch(表达式){case 取值1: 语句块1 break;--case 取值n: 语句块n break; default: 语句块n+1 break;} 例子:将1~3对应的星期几的英文单词打印出来, int x=2;switch(x){ case 1: System.out.println("Monda

JAVA语法基础之流程控制

在进行程序设计的时候,我们会经常进行逻辑判断,根据不同的结果做不同的事,或者重复做某件事,我们对类似这样的工作称为流程控制.在Java中,流程控制分为两大类:选择和循环.下面就依次来介绍这两类. 一.选择 选择控制分为两种:if...else...和switch 1.if...else...,这种控制在表现上分为:单分支结构.双分支结构和多分支结构 1)单分支 单分支结构.这是最简单的一种选择结构,它只是简单的判断某个条件是否成立,如果成立就执行一段代码,语句形式为: if(表达式){ ....

Java图式(第三章 流程控制、数组)

Java图式(第三章 流程控制.数组) 1.分支语句 1)if-else语句 2)switch语句 2.循环语句 1)while语句 while返回值不是1/0,必须是布尔表达式 2)do-while语句 3)for语句 4)continue/break语句 标号是对语句块/循环命名.eg:A:循环 continue A:直接终止标记的外循环 3.数组(引用类型) 1)声明时不确定大小 2)引用:下标引用,无指针 3)实例化(存储单元分配)语句:new 4)数组初始化:不要求每一维一样大 4.字

Java基础语法之控制流程

Java基础语法之控制流程 语言的流程控制提供了对程序步骤的基本方法. 三大流程控制语句:顺序.选择.循环 复合结构 复合结构是以一个区块为单位的,由"{"开始"}"结束.复合语句会为局部变量创建一个作用域,该作用域会成为程序的一部分.在这个作用域中变量能够被创建使用,如果这个变量在这个作用域外使用,会发生程序错误.复合结构内可以嵌套多个复合结构. 判断结构 判断结构会根据不同的条件结果执行不同的代码块. If结构 if结构中的条件结构是一个布尔值,在条件满足也就是