今日内容:
1.流程控制
2.数组的使用
流程控制
以最简单的实例演示熟知的流程控制
package com.stx.practice;
public class AddOperation {
/*三种方式求1到一百的和*/
public static void main(String[] args) {
// method_For();
// method_While();
method_DoWhile();
}
// for循环
public static void method_For(){
int sum = 0;
String str = "";
for (int i=1;i<=100;i++){
sum += i;
str = str + i + "+";
}
str = str.substring(0,str.length()-1);
// String substring(int beginIndex, int endIndex)
//返回一个字符串,该字符串是此字符串的子字符串。 (相当于从左边的索引截取到右边的索引)
System.out.println(str+"="+sum);
}
// while循环
public static void method_While(){
int n = 1;
int sum = 0;
String str = "";
while(n<=100){
sum += n;
str = str+n+"+";
n++;
}
str = str.substring(0,str.length()-1);
System.out.println(str+"="+sum);
}
// dowhile循环
public static void method_DoWhile(){
int sum = 0;
int i = 1;
String str = "";
do {
sum += i;
str = str + i +"+";
i++;
}while (i<=100);
System.out.println(str.substring(0,str.length()-1)+"="+sum);
}
}
增强for循环------foreach
更便于遍历集合和数组
注:使用foreach循环迭代数组时,并不能改变数组元素的值,不要对foreach的循环变量进行赋值
错误示例:
foreach循环中的循环变量只是一个临时变量,它只是保存了数组元素的值。
数组
数组引用变量是访问堆内存中数组元素的根本方式
如果要访问这个数组要使用p[index]这种方式(p:引用变量)
为什么会有栈内存和堆内存之分?
在一个方法执行时,每个方法都会建立自己的内存栈,方法中定义的变量都会逐个放在这个栈内存中,一单方法结束调用,那么这块栈内存便会自己销毁。
创建一个对象时,对象将被保存到运行时的数据区中(这个数据区就是堆内存),堆内存中的对象不会随着方法的结束而被销毁,方法结束后,还可以被其他的引用变量引用。当一个对象没有被任何引用变量引用时,它才会等待回收。
代码讲解
int[] a = {5,7,20}
// 数组a的长度是3
int[] b = new int[4];
// 数组b的长度是4
b = a;
// 因为a和b都是int[]类型,所以可以将a赋值给b
定义并初始化一个数组后,在内存中分配了两个空间,一个用于存放引用变量(栈内存),一个用于存放数组的元素(堆内存)
如上代码,就产生了4块内存,首先创建栈内存存放引用变量a,b,在堆内存中也创建了两块内存区,分别存储a,b引用所指向的数组本身
当语句 b = a 执行后,b的引用变量就会指向a的内存地址,那么b的元素(4个0)就会闲置,失去了引用就会等待回收。