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

目录

1.final、权限、内部类、引用类型的介绍

2.介绍Scanner类、Random类、ArrayList类的基本使用

一.final

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

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

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

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

二.权限和内部类

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

1 .概述

什么是内部类

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

成员内部类

成员内部类 :定义在类中方法外的类

格式:

  class 外部类 {
    class 内部类{
    }
}
class Car { //外部类
    class Engine { //内部类
    }
}

访问特点

  • 内部类可以直接访问外部类的成员,包括私有成员。
  • 外部类要访问内部类的成员,必须要建立内部类的对象。

创建内部类对象格式:

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

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

有以下一些引用类型:

数组(派生于System.Array)

用户用定义的以下类型:

类:class(派生于System.Object);

接口:interface(接口不是一个“东西”,所以不存在派生于何处的问题。Anders在《C# Programming Language》中说,接口只是表示一种约定[contract]);

委托:delegate(派生于System.Delegate)。

object(System.Object的别名);

字符串:string(System.String的别名)。

引用类型与值类型相同的是,结构体也可以实现接口;

引用类型可以派生出新的类型,而值类型不能;

引用类型可以包含null值,值类型不能(可空类型功能允许将 null 赋给值类型);

引用类型变量的赋值只复制对对象的引用,而不复制对象本身。而将一个值类型变量赋给另一个值类型变量时,将复制包含的值。

四.Scanner 类

一、创建Scanner对象,使用Scanner对象
一、next():
1、一定要读取到有效字符后才可以结束输入。
2、对输入有效字符之前遇到的空白,next()方法会自动将其去掉。
3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
4、next()不能得到带有空格的字符串。

二、nextLine():
◆1、以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符。2、可以获得空白。
2.Scanner类是Java中用来对文本进行扫描处理的类。

Scanner类虽然有很多的构造器,但总体上来说,大致可以分为如下几种。

*处理字符串
    处理字符串的构造器只有一个,其声明如下所示:

    public Scanner(String source);

基本语法:

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(); //执行完结束程序,避免占用资源
        }
    }

五.Random类

一、Random类的认识

Random是随机的意思 。

Random类是java.until下的一个根据随机算法的起源数字进行一些变化,从而得到随机数字的方法。

随机算法的起源数字被成为种子数(seed)。

虽然Random类产生的数字是随机的,但在相同种子数(seed)下的相同次数产生的随机数是相同的(伪随机)。

二、Random对象的生成

Random中共有两种构造方法

1、

public Random()

此构造方法是以系统自身的时间为种子数来构造Random对象。

2、

public Random(long seed)

此构造方法可以自己来选定具体的种子来构造Random对象。

三、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("num"+num);
        System.out.println("num2"+num2);
    }
}

四.常用方法

 六.ArrayList类
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.数组是获取最大的元素的长度(固定不变)集合获取的就是当前存储元素的大小(在运行中可变的)
5.集合和数组区别:数组使用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;
            }
        }


    }
}

猜你喜欢

转载自blog.csdn.net/WJY898989/article/details/127998119
今日推荐