数据输入
import java.util.Scanner;
//导包的动作必须出现在类定义的上方
public class csdn {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//sc是变量名,可以变其他的不可以变
int i = sc.nextInt();
//只有i是变量名可以改变,其他的不可以改变
System.out.println("i:"+i);
}
}
流程控制语句
- 顺序结构
- 分支结构(if,switch)
- 循环结构(for,while,do......while)
顺序结构
顺序结构是程序中最简单的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。
IF语句
switch语句:
//格式:
switch (表达式){
case值1:
语句体1;
break;
case值2:
语句体2;
break;
...
default:
语句体n+1;
break;
case后面要跟和表达式比较的值
break表示中断结束的意思,用来结束switch语句
default表示所有的情况都不匹配的时候,就执行该处的内容,和if语句的else相似
for结构
while结构
do...while结构
三种循环的区别
跳转循环语句
嵌套结构
循环语句中包含循环语句体称为循环嵌套
分支语句中包含分支语句体称为分支嵌套
Random随机数产生
import java.util.Random;
//导包,出现在类定义之上
public class random {
public static void main(String[] args) {
Random r=new Random();
//创建对象
int number = r.nextInt(10);
//获取随机数 [0,10) 不包括10
}
}
IDEA使用
.java和.class文件的位置
辅助按键+快捷键
psvm是生成main()
sout是生成输出语句
ctrl+alt+L是格式化
ctrl+/是注释
ctrl+alt+space是代码补全和内容提示
数组
一次声明大量用于储存多个类型相同数据的储存类型
格式 :数据类型 [ ] 变量名称;
初始化:为数组元素分配内存空间,并为每个数据元素赋值(分为动态和静态初始化)
动态初始化只指定了长度,由系统分配初始值
数据类型 [ ] 变量名 = new 数据类型 [ 长度 ];
int arr = new int[3];
静态初始化指定每个数元素的初始值,系统决定长度
数据类型 [ ] 变量名 =new 数据类型 [ ] { A,B,C... };
//省略格式:数据类型 [ ] 变量名 = { A,B,C... };
int[] arr = {1,2,3};
数组元素访问
数组名[索引]
索引是数据的编号方式,从零开始依次递加
内存分配
数组元素初始化时的默认值
整数 | 0 |
浮点数 | 0.0 |
布尔数 | false |
字符 | 空字符 |
引用数据类型 | null |
此外我们还要去了解单个和多个数组内存图,多个指向相同的数组内存图
int arr = new int[1];
int arr2 = arr;
//arr和arr2的地址相同我们在第二行执行的是将arr的地址赋值给arr2(数组变量名称),都为arr申请的地址
注意的问题
1.索引越界:访问数组中并不存在的索引所对应的元素
错误代码:ArrayIndexOutOfBoundsException
2.空指针异常:访问数组已经不再指向堆内存的数据
错误代码:NullpointerException
数组常见的操作:
遍历:借助for循环
for(int i=0;i<arr.length;i++)
//数组的索引是从0开始到arr.length-1结束的
//其中arr.length是获取数组元素个数
-->TO BE CONTINUE