Java基础 -- 变量、数组、随机数

一、变量

1. 基本数据类型

Java语言有8种基本数据类型,分别用于存储整数、浮点数、字符数据和布尔类型数据,其存储空间和使用场景如下表所示:
在这里插入图片描述

2. 变量保存的位置

  • 基本类型:栈
  • 引用数据类型:堆保存真实数据,栈保存地址

3. 参数的值传递和引用传递

  • 基本数据类型:按值传递
  • 引用数据类型:传递变量的地址

4. 比较符 “==”

  • 如果针对的是基本类型,只判断值是否相等
  • 如果针对的是引用数据类型,判断的是指向内存地址是否一样

二、数组

1. 数组的定义

声明数组的语法: 数据类型[ ] 数组名 = new 数据类型[大小]
在这里插入图片描述

2. 数组的初始化

基本类型的数组创建后,其元素的初始值:
byte、short、char、int、long为0;
float和double为0.0;
boolean为false

初始化方法一:

**int[ ] arr = { 10, 23, 30, -10, 21 };** // 元素的个数即为数组的长度

初始化方法二:

**int[ ] arr ;
arr = new int[ ] { 10, 23, 30, -10, 96 };**

注意:[ ]中不可以写长度,元素的个数就是数组的长度。

3. 数组的常用方法

3.1 打印数组

int[] numbers = new int[]{1, 3, 2, 5, 4};
System.out.println(Arrays.toString(numbers));

3.2 检查数组是否包含某一个值

String[] stringArray = { "a", "b", "c", "d", "e" };
boolean b = Arrays.asList(stringArray).contains("a");
System.out.println(b);
// true

3.3 在数组中二分查找指定元素key

 int[] numbers = new int[]{1, 2, 3, 4, 5, 6};
 System.out.println(Arrays.binarySearch(numbers, 5));
 // 查找的元素在数组中的角标位置

3.4 将数组的一部分拷贝出来(从被拷贝数组头元素开始算)

String[] words = new String[]{"I", "Love", "China", "!"};
String[] subWords = Arrays.copyOf(words, 2);

3.5 将数组的一部分指定范围拷贝出来

3.5.1 方法一
String[] words = new String[]{"I", "Love", "China", "!"};
String[] subWords = Arrays.copyOfRange(words, 1, 3);

温馨提示:Java关于数组等等的操作,都是包含头不包含尾,例如上面的代码,1,3 得到的 subWords = {“Love”, “China”}

3.5.2 方法二
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
/*代码解释:
  Object src : 原数组
   int srcPos : 从元数据的起始位置开始
  Object dest : 目标数组
  int destPos : 目标数组的开始起始位置
  int length  : 要copy的数组的长度*/

3.6 将数组所有元素用指定元素替换

String[] words = new String[]{"I", "Love", "China", "!"};
Arrays.fill(words, "Yes");

3.7 将数组的指定位置元素用指定元素替换

String[] words = new String[]{"I", "Love", "China", "!"};
Arrays.fill(words, 1, 2, "Yes");

3.8 将数组进行内部排序

int[] numbers = new int[]{1, 3, 2, 5, 4};
Arrays.sort(numbers);

注意:要求数组中元素已经按升序排列

三、随机数

1. 方式一:System.currentTimeMillis()

通过System.currentTimeMillis()来获取随机数。实际上是获取当前时间毫秒数,它是long类型。使用方法如下:

final long l = System.currentTimeMillis();

//若要获取 int类型的整数,只需要将上面的结果转行成 int类型即可。比如,获取 [0, 100)之间的int整数。方法如下:
final long l = System.currentTimeMillis();
final int i = (int)( l % 100 );

2. 方式二:Math.random()

通过Math.random()来获取随机数。实际上,它返回的是 [ 0, 1 ) 的double值。使用方法如下:

final double d = Math.random();

//若要获取int类型的整数,只需要将上面的结果转行成int类型即可。比如,获取[0, 100)之间的int整数。方法如下:
final double d = Math.random();
final int i = (int)(d*100);

3. 方式三:Random类

通过Random类来获取随机数。使用方法如下:

// (1) 创建Random对象。有两种方法可以创建Random对象,如下:
Random random = new Random(); //默认构造方法
Random random = new Random(1000); //指定种子数字

// (2) 通过Random对象获取随机数。Random支持的随机值类型包括:boolean, byte, int, long, float, double。
//比如,获取[0, 100)之间的int整数。方法如下:
int i2 = random.nextInt(100);

附:Random 的函数接口

// 构造函数(一): 创建一个新的随机数生成器。 
Random() 
// 构造函数(二): 使用单个 long 种子创建一个新随机数生成器: public Random(long seed) { setSeed(seed); } next 方法使用它来保存随机数生成器的状态。
Random(long seed) 

boolean nextBoolean()         // 返回下一个“boolean类型”伪随机数。 
void    nextBytes(byte[] buf) // 生成随机字节并将其置于字节数组buf中。 
double  nextDouble()          // 返回一个“[0.0, 1.0) 之间的double类型”的随机数。 
float   nextFloat()           // 返回一个“[0.0, 1.0) 之间的float类型”的随机数。 
int     nextInt()             // 返回下一个“int类型”随机数。 
int     nextInt(int n)        // 返回一个“[0, n) 之间的int类型”的随机数。 
long    nextLong()            // 返回下一个“long类型”随机数。 
synchronized double nextGaussian()   // 返回下一个“double类型”的随机数,它是呈高斯(“正常地”)分布的 double 值,其平均值是 0.0,标准偏差是 1.0。 
synchronized void setSeed(long seed) // 使用单个 long 种子设置此随机数生成器的种子。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值