java基础笔记 循环结构,数组总结
一.循环结构
1.1 for循环
A:在一些特殊的情况中,需要重复执行一段代码,需要使用到for循环
1+2+3+4+5+········+100
public static void main(String[] args) {
int sum=0;
for (int i = 0; i<=100; i++) {
sum+=i;
}
System.out.println(sum);
}
B:for循环的格式
1 2 3
for(初始化表达式;条件表达式;修改表达式的值){
4
循环体;
}
C:执行顺序:1243243
break与continue区别:
break:在switch中我们使用break用来改变程序执行顺序,可以跳出选择结构
1.break如果要用在选择结构中,那么只能用在switch中
2.break可以用在所有的循环结构中,用来跳出整个循环结构,而去执行循环之后的代码
3.如果循环中嵌套if,则if中可以写break,如果循环中嵌套switch,那么switch中的break跳出的是选择结构,而不是循环结构
continue:
1.只能用在循环结构中,不能用在选择结构
2.在循环结构中,如果遇到continue,则跳出本次循环,而去执行下一次循环
return
1、return语句的作用:
a、返回一个值,这个值可以是任意类型。
b、使程序返回到操作系统(即终止程序)
2、java中对于一个函数,不论有没有返回值类型,都可以带有return 语句。 但是区别在于,return 语句是否可以返回一个值(这取决与该函数的返回值类型)。
a、如果函数有返回值类型(即返回值类型不为void ),则必须带有返回相应类型值的return 语句。
b、如果函数没有返回值(即返回值类型为void ),则函数中return 语句(如果存在return语句!)的后面不能加任何的变量。(该情况下的函数中也可以没有return 语句,但是如果有的话,return 只能作为返回操作系统的作用使用。)
例如:
1、有返回值
public int getAge() {
return age; //返回int 类型的变量age的值
}
2、无返回值 函数不带return 语句
public void putAge() {
System.out.println(age);
}
1.2 while循环
A: do…while :特点:先执行一次循环操作,然后再去判断循环条件,至少执行一次循环操作
do{
//循环操作
}while(循环条件);
执行顺序:先执行循环操作,然后判断循环条件,如果满足,则再次执行循环操作,否则,跳出循环
B:while…do :特点:先判断条件,如果满足再去执行,有可能一次循环操作都不执行
while(循环条件){
//满足循环条件时执行的代码块
}
public class WhileDome {
public static void main(String[] args) {
int i = 0;
while (i<10) {
System.out.println("好好学习");
++i;
}
}
执行顺序:先判断循环条件,如果满足,则执行循环体(循环操作),然后再判断,满足继续执行循环体,
直到循环条件返回false,则跳出循环
例:猜数字:
A:藏数字: int num=121;
B:循环变量:
学生猜数字 guess;
C:猜大,------guess > num
猜小,------gues s< num
猜对,----------guess = num
import java.util.Scanner;
public class WhileDemo {
public static void main(String[] args) {
int num=121;
int a;
int x = 0;
Scanner scanner=new Scanner(System.in);
System.out.println("请输入要猜的数字:");
a=scanner.nextInt();
while (a!=num) {
if (a>num) {
System.out.println("猜大了,继续猜:");
a=scanner.nextInt();
}else if (a<num) {
System.out.println("猜小了,继续猜:");
a=scanner.nextInt();
}else if (a==num) {
break;
}
if (a==num) {
System.out.println("擦对了,总共用了"+x+"次");
}
x++;
}
}
二、数组(Array)
1:概念
用来存储多个相同数据类型的一种数据结构
2.声明
1.数据类型[] 数组名; int[] arr;
2.数据类型 数组名[]; int arr[];
3.初始化
1.动态初始化:初始化的时候只指定了数组长度,初始值是由系统来分配决定
2.静态初始化:初始化的时候指定了元素初始值,长度是由系统决定的。
4.Java内存分配
计算机中为了提高程序的运行效率,将内存空间分为了以下5类:
1.栈:存放局部变量(在方法体中和方法的声明部分的变量)使用完毕之后,立刻被销毁,进行回收,执行效率优于堆。
2.堆:如果没有任何一个对象在引用堆内存中的地址,那么这块内存空间就是垃圾,java的垃圾回收机制-----系统空闲的时候。
3.方法区:
4.系统方法区:存放的是系统相关的内容,java语言无法操作
5.寄存器:执行效率最高
5.图解
身份证第18位(校验码)的计算方法
1、将前面的身份证号码17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2。
2、将这17位数字和系数相乘的结果相加。
3、用加出来和除以11,看余数是多少?
4、余数只可能有0-1-2-3-4-5-6-7-8-9-10这11个数字。其分别对应的最后一位身份证的号码为1-0-X-9-8-7-6-5-4-3-2。
5、通过上面得知如果余数是2,就会在身份证的第18位数字上出现罗马数字的Ⅹ。如果余数是10,身份证的最后一位号码就是2。
import java.util.Scanner;
public class CardDemo {
public static void main(String[] args) {
//用来存储身份证的前17位数字
int [] card =new int[17];
int [] data={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
//用来存储身份证 的最后一位
char [] code ={'1','0','X','9','8','7','6','5','4','3','2'};
Scanner scanner=new Scanner(System.in);
int sum=0;
for (int i = 0; i < 17; i++) {
System.out.println("请输入前17位身份证号:");
card [i]=scanner.nextInt();
}
for (int i = 0; i <17; i++) {
sum+=card[i]*data[i];
}
System.out.println("你身份证号的最后一位是"+code[sum%11]);
}