JAVA流程控制
一、输入Scanner java.util.Scanner
判断用户有没有输入 scanner.hasNext();
可使用next() 和nextLine()方式接受键盘输入
二、顺序结构、选择结构
顺序结构是Java的基本结构,从上到下顺序执行;
if 单选择结构:
if(布尔表达式){//布尔表达式为真则执行}
if双选择结构:
if(){} else{}
if多选择结构:
if(){} else if{} else if{} esle{}
switch case 多选择结构
注意break和continue的区别
三、循环结构
while:表达式为true,循环会一直执行;
do while:即使不满足条件,也至少执行一次;
for:for(初始化;布尔表达式;更新){};
增强for循环
Java方法
一、方法:一个方法只完成一个功能,方便后期扩展
形参:定义参数
实参:实际传递调用的参数
二、方法的重载:参数列表必须不同 ;方法名称相同;返回类型可相同可不同
三、命令行传参 :靠main()函数实现
可变参数:不定项参数,必须在最后面 例如 int ... x
四、递归 :一个方法调用自己本身
边界条件要确定;
当调用次数太多可能会造成内存问题
五、内存分析
堆:存放new的对象和数组,可以被所有线程共享,不会存放别的对象引用
栈:存放基本变量类型(会包含这个基本类型的数值) 引用对象的变量(会存放这个引用在堆里面的具体地址)
方法区:可以被所有的线程共享,包含了所有的class和static对象;
六、数组的使用
Arrays类:类中包含一系列对数据操作函数,例如下面几个函数;
赋值:fill
排序:sort 升序
比较:equals 比较数组中元素是否相等
查找:binarySearch 二分查找
稀疏数组:把具有不同值的元素和行列和值记录在一个小规模数组中,从而缩小程序的规模
稀疏矩阵和数组转换
package com.wings;
import com.sun.codemodel.internal.JArray;
import java.util.Scanner;
public class Demo1 {
public static void main(String[] args ){
//创建数组
int[][] array1 = new int[11][11];
array1[1][2] = 1;
array1[2][3] = 2;
for (int[] ints :array1){
for (int anInt:ints){
System.out.print(anInt+"\t");
}
System.out.println();
}
//转换为稀疏矩阵
int sum = 0;
for (int i = 0; i<11; i++){
for (int j = 0;j<11;j++){
if (array1[i][j] != 0){
sum++;
}
}
}
System.out.println(sum);
int[][] array2 = new int[sum+1][3];
array2[0][0] = 11;
array2[0][1] = 11;
array2[0][2] = sum;
int count = 0;
for (int i = 0; i<11; i++){
for (int j = 0;j<11;j++){
if (array1[i][j] != 0){
count++;
array2[count][0] = i;
array2[count][1] = j;
array2[count][2] = array1[i][j];
}
}
}
for (int i = 0;i<array2.length;i++){
System.out.print(array2[i][0]+"\t"+array2[i][1]+"\t"+array2[i][2]+"\t");
System.out.println();
}
//取出稀疏矩阵值 还原数组
int[][] array3 = new int[array2[0][0]][array2[0][1]];
for (int i = 1;i<array2.length;i++){
array3[array2[i][0]][array2[i][1]] = array2[i][2];
}
for (int[] ints :array3){
for (int anInt:ints){
System.out.print(anInt+"\t");
}
System.out.println();
}
}
}