Code; //先执行代码块,再执行逻辑值,如果逻辑值为 true,转过头来继续执行代码块;如果为 false,就执行接下来的程序。
2 7
for(){定义循环变量; 控制条件; 改变循环变量){ //
1 4 5 6
Code;
}
注意:对于 for 循环而言,如果第二部分的控制条件没有写,那么默认是 true,这个时候就成了一个死循环。
习惯上如果变化不规律或者次数不确定一般使用while(比如,从控制台获取一个大于 10 的奇数,有可能输入很多次,就是用这个)
while(n < 10 || n % 2 ==0){
n =s.nextInt();
}
for(; n < 10 || n % 2 == 0; n = s.nextInt())
//求 1-50 的和
int sum = 0;
//对于 for 循环而言,如果第二部分的控制条件没有写,那么默认是 true,这个时候就成了一个死循环。
for(int i = 1; i <= 50; i++){
sum += i;
i++;
}
System.out.println(sum);
练习:百钱百鸡 --- 3 文钱 1只公鸡, 2 文钱 1 只 母鸡,1 文钱 3 只小鸡;100 文钱如何买恰好 100 只鸡? --- 先定义一个循环表示公鸡,嵌套一个循环表示母鸡,计算小鸡的个数,根据各种鸡的个数来计算钱数是否为 100
/**
练习:百钱百鸡 --- 3 文钱 1只公鸡, 2 文钱 1 只 母鸡,1 文钱 3 只小鸡;100 文钱如何买恰好 100 只鸡?
--- 先定义一个循环表示公鸡,嵌套一个循环表示母鸡,计算小鸡的个数,根据各种鸡的个数来计算钱数是否为 100
*/
import java.util.Scanner;
public class Demo2d{
public static void main(String[] args){
Scanner s = new Scanner(System.in);
for(int i = 1 ; i <= 33 ; i++)
for(int j = 1; j <= 50; j++){
int k = 100 - i - j
if(k % 3 == 0 && 3*i+2*j+k/3 == 100){
System.out.print(i+","+j+","+k+"\t");
}
}
}
}
break 和 continue
break:用于选择结构和循环结构,表示结束当前的一层结构
continue:只能用于循环结构,表示跳过本次循环继续下次循环,
扩展作业:一个循环打印九九乘法表
for(int i = 1; i <= 9; i++){
for(int j = 1; j <= i; j++){
//if(i*j >= 10){
// System.out.print(i+"*"+j+"="+i*j+" ");
//}else{
// System.out.print(i+"*"+j+"="+i*j+" ");
//}
System.out.print(i+"*"+j+"="+i*j+"\t");//使用制表符 \t,可以不用自己特意去控制了,自动左边对齐了。
}
System.out.println();
}
数组
存储同一类型的多个数据的容器 --- 大小固定的
数组会对放入其中的数据进行编号,编号是从 0 开始的 --- 下标(比数组的长度少一个)
数组的容量 --- 长度
定义格式
数据类型[] 数组名 = new 数据类型[长度];
int arr = new int[5]; 表示定义一个能存储 5 个整型元素的数组
arr[3] = 10; arr[5] = 7; // ArrayIndexOutOfBoundsException ---数组下标越界异常
内存
Java 将所占用的内存划分为了 5 块:栈内存(*)、堆内存(*)、方法区、本地方法栈(涉及到块语言的问题)、PC 计数器(寄存器,跟硬件相关)
栈内存
用于存储变量的,变量在栈内存中使用完成之后会立即移除出栈内存,有种卸磨杀驴的样子。只要遇到 new ,就会在堆中开辟一块空间(从 0-n划分),有地址。对于里面的数据先默认一个值(0),当赋值后改变值。
堆内存
用于存储对象(数组是一种特殊的对象)的。元素在存入堆内存中之后会自动的赋予默认值:byte/short/int -0 long -0L float -0.0f double -0.0 char -‘\u0000‘ boolean -false,其他类型的默认值都是null。 [(表示数据类型 --- [ 表示数组) I(如果这是一个数组,那么是这一部分表示数组中的元素类型 --- I 表示 Int) @(标记符号,表示后边是一个地址) 15db9742(可以认为表示一个地址,实际上是这个对象的哈希码的十六进制形式)
对象在用完之后是在不确定的某个时刻被回收。
明天内容:
数组
定义
内存
应用
遍历、排序、查找、反转、复制
时间/空间复杂度 --- 数列(等差数列求和)、指数、对数(对数公式 logab=logcb/logca,logabn=nlogab logab=1/logba)
二维数组