JAVASE23天从入门到精通

JAVASE23天从入门到精通,第1张

死循环
死循环 : 停不下来的循环叫死循环

	//for循环的死循环格式:
        for (;;) {
            //死循环代码
        }
 	//while循环的死循环格式
        while(true){

        }
        
死循环推荐while格式,在一定的需求场景下死循环还是很好用的!!
控制循环的关键字
break : 中断,结束 //用来提前结束和中断整个循环或者switch
    使用场景 : switch 中 或者 循环中
    
continue : 继续 //用来结束本轮次循环,从下一次循环的步进表达式开始执行
	使用场景 : 循环中
循环的嵌套
循环的循环体语句还是一个循环 --> 循环的嵌套
给循环取别名
    原因: break,continue关键字只能控制他们所在的那层循环	
	给循环取别名:
        格式:
            别名:循环格式
            //别名的命名方式和变量名一致
    使用别名的格式:
        break 别名; / continue 别名;
Random
使用步骤:
	1. 导包
		import java.util.Random;
	2. 创建对象
		Random r = new Random();
	3. 生成随机整数
		int 变量名 = 对象名.nextInt(m);//生成随机数
			m: 随机数的范围 -> [0,m)
                          
    需求:
        1. 生成[1-10]之间的随机数
             int num = r.nextInt(10) + 1;//[0,9] + 1
        2. 生成负数  [-10,-1]
            int num = -(r.nextInt(10) + 1);
        3. 生成[n,m]之间的随机数
            r.nextInt(m - n + 1) + n
            [1,10]:r.nextInt(10 - 1 + 1) + 1
            [22,84]:r.nextInt(84 - 22 + 1) + 22 -> nextInt(63) + 22 -> [0,62] + 22                           
猜数字小游戏 一维数组概述
数组 :  容器 -> 存放一些同类型数据的容器
一维 :  维度 []
二维 :  维度 [][]

数组的特点:
	*1. 数组一旦被定义长度不能发生改变,如果发生改变一定是生成了新的数组 -> 弊端
	*2. 数组中的元素类型必须一致 -> 微观角度: 看单个数组
	*3. 数组中的元素都有自己的编号 -> 索引 : 索引是从0开始
	4. 数组中存储元素 是存取有序的! -> 依次存取
	5. 数组中的元素可以是基本数据类型也可以是引用数据类型 -> 宏观角度 : 站在整个数组概念 -> 好处
	6. 数组元素可以重复
	
一维数组 : 一根绳上的蚂蚱  蚂蚱: 数组中元素 / 绳结法	 / 一包烟
二维数组 : 一条烟
学习容器知识点的方法
容器 : 数组/集合/数据库

1. 如何创建容器
2. 学习容器的增删改查四类功能
3. 如何遍历容器 遍历: 依次获取容器中的元素
一维数组的基本使用
创建容器:
	定义容器: 数据类型[] 数组名  (推荐) / 数据类型 数组名[];
		//例如: 定义一个元素类型为int类型的数组 ->  int[] arr / int arr[]
		数组只定义不初始化,数组是不可以使用的!!
            
	动态初始化:在定义数组时,由程序员决定数组的长度,数组中最开始的元素值由计算机提供(动态初始化元素的默认值)
        //不明确具体的元素值,只知道元素的个数就用动态初始化
		*数据类型[] 数组名 = new 数据类型[m];
		格式解释:
			1. new : 创建对象
			2. 数据类型 : 赋值=号前后的数据类型必须一致
			3. m : 整数 -> 代表的数组的长度/代表的是数组中元素的个数
			//例如 : double[] ds = new double[5];	
		
	静态初始化: 在定义数组时,由程序员决定每一个数组元素的具体值,由计算机自动计算数组的长度/元素的个数;
		//明确每一个元素的值时就可以直接使用静态初始化定义数组元素
		完整版 : 数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3.....};
		*简化版 : 数据类型[] 数组名 = {元素1,元素2,元素3.....};
			//例如 : int[] arr = {1,2,3,4,5};

     [I@4554617c : 数组在内存中的地址值
        [ : 一维数组
        I : int
        @ : 没意思 -> 分隔
        4554617c : 在内存中的地址值 (16进制的数)
        
    数组是引用数据类型,直接输出数组看到的是数组在内存中的地址值
    基本数据类型直接输出的话,看到的基本数据类型的具体值    
增删改查四类功能:
	数组一旦被定义,长度是不能发生改变的;/: 因为数组长度不能发生改变,所以数组没有增删的功能!
        
   *: 要先查到元素再修改元素值
    	数组名[索引] = 要修改的值; //修改指定索引位置上的元素值
    	
   *: 数组中的元素有编号
		元素类型 变量名 = 数组名[索引]; //获取指定索引位置上的元素值
		数组有一种属性: length -> 获取数组中的元素个数/获取数组的长度
        数组名.length
数组元素的遍历:
	//利用数组的长度属性和for循环来遍历数组容器
		for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
动态初始化元素默认值
整数(byte,short,int,long) : 0
浮点数(float,double) : 0.0
字符(char) : '\u0000'  -> 空字符;
布尔(boolean) : false
    
其他所有的引用数据类型数组(String[],Integer[],Student[]) : null    
Java的内存分配(理解)
栈内存: stack
	功能:
		1. 展示程序的执行流程的 -> 方法的进栈和出栈 (先进后出,方法的执行在栈中) //q的d夹
        2. 方法存在于栈中,方法中的变量叫局部变量,局部变量也在栈中! 
            	//只要在方法内,只要在=号左边的变量都是局部变量!!
    特点:
		栈内存中的方法执行完毕立刻d栈!!
            
堆内存: memory
	功能 :  存对象的 -> new 出来的都是对象
	特点 :
		1. 堆中元素都有地址值
		2. 堆中对象内部的数据都有默认值 ;
				整数(byte,short,int,long) : 0
                浮点数(float,double) : 0.0
                字符(char) : '\u0000'  -> 空字符;
                布尔(boolean) : false

                其他所有的引用数据类型数组(String[],Integer[],Student[]) : null 
        3. 堆中数据使用完毕不会立即回收! 等到GC(垃圾回收机制)空闲时候回收!  
                    
方法区:  
	功能 : 
		1. 存放字节码对象 class文件(硬盘) --> class对象(也叫字节码对象)(内存)
            字节码对象内: 当前类的概览(目录)!
        2. 常量池 : 存放常量的池子
        	//常量池在JDK7/8的时候从方法区中搬家到了堆内存!

本地方法区: native 本地
	本地方法区提供本地方法的存放和运行
	本地方法指的是和计算机 *** 作系统交互的方法;

寄存器: 跟CPU运算有关
两个数组的内存图

两个引用指向同一个内存空间的内存图

关于数组 *** 作的2个小问题
    ArrayIndexOutOfBoundsException: 数组索引超出范围异常
        产生原因: 访问了数组中不存在的索引编号
        解决 :
            1. 不访问
            2. 使用正确的索引编号 (索引最大值 = 长度 - 1)

     NullPointerException : 空指针异常
        产生的原因 : 访问了地址值为null的对象 (调用了对象的方法,访问了对象的内部空间,访问了对象的属性)
            //只要对象被赋值为null 那么这个对象就废了!
       解决 :
            1. 找到调用方法的对象,检查这个对象是否被赋值为null

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/915972.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-16
下一篇 2022-05-16

发表评论

登录后才能评论

评论列表(0条)

保存