Java学习笔记 第八天

  • 第一章 API
    • 1.1 概述:
    • 1.2 API文档的使用步骤:**
  • 第二章 Scanner类
    • 2.1 概述
    • 2.2 引用类型使用步骤
    • 2.3 Scanner类练习1---求和
    • 2.4 Scanner类练习2---求最大值
  • 第二章 匿名对象(了解)
  • 第三章 Random类
    • 3.1 Random类概述
    • 3.2 Random使用步骤
    • 3.3 Random类练习1
    • 3.3 Random类练习2
  • 第四章 ArrayList类
    • 4.1 引入----对象数组
    • 4.2 ArrayList类简介
    • 4.3 ArrayList使用步骤
    • 4.4 ArrayLits常用方法和遍历
    • 4.5 ArrayList如何存储基本数据类型
    • 4.6 ArrayList练习1---打印集合方法
    • 4.6 ArrayList练习2---获取集合方法

第一章 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);   //  []//  向集合当中添加元素:addboolean success = list.add("泰隆");System.out.println(list);System.out.println("添加的动作是否成功:" + success); //  truelist.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类型数据的集合。

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

基本类型 基本类型包装类
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean

注意:
从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;}
}

Java学习笔记 第八天相关推荐

  1. JAVA学习笔记第八天——接口作为方法参数和返回值、多态、内部类

    一.回顾: 权限修饰符: public -> protected -> (default) ->private 重写: 1.方法名和参数列表一致 2.子类中重写的方法, 返回值类型[ ...

  2. java学习笔记11--Annotation

    java学习笔记11--Annotation Annotation:在JDK1.5之后增加的一个新特性,这种特性被称为元数据特性,在JDK1.5之后称为注释,即:使用注释的方式加入一些程序的信息. j ...

  3. java学习笔记13--反射机制与动态代理

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note13.html,转载请注明源地址. Java的反射机制 在Java运行时环境中,对于任意 ...

  4. 准备写java学习笔记

    准备写java学习笔记 java int 转载于:https://blog.51cto.com/cryingcloud/1975267

  5. Java学习笔记--StringTokenizer的使用

    2019独角兽企业重金招聘Python工程师标准>>> Java Tips: 使用Pattern.split替代String.split String.split方法很常用,用于切割 ...

  6. java学习笔记12--异常处理

    java学习笔记系列: java学习笔记11--集合总结 java学习笔记10--泛型总结 java学习笔记9--内部类总结 java学习笔记8--接口总结 java学习笔记7--抽象类与抽象方法 j ...

  7. Java学习笔记(十)--控制台输入输出

    输入输出 一.控制台输入 在程序运行中要获取用户的输入数据来控制程序,我们要使用到 java.util 包中的 Scanner 类.当然 Java 中还可以使用其他的输入方式,但这里主要讲解 Scan ...

  8. java学习笔记16--I/O流和文件

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note16.html,转载请注明源地址. IO(Input  Output)流 IO流用来处理 ...

  9. java学习笔记15--多线程编程基础2

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note15.html,转载请注明源地址. 线程的生命周期 1.线程的生命周期 线程从产生到消亡 ...

最新文章

  1. 2017海克斯康拉斯维加斯美国大会 精彩即将开始
  2. android 自定义view文字不齐,Android 解决TextView排版参差不齐的问题
  3. 【ML】Principle Component Analysis 主成分分析
  4. SAP UI5 global configuration interface
  5. 【转】服务器维护工程师悲惨的一个星期
  6. Octave: 'rgb2gray' undefined error
  7. 前端开发框架整理(一些记录给自己看的)
  8. 黑苹果mac未能安装在你的电脑上_mac电脑上全新视频剪辑软件安装包分享,让你剪辑视频从此无忧!...
  9. 谷歌地图自定义popup框
  10. Linux kmalloc/kfree 源码解读
  11. leetcode77
  12. Python字符串、元组、列表、字典互相转换的方法
  13. vs2005下载,中文版,官方
  14. Hyper-v安装CentOS
  15. 实验4、A/D转换实验
  16. aimesh r6400 开_r6900+r6300v2 aimesh 连接成功!点滴分享
  17. 知识图谱中三元组抽取
  18. 浅谈SEO(搜索引擎优化)
  19. 嫁给年薪百万的程序员,结婚 6 年后的我竟然还是处女
  20. 张宏 :移动机器人全局定位技术与方法是啥?道翰天琼认知智能机器人平台API接口大脑为您揭秘-1。

热门文章

  1. 人工智能在遥感领域的应用,正处在一个磨合期丨对话数智 x 于峻川
  2. 《区块链改变生活》第十八期 大白话聊井通——井通人
  3. 中国社科发布:十大调查研究咨询机构公司
  4. 煽情的儿子541=随笔
  5. 合并多个txt文本文件的内容
  6. PHP企业级应用之常见缓存技术篇二
  7. 路由表,IP世界里的“局部地图”
  8. NumPy二维数组-行向量、列向量
  9. HTML5七夕情人节表白网页制作【空中散落的花瓣3D相册】HTML+CSS+JavaScript
  10. Python实现中文输入的两种方式