九、流程
- if
if(布尔表达式){
语句体
}
- if-else
if(布尔表达式){
语句体A
}else{
语句体B
}
package day03_Process;
/*
* 【题目描述】输入一个数,判断是奇数还是偶数
*/
import java.util.Scanner;
public class Demo00 {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
if(num % 2 == 0){
System.out.println("偶数");
}else{
System.out.println("奇数");
}
}
}
- if-else if-else
if(条件判断1){
语句体1
}else if(条件判断2){
语句体2
}
...
else if(条件判断n){
语句体n
}else{
语句体n+1
}
package day03_Process;
/*
* 【题目描述】考试成绩划分
*/
import java.util.Scanner;
public class Demo01 {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入考试成绩:");
int score = sc.nextInt();
if(score >= 90 && score <= 100){
System.out.println("优秀");
}else if(score >= 80 && score < 90){
System.out.println("良好");
}else if(score >= 70 && score < 80){
System.out.println("中等");
}else if(score >= 60 && score < 70){
System.out.println("及格");
}else if(score >= 0 && score < 60){
System.out.println("不及格");
}else{
//边界情况,负数或超过100
System.out.println("无效数字!");
}
}
}
- for循环
for(1初始化语句;2条件判断;4步进语句){
3循环体
} // 1234-234-234-...-直到2不满足为止
package day03_Process;
/*
* 【题目描述】求出1-100之间的偶数和
*/
public class Demo02 {
public static void main(String[] args){
int sum = 0;
for(int i = 1; i <= 100; i++){
if(i % 2 == 0){
sum += i;
} //判断是否是偶数,是则累加
} //逐个增加
System.out.println("偶数和为:" + sum);
}
}
- for…each语句
//遍历一个数组或集合中的所有元素
int a[] = new int[100];
for(int e:a) //对于数组a中的每个整数e
- while循环
//一般格式
while(1条件判断){
2循环体
} //12-12-...-直到1不满足
//扩展格式
1初始化语句
while(2条件判断){
3循环体
4步进语句
} // 1234-234-234-...-直到2不满足为止
- do while循环
do{
1循环体
}while(2条件判断);
//先执行一次循环体,再进行判断,1-21-21-...-直到2不满足
- switch语句
//基于表达式的值使程序执行不同的语句序列
switch(条件表达式){
case value 1:
语句序列 break;
case value 2:
语句序列 break;
...
case value n:
语句序列 break;
default:
默认语句序列
}
- 永真循环(死循环)
//标准格式
while(ture){
循环体
}
//扩展格式
for(;;){
循环体
}
- break
break; //使整个循环立刻结束
break label; //标签(label)是任何合法的java标识符后跟一个冒号(:),用于从嵌套很深的循环中退出
- continue
只是跳过当前次,立刻开始下一次循环
package day03_Process;
public class Demo03 {
public static void main(String[] args){
for(int i = 1; i <= 10;i++){
if(i == 4){
System.out.println("没有第4层楼");
continue; //结束此次for循环
}
System.out.println("这是第" + i + "层楼");
} //for
}
}
- return 语句
用来明确地从一个方法返回
return 返回值; // 若return语句未出现在子方法中,则子方法的最后一条语句执行后自动返回到主方法
十、数组
数据类型[] 数组名称;
数据类型 数组名称[]; // 不推荐
在内存中开辟数组空间,并赋予默认值
- 动态初始化: 指定数组 长度
- 一个步骤:
数据类型[] 数组名称 = new 数据类型[数据长度];
- 两个步骤:
数据类型[] 数组名称;
数组名称 = new 数据类型[数组长度];
- 默认赋值
整数 - 全是0
浮点数 - 全是0.0
字符 - ‘\u0000’(Unicode写法)
布尔值 - false
字符串、其他引用类型 - null
package day04_Array;
public class Demo01_ArrayVisit {
public static void main(String[] args) {
//动态初始化
int[] arr1 = new int[3];
double[] arr2;
arr2 = new double[3];
String[] arr3 = new String[3];
//访问数组地址值
System.out.println(arr1); //数组16进制的地址值/哈希值:[I@123a439b
//访问数组中的具体值:格式 数组名称[索引]
System.out.println(arr1[0]);
System.out.println(arr1[1]);
System.out.println(arr1[2]);
System.out.println(arr2[0]);
System.out.println(arr2[1]);
System.out.println(arr2[2]);
System.out.println(arr3[0]);
System.out.println(arr3[1]);
System.out.println(arr3[2]);
}
}
- 静态初始化: 指定数组 内容
- 一个步骤:
数据类型[] 数组名称 = new 数据类型[] {元素1,元素2,…,元素n}
- 两个步骤:
数据类型[] 数组名称;
数组名称 = new 数据类型[] {元素1,元素2,…,元素n};
- 简便格式:只能一次到位
数据类型[] 数组名称 = {元素1,元素2,…,元素n};
package day04_Array;
public class Demo02_ArrayStatic {
public static void main(String[] args) {
//静态初始化
int[] arr1 = new int[] {
1,2,3};
int[] arr2;
arr2 = new int[] {
4,5,6};
int[] arr3 = {
7,8,9};
System.out.println(arr1[0]);
System.out.println(arr1[1]);
System.out.println(arr1[2]);
System.out.println("=====================");
System.out.println(arr2[0]);
System.out.println(arr2[1]);
System.out.println(arr2[2]);
System.out.println("=====================");
System.out.println(arr3[0]);
System.out.println(arr3[1]);
System.out.println(arr3[2]);
}
}
package day04_Array;
/*
* 【题目描述】获取数组长度
*/
public class Demo03_ArrayLength {
public static void main(String[] args) {
//静态初始化
int[] arr1 = {
1,1,1,1,1,1,11,1,1,1,11,1};
System.out.println(arr1.length);
//动态初始化
int[] arr2 = new int[56];
System.out.println(arr2.length);
}
}
如果访问的数组元素索引并不存在,那么将会发生异常:
java.lang.ArrayIndexOutOfBoundsException。
注意,数组元素索引编号从0开始,一直到“数组长度-1”为止。
-
Java内存分配
-
栈 (Stack): 存放局部变量
-
堆(Heap): 凡是new出来的东西,都在堆当中。堆中数据有默认值规则:
- 如果是整数,默认为0
- 浮点数 - 全是0.0
- 字符 - ‘\u0000’(Unicode写法)
- 布尔值 - false
- 字符串、其他引用类型 - null
-
方法区(Method Area): 存放与.class相关的信息
-
本地方法区(Native Method Area): 与os有关
-
寄存器(pc Register): 与cpu相关,性能极高
-
数组中的内存分配
package day04_Array;
/*
* 【题目描述】求数组元素最值
*/
public class Demo04_ArraryMaxAndMin {
public static void main(String[] args) {
//求数组中的最大值
//英雄相聚
int[] arr1 = {
1,56,45,98,65,100,892,98};
//设擂台,第一个人上擂等挑战
int max = arr1[0];
//两两相比
for(int i = 1; i < arr1.length; i++) {
//比试
if(arr1[i] > max) {
//败者下台,胜者还在台上
max = arr1[i];
}
}
//求数组的最小值
//英雄相聚
int[] arr2 = {
1,56,45,98,65,100,892,98};
//设擂台,第一个人上擂等挑战
int min = arr2[0];
//两两相比
for(int i = 1; i < arr2.length; i++) {
//比试
if(arr1[i] < max) {
max = arr2[i];
}
}
System.out.println("max值:" + max + " min值:" + min);
}
}
package day04_Array;
/*
* 【题目描述】求数组元素和,设置一个长度为6的数组,存入任意6个数字,然后求出所有元素的总和。
*/
public class Demo05_ArraySum {
public static void main(String[] args) {
int[] arr1 = {
54,89,56,21,64,79};
int sum = 0;
for(int i = 0; i < arr1.length; i++) {
sum += arr1[0];
}
System.out.println("数组和为:" + sum);
}
}