文档章节

Java基础知识_day04_(Random类,一维数组,二维数组)

S
 Sunmos
发布于 2017/05/13 00:19
字数 1364
阅读 3
收藏 0
点赞 0
评论 0

内容摘要:

  • Random随机数类
  • 一维数组
  • 二维数组

1. Random随机数类

作用:

用于产生随机数.

使用步骤:

导包:
    import java.util.Random;
创建对象:
    Random r = new Random();
获取随机数:  
    int num = r.nextInt(10);
    获取的数据范围:[0,10),包含0,不包含10.
注意:
    当nextInt()无参数时,产生的随机数结果是浮点型数据,范围是[0,1).

案例:

package com.heima.random;
import java.util.Random;
import java.util.Scanner;
public class RandomTest {
    public static void main(String[] args) {
        Random random = new Random();
        int num = random.nextInt(100) + 1;
        System.out.println("随机数已生成!");
        int guessNum = 0;
        Scanner scanner = new Scanner(System.in);
        while (true) {
            System.out.println("请输入你猜的数字(1-100):");
            guessNum = scanner.nextInt();
            if (guessNum > num) {
                System.out.println("你猜的" + guessNum + "大了!");
            }else if (guessNum < num) {
                System.out.println("你猜的" + guessNum + "小了!");
            }else {
                System.out.println("恭喜你,猜中了!");
                break;
            }
        }
    }
}

2. 一维数组

数组:

数组是存储同一种数据类型的多个元素的容器.
数组存储同数据类型必须一致.(可以存储基本数据类型和引用数据类型).

定义格式:推荐使用第一种

数据类型[] 数组名; -> int[] arr;定义了一个int类型的数组,数组名是arr;
数据类型 数组名[]; -> int arr[];定义了一个int类型的变量,变量名是数组arr[];

数组的初始化:为数组开辟内存空间,并为数组中的每个元素赋初始值.

Java中数组必须先进性初始化后,才能使用.
动态初始化:只给出数组的长度,由系统给出初始化值
    数据类型[] 数组名 = new 数据类型[数组长度]; ->new是申请一块连续的内存空间.
静态初始化:给出数组的初始化值,由系统给出数组的长度.
    格式:数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3,…,元素n};
    简化格式: 数据类型[] 数组名 = {元素1,元素2,…,元素n};

数组元素的访问:

数组名代表是的整个数组的地址.
数组中的每一个元素均有一个唯一的编号(索引),最小编号是0,最大编号是数组长度-1.
访问格式:数组名[索引];

Java中内存分配:

栈:存储的局部变量(局部变量是存储在方法中的变量)
堆:存储的是new出来的东西(就是对象)
    每一个对象都有一个地址值;
    每一个对象的数据都有默认值.
方法区:面向对象使用
本地方法区:和系统相关
寄存器:CPU使用

一维数组常见问题:

ArrayIndexOutOfBoundsException:数组索引越界异常(访问不存在的索引);
NullPointerException: 空指针异常(数组已经不指向堆内存中的数组,再访问就会出此错误);
空常量,null只能赋值给引用类型(类,接口,数组).

一维数组案例:

package com.heima.array;
/* * 一维数组的遍历 */
public class ArrayDemo3 {
    public static void main(String[] args) {
        int[] arr = {1,2,3};
        // 将数组的元素顺序输出
        System.out.println(arr[0]);
        System.out.println(arr[1]);
        System.out.println(arr[2]);
        //使用for循环输出
        for (int i = 0; i < 3; i++) {
            System.out.println(arr[i]);
        }
        // 使用数组长度属性:length输出数组数据
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }
}

package com.heima.array;
/* * 求数组中的最大值 */
public class ArrayDemo4 {
    public static void main(String[] args) {
        int[] arr = {1,2,3};
        // 假设最大值为0
        int max = 0;
        // 让max与数组中的每一个值进行比较,使用max记录最大值
        for (int i = 0; i < arr.length; i++) {
            if (max < arr[i]) {
                max = arr[i];
            }
        }
    }
}

package com.heima.array;
/* * 数组的使用的常见问题 */
public class ArrayDemo2 {
    public static void main(String[] args) {
        int[] arr = {1,2};
        System.out.println(arr);
        System.out.println(arr[0]);
        System.out.println(arr[2]); // 数据索引越界异常ArrayIndexOutOfBoundsException
        arr = null; // 将arr指向的数组置为空
        System.out.println(arr[1]); //空指针异常NullPointerException
    }
}

3. 二维数组

本质:

本质是其元素为一维数组的数组(将一维数组作为一维数组的元素值).

定义格式:

数据类型[][] 数组名;(推荐)
数据类型 数组名[][];
数据类型[] 数组名[];

初始化:

静态初始化:
    数据类型[][] 数组名 = new 数据类型[][]{{元素…}, …{元素…}, {元素…}};
    简化格式: 数据类型[][] 数组名 = {{元素…},… {元素…}, {元素…}};
动态初始化:
    数据类型[][] 数组名 = new 数据类型[m][n];
    m表示二维数组中一维数组的个数;
    n表示一维数组中元素的个数.

获取二维数组元素:

二维数组名配合索引可以获取到每一个一维数组;
每一个一维数组配合索引可以获取到数组中的元素.
    如:二维数组名为arr
    arr[索引]代表二维数组中的一维数组;
    a[索引][索引]代表一维数组中的元素值.

二维数组元素遍历: int[][] arr

arr.length代表是的一维数组的个数(就是二维数组的行数);
arr[m].length代表的是第m-1个一维数组中元素的个数.

二维数组案例:

package com.heima.array;
/* * 二维数组:初始化,遍历 */
public class ArrayArrayDemo {
  public static void main(String[] args) {
      int[][] arr = {{1,2},{3,4},{5,6}};
      System.out.println(arr);        // 输出二维数组的地址值[[I@1774b9b
      System.out.println(arr.length); // 输出二维数组的长度,就是一维数组的个数
      System.out.println(arr[0]);     // 输出第一个一维数组的地址值
      System.out.println(arr[0][0]);  // 输出第一个一维数组的第一个元素值
      // 数组的遍历,输出数组的值
      for (int i = 0; i < arr.length; i++) {
          for (int j = 0; j < arr[i].length; j++) {
              System.out.println(arr[i][j]);
          }
      }
  }
}

本文转载自:http://blog.csdn.net/l631106040120/article/details/63720161

共有 人打赏支持
S
粉丝 0
博文 34
码字总数 0
作品 0
成都
JNI开发流程与引用数据类型的处理

今天我们来看下Java JNI,先看下维基百科给的定义, JNI, Java Native Interface, Java本地接口,是一种编程框架,使得Java虚拟机中的Java程序可以调用本地应用或库,也可以被其他程序调用。...

juexingzhe ⋅ 05/04 ⋅ 0

【JavaSE(二)】Java语法基础(下)

原文地址:https://www.cloudcrossing.xyz/post/34/ 1 方法 1.1 方法的概述 方法,简单的说就是完成特定功能的代码块(注意:在很多语言里面有函数的定义,而在Java中,函数被称为方法)。 ...

苍云横渡 ⋅ 05/09 ⋅ 0

随机模拟 java 数据插件 - Jmockdata

Jmockdata ![License](http://www.apache.o

寻觅一只耳朵 ⋅ 2017/01/05 ⋅ 20

全面的java编程新手入门学习笔记总结

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互...

Java小辰 ⋅ 05/10 ⋅ 0

golang自定义路由控制实现(一)

    由于本人之前一直是Java Coder,在Java web开发中其实大家都很依赖框架,所以当在学习Golang的时候,自己便想着在Go开发中脱离框架,自己动手造框架来练习。通过学习借鉴Java的思想还...

1Day ⋅ 05/11 ⋅ 0

Java序列化技术即将被废除!!!

我们的对象并不只是存在内存中,还需要传输网络,或者保存起来下次再加载出来用,所以需要Java序列化技术。Java序列化技术正是将对象转变成一串由二进制字节组成的数组,可以通过将二进制数据...

Java技术栈 ⋅ 05/30 ⋅ 0

Java程序员必读书单,家族又添新成员

点击关注异步图书,置顶公众号 每天与你分享IT好书 技术干货 职场知识 参与文末话题讨论,每日赠送异步图书。 ——异步小编 有些革命出其不意地吸引了全世界的眼球。Twitter、Linux操作系统和...

异步社区 ⋅ 05/09 ⋅ 0

Java开发每日复盘2018_0514

今天主要跟大家分享3个部分: 一、「Java的核心机制」 二、「Java命名规范」 三、「Java数据类型相关」 下面我们来一个一个的说: 「Java核心机制」 Java是一种强制面向对象的解释型语言(O...

ZeroOSTalk ⋅ 05/14 ⋅ 0

Android JNI学习(四)——JNI的常用方法的中文API

本系列文章如下: Android JNI(一)——NDK与JNI基础 Android JNI学习(二)——实战JNI之“hello world” Android JNI学习(三)——Java与Native相互调用 Android JNI学习(四)——JNI的常用方法...

隔壁老李头 ⋅ 05/09 ⋅ 0

Scala笔记整理(二):Scala数据结构—数组、map与tuple

[TOC] 数组 定长数组 如果你需要一个长度不变的数组,可以用Scala中的Array。例如: 在JVM中,Scala的Array以Java数组方式实现。示例中的数组在JVM中的类型为java.lang.String[]。Int、Doubl...

xpleaf ⋅ 04/18 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

聊聊spring cloud gateway的LoadBalancerClientFilter

序 本文主要研究一下spring cloud gateway的LoadBalancerClientFilter GatewayLoadBalancerClientAutoConfiguration spring-cloud-gateway-core-2.0.0.RELEASE-sources.jar!/org/springfram......

go4it ⋅ 34分钟前 ⋅ 0

详解:Nginx反代实现Kibana登录认证功能

Kibana 5.5 版后,已不支持认证功能,也就是说,直接打开页面就能管理,想想都不安全,不过官方提供了 X-Pack 认证,但有时间限制。毕竟X-Pack是商业版。 下面我将操作如何使用Nginx反向代理...

问题终结者 ⋅ 40分钟前 ⋅ 0

002、nginx配置虚拟主机

一、nginx配置虚拟主机可分为三种方式,分别为: 1、基于域名的虚拟主机,通过域名来区分虚拟主机——应用:外部网站 2、基于端口的虚拟主机,通过端口来区分虚拟主机——应用:公司内部网站...

北岩 ⋅ 43分钟前 ⋅ 0

shell脚本之死循环写法

最近在学习写shell脚本,在练习if while等流程控制时,突然它们的死循环写法是怎么样的?经过百度与亲测记录如下: for死循环 #! /bin/bashfor ((;;));do date sleep 1d...

hensemlee ⋅ 46分钟前 ⋅ 0

苹果的ARKit2.0有多可怕,看了就知道

序言 ARKit主要由三部分组成: 跟踪(Tracking) 跟踪是ARKit的核心组件之一,其提供了设备在物理世界中的位置与方向信息,并对物体进行跟踪,如人脸。 2.场景理解(Scene Understanding) 场...

_小迷糊 ⋅ 47分钟前 ⋅ 0

5.1 vim介绍 5.2 vim移动光标 5.3 ,5.4vim一般模式下移动光标,复制粘贴

vim命令 vim是vi的一个升级版;vim可以显示文字的颜色 安装vim这一个包vim-enhanced 如果不知道安装包,可以使用 命令下面命令来查看vim命令是那个包安装的。 [root@linux-128 ~]# yum prov...

Linux_老吴 ⋅ 50分钟前 ⋅ 0

vim一般模式

vim 是什么 vim是什么 ? 在之前接触Linux,编辑网卡配置文件的时候我们用过了vi ,vim简单说就是vi的升级版,它跟vi一样是Linux系统中的一个文本编辑工具。 如果系统中没有vim ,需要安装一...

李超小牛子 ⋅ 58分钟前 ⋅ 0

docker实战

构建企业级Docker虚拟化平台实战 重点剖析虚拟化和云计算概念; 分析Docker虚拟化的概念和原理; 从0开始实战Docker虚拟化平台; 基于Docker构建Nginx WEB服务器和CentOS虚拟机; 基于开源监...

寰宇01 ⋅ 今天 ⋅ 0

vim介绍、vim颜色显示和移动光标、vim一般模式下移动光标、一般模式下复制粘贴剪切

VIM Vim 是 UNIX 文本编辑器 Vi 的加强版本,加入了更多特性来帮助编辑源代码。Vim 的部分增强功能包括文件比较(vimdiff),语法高亮,全面的帮助系统,本地脚本(Vimscript),和便于选择的...

蛋黄Yolks ⋅ 今天 ⋅ 0

springboot+mockito测试controller层遇到的问题

使用MockitoJUnitRunner测试的一个例子,原来报错无法找到bean, 类似的异常如下:createBeanError..... 原因:是因为@Runwith使用了SpringRunner,应该修改为MockitoJUnitRunner 代码如下: ...

writeademo ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部