您现在的位置是:首页 > 正文

权限、内部类、Scanner、Random、ArrayList随即名单和final

2024-02-01 04:51:08阅读 3

目录

一、权限和内部类

1. 访问权限

2.内部类与外部类

3.内部类的特点

4.内部类与外部类之间的访问

二、Scanner类

1.解析:Scanner类是一个文本扫描器类,对字符串文本进行扫描操作。

 2.Scanner类next()、nextLine() 区别

3.创建对象

4.如何使用Scanner类?

三、Random类

1.Random认识

2.两种构造方法

3.常用方法

4.Random类的简单使用

四、ArrayList类

1.格式:

2.构造方法:

3.常用方法:

4.注意事项:

五、随机不重复名单代码

六、final类


一、权限和内部类

1. 访问权限

private:类内部可见。
default:类内部、包内部可见;无论是方法,还是属性,不写修饰符,就是这个权限。
protected:类内部、包内部、子类可见。
public:类内部、包内部、子类内部、外部包可见;全可见。

2.内部类与外部类

1)将一个类A定义在另一个类B里面,里面的那个类A就称为内部类,B则称为外部类。

2)根据内部类在外部类中定义的位置不同,分为 成员内部类,和局部内部类

3)成员内部类: 定义在外部类的成员位置(定义在类中方法外的类)。

4)局部内部类: 定义在外部类的局部位置,也就是外部类中的方法内部。

格式:

  class B {           //B是外部类
   
    class A {       //A是成员内部类
 
    }
 
    public void show() {
        
        class C {    //C是局部内部类
 
        }
    }
 
}

3.内部类的特点

  • 内部类可以直接访问外部类的成员(成员变量和成员方法),包括私有成员。
  • 外部类要访问内部类的成员,必须要建立内部类的对象。
  • 如果外部类与内部类的成员有重名的话 ,可以这样拿到外部类的成员:外部类名.this.变量名

4.内部类与外部类之间的访问

在测试类中调用成员内部类中的方法:

创建内部类对象格式

外部类名.内部类名 对象名 = new 外部类名().new 内部类名();

外部类访问成员内部类中的成员:

需要先创建成员内部类的对象:     

内部类名 对象名 =new 内部类名();

注:内部类仍然是一个独立的类,在编译之后会内部类会被编译成独立的 .class文件,但是前面冠以外部类的类名和$符号 。

二、Scanner类

1.解析:Scanner类是一个文本扫描器类,对字符串文本进行扫描操作。

 2.Scanner类next()、nextLine() 区别

1)next() 获取输入的字符串;不仅接受键盘输入的内容,还进行分割;默认的分隔符为空格,以回车Enter为结束符,回车enter后的内容则放入缓冲区。

2)nextLine() 获取输入的字符串;可以加空格,以回车Enter为结束符;可以获得空白。

3.创建对象

例:

Scanner scanner = new Scanner(System.in);
package com;
 
import java.util.Scanner;
 
public class Scanner1 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);  //调用Scanner类方法
        System.out.println("使用next方法接收: ");
        //如果有输入就进行下面程序
        if (scanner.hasNext()) {   //判断是否有输入
            String str = scanner.next(); //将输入的值赋值给str
            System.out.println("输出的内容为: " + str);
        }scanner.close(); //执行完结束程序,避免占用资源
        }
    }
 

4.如何使用Scanner类?

1)先导入java.util.Scanner包;

2)创建Scanner类的对象(基本语法)

3)创建一个变量用于接收输入的数据,通过调用Scanner类的对象scanner来调用Scanner类中的next方法(控制台将等待用户输入数据)

4)关闭Scanner类

三、Random类

1.Random认识

用于生成随机数

2.两种构造方法

1)无参构造方法,用于创建一个新的随机数生成器

Random();

 2)有参构造方法,用于使用单个 long 种子创建一个新随机数生成器

Random(long seed);

如果用相同的种子创建两个Random 实例,则对每个实例进行相同的方法调用序列,它们将生成并返回相同的数字序列

3.常用方法

1)protected int next(int bits):生成下一个伪随机数。

2)boolean nextBoolean():返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的boolean值。

3)void nextBytes(byte[] bytes):生成随机字节并将其置于用户提供的 byte 数组中。

4)double nextDouble():返回下一个伪随机数,它是取自此随机数生成器序列的、在0.0和1.0之间均匀分布的 double值。

5)float nextFloat():返回下一个伪随机数,它是取自此随机数生成器序列的、在0.0和1.0之间均匀分布float值。

6)double nextGaussian():返回下一个伪随机数,它是取自此随机数生成器序列的、呈高斯(“正态”)分布的double值,其平均值是0.0标准差是1.0。

7)int nextInt():返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的 int 值。

8)int nextInt(int n):返回一个伪随机数,它是取自此随机数生成器序列的、在(包括和指定值(不包括)之间均匀分布的int值。

9)long nextLong():返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的 long 值。

4.Random类的简单使用

package cn.itcast.demo1;
 
import java.util.Random;//使用时需要先导包
import java.util.Scanner;
 
 
public class RAndom {
    public static void main(String[] args) {
        Random r = new Random();//以系统自身时间为种子数
        int i = r.nextInt();
        System.out.println("i"+i);
        Scanner sc  =new Scanner(System.in);
        int j = sc.nextInt();
        Random r2 = new Random(j);//自定义种子数
        Random r3 = new Random(j);//为了验证上方的注意事项:Random类是伪随机,相同种子数相同次数产生的随机数相同
        int num  = r2.nextInt();
        int num2 = r3.nextInt();
        System.out.println("n"+n);
        System.out.println("num"+num);
    }
}

四、ArrayList类

ArrayList是大小可变的数组的实现,存储在内的数据称为元素。

1.格式

ArrayList list = new ArrayList();   表示一种指定的数据类型,叫做泛型。

2.构造方法:

public ArrayList() :构造一个内容为空的集合

3.常用方法:

add(参数):添加;

remove(int index) :移除此集合中指定位置上的元素。返回被删除的元素。

get(int index):返回此集合中指定位置上的元素。返回获取的元素。

set(int 索引,修改元素):将指定元素修改。

size() :返回此集合中的元素数。遍历集合时,可以控制索引范围,防止越界

indexof():元素检索在集合中第几位,如果没有返回-1。

contains():在指定的集合中存在指定的某个元素

toArray():将集合转换数组。

clear():清空

4.注意事项:

1)ArrayList集合它的元素可以删除,数组不行。
2)ArrayList结合与数组一致它的索引都是从0开始的。
3)数组是获取最大的元素的长度(固定不变)集合获取的就是当前存储元素的大小(在运行中可变的)
4)集合和数组区别:数组使用length计算器的长度;ArrayList集合使用size计算元素的大小

import java.util.ArrayList; // 引入 ArrayList 类
 
ArrayList<E> objectName =new ArrayList<>();  // 初始化

五、随机不重复名单代码

package Test;
 
import java.util.*;
 
public class ArrayListTest {
    public static void main(String[] args) {
        //可以使用Arrays的asList实现序列化一个集合
        List<String> list= Arrays.asList("哈哈","嘿嘿","啦啦","噢噢","一一","嘻嘻");
        //把list作为参数重新构建一个新的ArrayList集合
        ArrayList<String> names=new ArrayList<>(list);
 
        //使用Scanner、Random、ArrayList 完成一个不重复点名操作
        Random random = new Random();
        Scanner scanner = new Scanner(System.in);
        while (true){
            if (names.size()==0){
                System.out.println("已经完成所有的抽查");
                break;
            }
 
            System.out.println("确认点名请输入a");
            String input=scanner.next();
            if (input.equals("a")||input.equals("a")){
                //
                int index=random.nextInt(names.size());
                System.out.println("本次抽到:"+names.get(index));
                names.remove(index);
            }else {
                System.out.println("本次抽查已结束!");
                break;
            }
        }
 
 
    }
}

六、final类

用于修饰类、属性和方法;

1.被final修饰的类不可以被继承

2.被final修饰的方法不可以被重写

3.被final修饰的变量不可以被改变,被final修饰不可变的是变量的引用,而不是引用指向的内容,引用指向的内容是可以改变的

网站文章

  • python实现连续子序列最大和问题(动态规划)

    说明:子列表指的是列表中索引(下标)连续的元素构成的列表;列表中的元素是int类型,可能包含正整数、0、负整数;程序输入列表中的元素,输出子列表元素求和的最大值,例如: 输入:1 -2 3 5 -3 ...

    2024-02-01 04:50:38
  • flex布局

    flex布局

    总结一下flex布局

    2024-02-01 04:50:31
  • java 动态创建类_Java运行时动态生成类几种方式

    最近一个项目中利用规则引擎,提供用户拖拽式的灵活定义规则。这就要求根据数据库数据动态生成对象处理特定规则的逻辑。如果手写不仅每次都要修改代码,还要每次测试发版,而且无法灵活根据用户定义的规则动态处理逻...

    2024-02-01 04:50:24
  • antv图例出现分页_Echarts和highCharts图表使用总结(附AntV)

    Echarts:1.给y轴上间隔线设置成虚线yAxis: {type: &#39;value&#39;,boundaryGap: [0, &#39;100%&#39;],axisLine: {show...

    2024-02-01 04:49:54
  • 「NodeJs」nodejs 定时任务

    nodejs 定时访问网页。

    2024-02-01 04:49:47
  • std::forward()

    std::forward()完美转发。

    2024-02-01 04:49:38
  • freekan电影系统后台无法登录解决方法

    freekan电影系统后台无法登录解决方法

    这个freekan电影系统真的比较挑主机,不只是试了许多主机无法安装,有时安装上了明明账号密码正确还登录不上,但又找不到更好用的电影系统。幸亏我用的是老薛主机,售后非常给力,联系他们后立马就解决了,他...

    2024-02-01 04:49:32
  • SpringMvc+Mybatis +Oracle

    +Mybatis入门笔记http://www.cnblogs.com/hellokitty1/p/5216025.htmljsp运行原理JSP运行原理及运行过程https://blog.csdn.net/hanxuemin12345/article/details/23831645转载于:https://www.cnblogs.com/maowuyu-xb/p/9126367....

    2024-02-01 04:49:02
  • EasyExcel——自定义注解、实现动态获取下拉框内容

    EasyExcel——自定义注解、实现动态获取下拉框内容

    主要展示了在使用easyexcel导出过程中如何从数据库表获取动态下拉框内容,以及和固定下拉框内容的对比

    2024-02-01 04:48:56
  • Redis集群

    Redis集群

    Redis集群是一个提供在多个Redis节点间共享数据的程序集,可以支持多个Master。

    2024-02-01 04:48:50