Java学习笔记 第八天

本文详细介绍了Java API的使用,包括API文档的查阅步骤。接着讲解了Scanner类,阐述其作为键盘输入数据的功能,以及创建和使用Scanner对象的步骤。还通过实例展示了Scanner类的应用。接着,文章简要提及了匿名对象的概念和应用场景。然后,讨论了Random类,用于生成伪随机数,包括其构造方法和成员方法,并提供了两个练习。最后,文章深入讲解ArrayList类,包括其引入原因、使用步骤、常见方法和存储基本数据类型的处理,并给出了两个ArrayList相关练习。
摘要由CSDN通过智能技术生成

第一章 API

1.1 概述:

 API(Application Programming Interface),应用程序编程接口。简单理解,API就是一堆类、一堆方法的集合。JavaAPI是一本程序员的字典,是JDK中提供给我们使用的类的说明文档。这些类将底层的代码实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可。所以我们可以通过查询API的方式,来学习Java提供的类,并得知如何使用它们。

1.2 API文档的使用步骤:**

1.打开帮助文档。
2.点击显示,找到索引,看到输入框。
3.你要找谁?在输入框里输入,然后回车。
4.看包。java.lang下的类不需要导包,其他需要。
5.看类的解释和说明。
6.学习构造方法。

第二章 Scanner类

2.1 概述

Scanner类的功能,可以实现键盘输入数据,到程序当中。简单来说,可以理解为一个可以解析基本类型和字符串的简单文本扫描器。例如,以下代码使用户能够从System.in中读取一个数:

Scanner sc = new Scanner(System.in);
int n = sc.nextInt();

其中,System.in指的是通过键盘录入数据,而且无论输入了什么,本质上输入的是字符串,只是后面调用的nextInt方法将其转化为了int类型

2.2 引用类型使用步骤

  • 1.导包
    import 包路径.类名称;
    注意:
    如果使用的目标类,和当前类位于同一个包下,则可以省略导包语句不写。
    只有java.lang包下的内容不需要导包,其他的包都需要import 包路径.类名称;

  • 2.创建
    类名称 对象名 = new 类名称();

  • 3.使用
    对象名.成员方法名();

举例如下:

public class Demo01Scanner {
    public static void main(String[] args) {
        //  2.创建
        //  备注:System.in代表从键盘进行输入
        Scanner sc = new Scanner(System.in);

        //  获取键盘输入的int数字
        int num = sc.nextInt();
        System.out.println("输入的int数字是:" + num);

        //  获取键盘输入的字符串
        String str = sc.next();
        System.out.println("输入的字符串是:" + str);
    }
}

2.3 Scanner类练习1—求和

题目: 键盘录入两个数据并求和,代码如下:

public class Demo02ScannerSum {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        System.out.println("请输入第一个int数字:");
        int num1 = sc.nextInt();
        System.out.println("请输入第二个int数字:");
        int num2 = sc.nextInt();
        System.out.println("两个int数字的加和是:" + (num1 + num2));
    }
}

2.4 Scanner类练习2—求最大值

题目: 键盘输入三个int数字,然后求出其中的最大值

public class Demo03ScannerMax {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        System.out.println("请输入第一个int数字:");
        int num1 = sc.nextInt();
        System.out.println("请输入第二个int数字:");
        int num2 = sc.nextInt();
        System.out.println("请输入第三个int数字:");
        int num3 = sc.nextInt();

        //  法一:三元表达式
        int temp = num1 > num2 ? num1 : num2;
        int max = num3 > temp ? num3 : temp;
        System.out.println("三个数字当中最大值是:" + max);
        
        //  法二:定义数组 + for循环
//        int[] array = new int[]{num1,num2,num3};
//        int max = array[0];
//        for (int i = 0; i < array.length; i++) {
//            if (max < array[i]){
//                max = array[i];
//            }
//        }
//        System.out.println("三个数字当中最大值是:" + max);

    }
}

第二章 匿名对象(了解)

  • 1.概述
    创建对象时,只有创建对象的语句,却没有把对象地址值赋值给某个变量。虽然是创建对象的简化写法,但是应用场景非常有限。
    简单理解,匿名对象就是没有变量名的对象

  • 2.格式
    new 类名(参数列表);
    举例:

new Scanner(System.in);
  • 3.应用场景(简单来说就是:如果确定有一个对象只使用唯一的一次,就可以用匿名对象)

1.创建匿名对象直接调用方法,没有变量名。
如:

int num = new Scanner(System.in).nextInt();	//	用匿名对象,直接获得一个输入的int数字

2.一旦调用两次方法,就是创建了两个对象,造成浪费,请看如下代码。
如:

newScanner(System.in);
nextInt();newScanner(System.in).nextInt();

注意:
正是因为没法获取匿名对象的对象地址值,所以每个匿名对象只能用一次

3.匿名对象可以作为方法的参数和返回值
作为参数:

class Test1{
	public static void main(String[] args){
		//	普通方法
		Scanner sc = new Scanner(System.in);
		input(sc);

		//	使用匿名对象
		input(new Scanner(System.in));
	}
	public static void input(Scanner sc){
		System.out.println(sc);
	}
}

作为返回值:

class Test2{
	public static void main(String[] args){
		Scanner sc = getScanner();
	}
	public static Scanner getScanner(){
		//	普通方法
		//	Scanner sc = new Scanner(System.in);
		//	return sc;

		//	使用匿名对象
		return new Scanner(System.in);
	}
}

第三章 Random类

3.1 Random类概述

简单来说,Random类就是用于产生伪随机数的。例如,以下代码就可使用户得到一个伪随机int整数,范围是负无穷到正无穷

Random r = new Random();
int num = r.nextInt();

3.2 Random使用步骤

查询API文档三步走:

  • 查看包:
    位于java.util下,该类需要import java.util.Random导入才可使用
  • 查看Random类中的构造方法
    public Random():创建一个随机数生成器
  • 查看Random类中的成员方法:
    public int nextInt(int n):可以看出,该成员方法有一个int类型返回值,这就是产生的随机数,输入的参数n代表随机数的生成范围为0到n的左闭右开区间,即[0,n)

3.3 Random类练习1

题目:
根据int变量n的值,来获取100个随机数字,范围是[1,n]

public class Demo03Random {
    public static void main(String[] args) {
        //  普通写法
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入范围最大值");
        int n = sc.nextInt();

        Random r = new Random();
        for (int i = 0; i < 100; i++) {
            System.out.println("生成的随机数字是:" + (r.nextInt(n) + 1));
        }



        //  用Scanner类输入和匿名对象编写代码,主要用于复习
//        System.out.println("请输入范围最大值:");
//        int n = new Scanner(System.in).nextInt();
//        for (int i = 0; i < 100; i++) {
//            int num = new Random().nextInt(n) + 1;
//            System.out.println("生成的随机数为:" + num);
//        }
    }
}

3.3 Random类练习2

题目:
用代码模拟猜数字的小游戏

public class Demo04RandomGame {
    public static void main(String[] args) {
        //  随机生成数字
        int randomNum = new Random().nextInt(100);
        Scanner sc = new Scanner(System.in);
        while(true){
            System.out.println("请随机输入一个数字进行猜测:");
            int gussNum = sc.nextInt();
            if (gussNum < randomNum){
                System.out.println("您猜的数字太小了,请重新猜测");
            }else if(gussNum > randomNum){
                System.out.println("您猜的数字太大了,请重新猜测");
            }else{
                System.out.println("恭喜您猜对了,答案是:" + randomNum);
                break;
            }
        }
    }
}

第四章 ArrayList类

4.1 引入----对象数组

使用学生数组,存储三个人对象,代码如下:

public class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public Person() {
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

public class Demo01Array {
    public static void main(String[] args) {
        //  首先创建一个长度为3的数组,里面用来存放Person类型的对象
        Person[] array = new Person[3];

        Person one = new Person("泰隆",18);
        Person two = new Person("艾瑞莉娅",21);
        Person three = new Person("德莱文",19);

        //  将one当中的地址值赋值到数组的0号元素位置
        array[0] = one;
        array[1] = two;
        array[2] = three;

        System.out.println(array[0]);
        System.out.println(array[1]);
        System.out.println(array[2]);

        System.out.println("第一个人的名字是:" + array[0].getName() + ",年龄是:" + array[1].getAge());
    }
}

上述代码缺点在于,数组在程序运行期间,长度是不可变的,法适应数据变化的需求。为了解决这个问题,Java提供了另一个容器java.util.ArrayList集合类,让我们可以更便捷的存储和操作对象数据。

4.2 ArrayList类简介

java.uitl.ArrayList是大小可变的数组的实现,存储在内的数据称为元素。此类提供了一些方法来操作内部存储的数据。关键在于ArrayList中可不断添加元素,其大小也自动增长

4.3 ArrayList使用步骤

查看类

  • java.util.ArrayList:该类需要import导入后使用
    <E>代表一种指定的数据类型,叫做泛型。在出现<E>的地方用引用数据类型将其替换即可,表示我们存储哪种引用类型的元素。由此可见,一个ArrayList集合和一个数组Array一样,都只能存储同一类型的数据

注意: 泛型只能是引用类型,不能是基本类型

查看构造方法

  • public ArrayList():此为ArrayList类的无参构造方法,功能是构造一个内容为空的集合

基本格式如下

ArrayList<String> list = new ArrayList<>();

注意:
在JDK7后,右侧泛型的尖括号之内可以留空,但是<>仍然要写。

查看成员方法*

  • public boolean add(E e):将指定的元素添加到此集合的尾部。
    参数E e,在构造ArrayList对象时,E指定了什么数据类型,那么add(E e)方法中,只能添加什么数据类型的对象。在使用add方法时候会返回一个boolean型结果,代表是否添加成功。

例如:

public class Demo02ArrayList {
    public static void main(String[] args) {
        //  创建了一个ArrayList集合,集合的名称是list,里面装的全都是String字符串类型的数据
        //  备注:从jdk1.7开始,右侧的尖括号内部可以不写内容,但是<>本身还是要写的
        ArrayList<String> list = new ArrayList<>();
        System.out.println(list);   //  []

        //  向集合当中添加一些数据,需要用到add方法。
        list.add("泰隆");
        System.out.println(list);   //  [泰隆]

        list.add("艾瑞莉娅");
        list.add("德莱文");
        list.add("德莱厄斯");
        System.out.println(list);   //  [泰隆,艾瑞莉娅,德莱文,德莱厄斯]
    }
}

注意
1.对于ArrayList集合来说,add添加动作一定是成功的,所以返回值可用可不用
但是对于其他集合(今后学习)来说,add添加动作不一定成功。
2.对于ArrayList集合来说,直接打印得到的并不是地址值(直接打印数组得到的是数组对象的地址值),而是内容
如果内容是空,得到的是中括号:[]

4.4 ArrayLits常用方法和遍历

  • 常用方法
    ArrayList当中常用方法有:

public boolean add(E e): 向集合当中添加元素,参数的类型和泛型一致。
备注:对于ArrayList集合来说,add添加动作一定是成功的,所以返回值可用可不用
但是对于其他集合(今后学习)来说,add添加动作不一定成功。

public E get(int index): 从集合当中获取元素,参数是索引编号,返回值就是对应位置的元素。

public E remove(int index): 从集合当中删除元素,参数是索引编号,返回值就是被删除掉的元素。

public int size(): 获取集合的尺寸长度,返回值是集合当中包含的元素个数

public class Demo03ArrayListMethod {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        System.out.println(list);   //  []

        //  向集合当中添加元素:add
        boolean success = list.add("泰隆");
        System.out.println(list);
        System.out.println("添加的动作是否成功:" + success); //  true

        list.add("艾瑞莉娅");
        list.add("德莱文");
        list.add("德莱厄斯");
        list.add("卡特琳娜");
        System.out.println(list);

        //  从集合中获取元素:get方法;索引值从0开始
        String name = list.get(2);
        System.out.println("第2号索引位置:" + name);

        //  从集合当中删除元素:remove方法;索引值从0开始
        String whoRemoved = list.remove(3);
        System.out.println("被删除的人是:" + whoRemoved);
        System.out.println(list);

        //  获取集合的长度尺寸
        int size = list.size();
        System.out.println("集合的长度是:" + size);
    }
}
  • 遍历
import java.util.ArrayList;

public class Demo04ArrayListEach {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("泰隆");
        list.add("艾瑞莉娅");
        list.add("德莱文");
        list.add("德莱厄斯");
        list.add("卡特琳娜");

        //  遍历集合
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
    }
}

4.5 ArrayList如何存储基本数据类型

前面已经指出<E>代表泛型,而泛型只能是引用数据类型,所以无法入ArrayList list = new ArrayList<>();一样创建一个int类型数据的集合。

解决办法: 使用基本类型对应的“包装类”。

基本类型基本类型包装类
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean

注意:
从JDK 1.5+开始,支持自动装箱、自动拆箱

自动装箱:基本类型 —> 包装类
自动拆箱:包装类 —> 基本类型

public class Demo05ArrayListBasic {
    public static void main(String[] args) {
        ArrayList<String> listA= new ArrayList<>();
        //  错误写法!泛型只能是引用类型,不能是基本类型
//        ArrayList<int> listB = new ArrayList<>();

        ArrayList<Integer> listC = new ArrayList<>();
        listC.add(100);
        listC.add(200);
        System.out.println(listC);  //  [100,200]

        int num = listC.get(1);
        System.out.println("第一号元素是:" + num);

    }
}

4.6 ArrayList练习1—打印集合方法

题目:
定义以指定格式打印集合的方法(ArrayList类型作为参数),使用{}扩起集合,使用@分隔每个元素。格式参照{元素@元素@元素}。

public static void main(String[] args){
	ArrayList<Integer> list = new ArrayList<>();
	for(int i = 0;i< 4 ; i++){
		list.add(i);
	}
	printArrayList(list);
}
public static void printArrayLlist(ArrayList<Integer> list){
	System.out.println("[");
	for(int i == 0;i < list.size();i++){
		if(i != list.size() - 1){
			System.out.println(list.get(i) + "@");
		}else{
			System.out.println(list.get(i) + "]");
		}
	}
}

4.6 ArrayList练习2—获取集合方法

题目:
用一个大集合存入20个随机数字,然后筛选其中的偶数元素,放到小集合当中。
要求使用自定义的方法来实现筛选。

public class Demo04ArrayListReturn {
    public static void main(String[] args) {
        //  创建随机对象
        Random ra = new Random();

        //  创建大集合
        ArrayList<Integer> listBig = new ArrayList<>();
        for (int i = 0; i < 20; i++) {
            listBig.add(ra.nextInt(100) + 1);   //  1~100的随机数
        }
        System.out.println("大集合为:" + listBig);

        ArrayList<Integer> listSmall = getSmallList(listBig);
        System.out.println("小集合为:" + listSmall + "  总计:" + listSmall.size() + "个");
    }

    public static ArrayList<Integer> getSmallList(ArrayList<Integer> listBig){
        //   创建小集合
        ArrayList<Integer> listSmall = new ArrayList<>();
        for (int i = 0; i < listBig.size(); i++) {
            if (listBig.get(i) % 2 == 0){
                listSmall.add(listBig.get(i));
            }
        }

        //  返回小集合
        return listSmall;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值