Java基础学习
一 判断和循环语句
1.1 顺序结构
顺序结构是Java默认的执行流程,
按照代码顺序,从上到小依次进行
1.2 分支结构
1.2.1 if语句
第一种语法格式:
执行流程:
- 首先计算关系表达式的值
- 如果关系表达式的值为true就执行语句体
- 如果关系表达式的值为false就不执行语句体
- 继续执行后面的其他语句
第二种语法结构:
执行流程:
- 首先计算关系表达式的值
- 如果关系表达式的值为true就执行语句体1
- 如果关系表达式的值为false就执行语句体2
- 继续执行后买你的代码
1.2.2 switch
执行流程:
- 首先计算表达式的值
- 依次和case后面的值进行比较,如果有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束
- 如果所有的case后面的值和表达式的值都不匹配,就会执行default里面的语句体,然后结束整个switch语句
注意
- 表达式:(将要匹配的值) 取值为byte、short、int、char。JDK5以后可以是枚举,JDK7以后可以是String。
- case:后面跟的是要和表达式进行比较的值 (被匹配的值)
- break:表示中断,结束的意思,用来结束switch语句
- default:表示所有情况都不匹配的时候,就执行该处的内容和if语句的else相似。
- case后面的值只能是字面量,不能是变量
- case给出的值不允许重复
如果没有加上break,就会产生穿透,会继续向下依次进行表达式,直到遇到break
1.2.3 for循环
执行流程
-
- 执行初始化语句
-
- 执行条件判断语句,看其结果是true还是false
如果是false,循环结束
如果是true,执行循环体语句
- 执行条件判断语句,看其结果是true还是false
-
- 执行条件控制语句
-
- 回到 2 继续执行条件判断语句
1.2.4 while循环语句
回文函数
- 需求:给你一个整数X。
如果x是一个回文整数,打印 true ,否则,返回 false - 解释:回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数
- 例如,121 是回文,而123 不是
import java.util.Scanner;
public class exerciseXunhuan {
/*需求:给你一个整数X。
如果x是一个回文整数,打印 true ,否则,返回 false
解释:回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数
例如,121 是回文,而123 不是
* */
public static void main(String[]args){
System.out.println("请输入一个整数");
//获取到输入的值
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
//设置一个变量去保存num初始值,便于最后的比较
int temp = num;
//定义一个变量去接收返回的逆序数
int x= 0;
while (num != 0){
int ge = num%10;
//改变每一次进入当前循环的值,使得每次进入都获取到原来数的前一位的上一位数
num /= 10;
//逆序数
x= x*10 + ge;
}
System.out.println(x);
if(x==temp){
System.out.println(true);
}else{
System.out.println(false);
}
}
}
1.2.5 do…while循环
先执行前面的代码,后判断,如果为假,就跳出循环,如果为真,就继续循环
二 数组
2.1 什么是数组
数组指的是一种容器,可以用来存储同种数据类型的多个值
注意:
建议:容器类型与存储类型一致
容器在存储的时候会进行隐式转换
2.2 数组的定义
2.3 数组的初始化
- 静态初始化:
就是在内存中,为数组开辟空间,并将数据存入容器中的过程
第一种:格式: 数据类型 数组名 = new 数据类型 [] {元素1,元素2,元素3......};
int arr = new int [] {1,2,6,3};
(建议)
第二种:格式: 数据类型 数组名 [] = {元素1 , 元素2,..........};
int arr [] = {1,2,56,2,5};
- 数组动态初始化
格式: 数据类型 数组名 = new 数据类型 [数组长度]
int arr = new int [5];
动态初始化 与 静态初始化区别
动态初始化:手动指定数组长度,由系统给出默认初始化值
只明确元素个数,不明确具体数值,推荐使用动态初始化
静态初始化:手动指定数组元素,系统会根据元素个数,计算出数组的长度
需求中已经明确了要操作的具体数据,直接静态初始化即可。
2.4 数组的访问
格式: 数组名 [索引];
索引:也叫下标,角标,是从0开始逐渐递增的,连续不断的
数组遍历
public class busssss {
public static void main(String[]args){
int arr [] = {1,4,6,2,52,5,6};
for(int i = 0 ; i<arr.length;i++){
System.out.println(arr[i]);
}
}
}
三 Java内存分配
注意:
从JDK8开始,取消方法区,新增元空间。把原来方法区的多种功能进行拆分有的功能放到了堆中,有的功能放到了元空间中。
- 栈区:方法运行时使用的内存,比如main方法运行,进入方法栈中执行
- 堆区:存储对象或者数组 , new来创建的,都存储在堆内存
- 方法区:存储可以运行的class文件
- 本地方法栈:JVM在使用操作系统功能的时候使用,和我们开发没有用
- 寄存器: 给CPU用的,和开发无关
数组内存图
两个数组指向同一个空间
因为他们指向的都是同一个地址空间,所以当其中一个发生了改变,另外一个也会发生改变