疯狂java讲义03
(出处:根据李刚老师《疯狂java讲义》视频中的知识点于此记录下来)
循环嵌套
循环里面再次放置循环,此时里层循环相当于外层循环的一条语句。
【例】
public static void main(String[] args) {
for(int i=0;i<10;i++){
int j = 0;
while (j<10)
{
System.out.println("i:"+i+",j:"+j);
j++;
}
}
}
=====================
九九乘法表
public static void main(String[] args) {
for (int i=1;i<=9;i++){
//第i行总共打印i坨
for(int j=1 ; j<=i; j++){
System.out.print(j+"*" +i+ "=" +(j*i)+ " ");
}
//打印完一行之后,再换行
System.out.println();
}
}
}
===================================================
流程控制:
if分支
switch分支
while循环
do while循环
for循环
循环嵌套
===============
break
结束循环,跳出循环
break还可以带标签,用于结束标签所代表的循环
======
continue
忽略本次循环continue后面的语句,重新开始执行下一次循环
所以,不带continue语句,如果是循环体的最后一行,那是没有任何意义的。
continue还可以带标签,用于忽略标签所代表的循环的剩下的语句,重新开始下一次标签所代表的循环
========
return
结束方法
循环总是位于方法中的,return既然可以结束方法,无论它在多深的循环里,它可以直接结束
=======================================
29,数组和数组的初始化
1、数组(Array简称arr):
数组:可以一次定义,就可以得到很多个类型相同、功能相似的变量。
数组类型
→ 基本类型:8个
java类型
→ 引用类型:数组、类、接口、枚举
数组其实就是一种引用类型
任何已有的类型,添加一组方括号就变成数组类型
元素类型 数组类型
int -> int[]
long -> long[]
String -> String[]
double -> double[]
int[] -> int[][]
long[][] -> long[][][]
数组元素的类型:是数组类型去掉一组方括号。
数组类型 元素类型
int[] --> int
long --> long
创建数组对象(数组初始化)
A:静态初始化
new 类型【】 {元素1,元素2,元素3,…}
不指定长度,只指定每个元素。
静态初始化简化语法:(元素1,元素2,元素3,…) 只能在定义数组变量指定初始值的时候使用!
B:动态初始化。
new 类型[]{元素1,元素2,元素3,…}
只指定长度,不指定元素的值。
系统会自动为每个元素分配初始值,其分配规则是:
–所有数组元素为数值类型时,数组元素的初始值为0;
–所有数组元素为boolean类型时,数组元素的初始值为false;
–所有数组元素为引用类型时,数组元素的初始值为null;
使用数组:
A:数组都有一个length属性,该属性返回数组的长度。
数组一旦创建,其长度是固定(它在内存中位置也是固定的)!
B:每个数组元素,就相当于一个变量。数组元素的类型,就是数组类型去掉一组方括号。
访问数组元素:
数组变量[索引] ------索引从0开始。最后一个元素的索引是length-1
使用的元素超出数组长度,就会导致ArrayIndexOutOfBoundsException(数组索引越界异常)
C:遍历数组 - 一次使用每个元素
D:使用foreach循环遍历数组。
for(元素类型 变量名 : 数组名)
{
//可通过变量名访问每个元素
}
数组有几个元素,该循环就执行几次,变量会自动、依次等于每个元素。
foreach遍历只能访问数组元素的值,不能修改数组元素的值 。
建议:永远不要在foreach循环中修改循环计数器的值!
【循环遍历数组】
public class foreach循环遍历数组 {
public static void main(String[] args) {
//静态
int[] iArr = new int[]{20,10,50,-3,-9};
//foreach遍历
for(int a : iArr)
//for{元素类型 变量名 : 数组名 }
{
System.out.println(a);
//可通过变量名访问每个元素
}
int[] Arr = new int[]{20,10,50,-3,-9};
for(int a : Arr)
{
System.out.println(a);
}
}
}
int[] myArr = 2; //是错的
int double ->基本类型
int int[] 完全不同,int是基本类型,int[]是引用类型
【数组变量】
public class 数组变量 {
public static void main(String[] args) {
//静态初始化:只指定元素,不指定长度
int[] iArr = new int[]{3,5,50,-19,87};
System.out.println(iArr.length);
System.out.println("第一个元素为:" + iArr[0]);
iArr[0] = 100;
System.out.println("第一个元素为:" + iArr[0]);
iArr[0] = iArr[1]*4;
System.out.println("第一个元素为:" + iArr[0]);
//五个元素
//只指定长度,不指定元素
double[] dArr = new double[4];
System.out.println(dArr.length);
System.out.println("第一个元素为:" + dArr[0]);
dArr[0] = 2.4;
System.out.println("第一个元素为:" + dArr[0]);
dArr[0] = dArr[1] + iArr[2];
System.out.println("第一个元素为:" + dArr[0]);
//(dArr.length)也可以理解为(dArr的长度,.=的)
//静态
long[] arr = new long[]{2,5,100,330L};
System.out.println(arr.length);
//动态
String[] strArr = new String[3];
System.out.println(strArr.length);
//静态
String[] sArr = new String[]{"Spring","shuaige"};
System.out.println(sArr.length);
//动态
int[] inArr = new int[4];
System.out.println(inArr.length);
}
}
【遍历数组】
public class 遍历数组 {
public static void main(String[] args) {
//静态
int[] iArr = new int[]{20,10,50,-3,-9};
//依次访问每一个
// System.out.println(iArr[0]);
// System.out.println(iArr[1]);
// System.out.println(iArr[2]);
// System.out.println(iArr[3]);
// System.out.println(iArr[4]);
for (int i = 0; i < iArr.length; i++)
{
System.out.println(iArr[i]);
}
int[] bArr = new int[4];
//依次访问每一个元素
for (int i = 0; i<bArr.length; i++)
{
System.out.println(bArr[i]);
}
bArr[1] = iArr[0] + iArr[2];//20+50=70
bArr[2] = iArr[1] * iArr[3]/3;//10*3/(-3)=-10
//依次访问每一个元素
for(int i = 0; i<bArr.length; i++)
{
System.out.println(bArr[i]);
}
}
}
==================
练习题:定义一个长度为10的 int[] 数组,用Random对象的nextInt(100)方法生成10个随机数存入数组中,计算他们的平均值。
import java.util.Random;
public class 平均值 {
public static void main(String[] args) {
//定义一个长度为10的 int[] 数组,用Random对象的nextInt(100)方法生成10个随机数存入数组中,计算他们的平均值。
int LEM = 100;
int[] arr = new int[LEM];
Random rnd = new Random();
for(int i=0;i<LEM;i++)
{
arr[i] = rnd.nextInt(100);//生成0~100的随机数
}
//计算总和
int sum = 0;
for(int it : arr)
{
sum += it;
}
System.out.println("平均数:" + sum / LEM);
}
}