Java0基础学习笔记day07(Random生成随机数、java猜数字、数组概述、java中的内存分配)
1.Random:用于生成随机数
* 使用步骤:
* A:导包 import java.util.Random;
* B:创建对象Random r= new Random();
* C:调用随机数 int i=r.nextInt(10);包括0 不包括10,即[0,10) 。若没有范围则生成的数值有正数也有负数且在int数值范围内。
* 随机数Random:
* 会随机生成一个整数,这个整数的范围就是int类型的范围-2^31 ~ 2^31-1,
* 但是如果在nextInt()括号中加入一个整数a那么,这个随机生成的随机数范围就变成[0,a)。public static void main(String args[]){Random r=new Random();//0-9int a=r.nextInt(10);System.out.println(a);//0-9随机数//获取0-99随机数,【0,100)//0-99int b=r.nextInt(100);//nextInt(100)+1则范围变成1-100System.out.println(b);
* 2.Random、Scanner与while、if的结合使用,猜数字小游戏案例:
* 系统产生一个随机数,请猜出数字大小
* 使用while循环与if的结合使用,当猜对时,使用break结束循环,否则一直猜。
* 代码:Scanner sc=new Scanner(System.in);int count=0;boolean flage=true;while(flage){System.out.println("请输入你要猜的数据:");//键盘输入int b=sc.nextInt();if(b==a){count++;System.out.println("恭喜你,猜对啦!!随机数为:"+b+",总共猜了:"+count+"次!");break;}else if(b>a){count++;System.out.println("猜的数据大了");}else {count++;System.out.println("猜的数据小了");}}
* 3.数组概述:
* 定义:数组是存储多个变量的容器,这多个变量的数据类型要一致。
* 定义格式:
* A:数据类型 []数组名;(常用)
* B:数据类型 数组名 [];
* eg:int[] arr;//定义了一个int类型的数组,数组名是arr。
* int arr[];//定义了一个int类型的变量,变量名是arr数组
* 数组的初始化:
* A:所谓的初始化,就是为数组开辟内容空间,并为数组中的每一个元素赋予初始值。
* B:两种方式实现数组的初始化:
* ①:动态初始化 只给出长度,由系统给出数组初始化值。
* ②:静态初始化 给出初始化值,由系统决定长度
* 动态初始化:
* 数据类型[] 数组名=new 数据类型[数组长度];
* 注意:声明就是栈内存(只是一个声明,不能存储实际东西), new 出来的东西到堆内存(说明真实存在了,可以存储东西) ;
* 数组元素的访问:通过索引访问。
*int []arr=new int[3];/*解释上行:* 左边:* int:说明数组中的元素类型 都是int类型* []:说明这是一个数组* arr:数组名称*右边:* new :为数组申请内存分配, 开辟内存空间(才能存东西)* int :说明数组中的元素类型为int* [] :说明这是一个数组* 3: 数组长度,本质数组中的元素的个数* * *///输出数组名System.out.println(arr);//[I@15db9742 [代表数组的意思,是数组的地址值//获取数组的地址是没有意义的,我们需要数组中的元素值//数组中的每一个元素是有编号 ,从0开始,最大编号是数组长度-1//访问:通过指定编号获取指定编号的元素。//这个编号的专业叫法就叫索引//访问格式:数组名[索引]System.out.println("arr[0]:"+arr[0]);//int数组默认初始值0System.out.println("arr[1]:"+arr[1]);System.out.println("arr[2]:"+arr[2]); // System.out.println("arr[3]:"+arr[3]);//报错 索引超过范围//静态初始化int [] arr1={1,2,3};System.out.println(arr1[0]);
*
* 4.Java中的内存分配
* 定义:Java程序在运行时,需要在内存中分配空间。为了提高效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式
* 栈:存储的是局部变量。eg:int a=10;中a就是局部变量。(也要开辟空间)
* 堆:存储的new出来的东西(也要开辟空间);int []a=new int[3]; (本质是new int[3],因为赋值给a了,所以a指向new int[3]的地址,输出a作为数组地址值。)
* 方法区:面向对象的阶段讲
* 本地方法区:和系统相关
* 寄存器:给CPU调用
*
* 栈:存储的是局部变量(也要开辟空间)
* 局部变量就是定义在方法中(如main方法、自定义方法等)的变量
* int arr=new int[3];
* 栈:(也要开辟空间)
* int [] arr 指向堆的地址
* 堆:(也要开辟空间)
* new int[3] 数组的初始化都有地址值且赋值给栈的arr;
* 每一种数据类型的数组都有初始值0/0.0/'\u0000'/false/null
* 使用完毕方法结束之后,会在垃圾回收器空闲的时候被回收
* 图解:
* 5.练习:Four.javapublic static void main(String[] args) {// TODO Auto-generated method stub/** * 定义一个数组,输出数组名及元素,然后给数组中的元素赋值,再次输出数组名和元素 * */int [] arr=new int[3];System.out.println(arr);System.out.println(arr[0]);System.out.println(arr[1]);System.out.println(arr[2]);System.out.println("---------");//赋值arr[0]=100;arr[2]=200;System.out.println(arr);System.out.println(arr[0]);System.out.println(arr[1]);System.out.println(arr[2]); // 解释:/**栈:* int arr[] 指向地址:[I@15db9742* * 堆:* new int[3] 数组地址值:[I@15db9742* * * * */练习图解:
* */
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!


