Java基础学习-2(不完全版)

Java基础学习-2

  • 结构
    • 顺序结构
    • 分支结构
      • if语句
      • switch语句
        • case穿透
        • switch新特性---JDK12
    • 循环
      • for循环
      • while循环语句
      • 无限循环
      • 跳转控制语句
  • 数组
    • 数组初始化
      • 静态初始化
      • 动态初始化
      • 动态初始化和静态初始化的区别
    • 数组的地址
    • 数组的元素访问
    • 数组遍历
    • 数组常见问题

结构

顺序结构

代码的运行是依次从上至下的执行运行的

分支结构

if语句

第一种格式

if(关系表达式){
	语句体;
}

1、首先计算关系表达式的值
2、如果关系表达式的值为true就执行语句体
3、如果关系表达式的值为false就不执行语句体
4、继续执行后面的其他语句

Scanner sc = new Scanner(System.in);
System.out.printIn("请输入女婿的酒量");
int wine = sc.nextInt();
if(wine>){
	System.out.printIn("哎呦,小伙子,不错呦~")
}

if的注意点:
1、大括号的开头可以另起一行书写,但是建议写在第一行的末尾
2、在语句体中,如果只有一行代码,大括号可以省略不写
3、如果对一个布尔类型的变量进行判断,不要用==号

第二种格式

if(关系表达式){
	语句体1;
} else {
	语句体2;
}

1、首先计算关系表达式的值
2、如果关系表达式的值为true就执行语句体1
3、如果关系表达式的值为false就执行语句体2
4、继续执行后面的其他语句

Scanner sc =new Scanner (System.in);
System.out.printIn("请录入身上的钱");
int money=sc.nextInt();
if(money>=100){
	System.out.printIn("吃网红餐厅");
}else {
	System.out.printIn("吃经济实惠的沙县小吃");
}

if语句的第三种格式

if(关系表达式1){
	语句体1
}else if(关系表达式2){
	语句体2;
}
	...
	else {
		语句体n+1}

1、首先机选关系表达式1的值
2、如果为true就执行语句体1;如果为false就计算关系表达式2的值
3、如果为true就执行语句体2;如果为false就计算关系表达式3的值
4、…
5、如果所有的关系表达式结果都为false,就执行语句体n+1;

switch语句

switch(表达式){
	case1:
		语句体1;
		break;
	case1:
		语句体1;
		break;
	...
	default:
		语句体n+1;
		break;
}

执行流程
1、首先计算表达式的值
2、依次和case后面的值进行比较,如果有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。
3、如果所有的case后面的值和表达式的值都不匹配,就会执行default里面的语句体,然后结束整个switch语句。

格式说明
1、表达式:(将要匹配的值)取值为byte、short、int、char。
JDK5以后可以是枚举,JDK7以后就可以是string。
2、case:后面跟的是要和表达式进行比较得值(被匹配的值)。
3、break:表示中断,结束的意思,用来结束switch语句。
4、default:表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似。
5、case后面的语句只能是字面量,不能是变量。
6、case给出的值不允许重复。

case穿透

就是语句体中没有写break导致的

执行流程:
首先还是会拿着小括号中表达式的值跟下面每一个case进行匹配/
如果匹配上了,就会执行对应的语句体,如果此时发现了break,那么结束整个switch语句。
如果没有发现break,那么程序会继续执行下一个case的语句体,一直遇到break或者右大括号为止。

switch新特性—JDK12

int number = 1;
switch(number){
	case 1:
		System.out.priintIn("一");
		break;
	case 2:
		System.out.priintIn("二");
		break;
	case 3:
		System.out.priintIn("三");
		break;
	defalut:
		System.out.printIn("没有这种选项");
		break;
}

等价于

int number = 1;
switch(number){
	case 1 -> System.out.printIn("一");
	case 2 -> System.out.printIn("二");
	case 3 -> System.out.printIn("三");
	default -> System.out.printIn("没有这种选项");
}

循环

for循环

for(初始化语句;条件判断语句;条件控制语句){
	循环体语句;
}

执行流程
1、执行初始化语句
2、执行条件判断语句,看其结果是true还是false
如果是false,循环结束
如果是true,执行循环体语句
3、执行条件控制语句
4、回到2继续执行条件判断语句

while循环语句

初始化语句;
while(条件判断语句){
	循环体语句;
	条件控制语句;
}
循环下面的语句

初始化语句只执行一次
判断语句为true,循环继续
判断语句为false,循环结束

for和while的区别
运行规则都是一样的
for循环中,控制循环的变量,因为归属for循环的语法结构中,在for循环结束后,就不能再次被访问到了
while循环中,控制循环的变量,对于while循环来说不归属其语法结构中,在while循环结束后,该变量还可以继续使用

无限循环

for(;;){
	System.out.printIn("学习");
}
while(true){
	System.out.printIn("学习");
}
do{
	System.out.printIn("学习");
}while(true);

跳转控制语句

continue:跳过本次循环,继续执行下次循环。
break:结束整个循环。

数组

数组:是一种容器,可以用来存储同种数据类型的多个值
数组容器在存储数据的时候,需要结合隐式转换考虑
建议:容器的类型,和存储的数据类型保持一致

数组初始化

在内存中,为数组容器开辟空间,并将数据存入容器中的过程。

静态初始化

完整格式

数据类型[]数组名=new 数据类型[]{元素1,元素2,元素3...};

简写:

数据类型[]数组名={元素1,元素2,元素3...};

动态初始化

初始化时只指定数组长度,由系统为数组分配初始值
格式:数据类型[] 数组名 = new 数据类型[数组长度];
数组默认初始化值的规律
整数类型:默认初始化值0
小数类型:默认初始化值 0.0
字符类型:默认初始化值 ‘/u0000’ 空格
布尔类型:默认初始化值 false
引用数据类型:默认初始化值 null

动态初始化和静态初始化的区别

动态初始化:手动指定数组长度,由系统给出默认初始化值。
适用场景:只明确元素个数,不明确具体数值,推荐使用动态初始化

静态初始化:手动指定数组元素,系统会根据元素个数,计算出数组长度
适用场景:需求中已经明确了要操作的具体数据,直接静态初始化即可

数组的地址

double[] arr6={1.93,1.75,1.73,1.81};
System.out.printIn(arr6);//打印的是数组的地址值

输出为[D@776ec8df
[:表示当前是一个数组
D:表示当前数组里面的元素都是double类型的
@:表示一个间隔符号(固定格式)
776ec8df:这是数组真正的地址值,(十六进制)
平时我们习惯性的会把这个整体叫做数组的地址值

数组的元素访问

利用索引对数组中的元素进行访问
1、获取数组里面的元素
格式:数组名[索引]
2、把数据存储到数组当中
格式 :数组名[索引]=具体数据/变量;
细节:一旦覆盖之后,原来的数据就不存在了。

数组遍历

将数组中所有的内容取出来,取出来之后可以(打印,求和,判断…)
注意:遍历指的是取出数据的过程,不要局限的理解为,遍历就是打印

快捷模式:
数组名.fori

数组常见问题

当访问了数组中不存在的索引,就会引发索引越界异常。

你可能感兴趣的:(java,学习,servlet)