Java学习笔记 第八天
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学习笔记 第八天相关推荐
- JAVA学习笔记第八天——接口作为方法参数和返回值、多态、内部类
一.回顾: 权限修饰符: public -> protected -> (default) ->private 重写: 1.方法名和参数列表一致 2.子类中重写的方法, 返回值类型[ ...
- java学习笔记11--Annotation
java学习笔记11--Annotation Annotation:在JDK1.5之后增加的一个新特性,这种特性被称为元数据特性,在JDK1.5之后称为注释,即:使用注释的方式加入一些程序的信息. j ...
- java学习笔记13--反射机制与动态代理
本文地址:http://www.cnblogs.com/archimedes/p/java-study-note13.html,转载请注明源地址. Java的反射机制 在Java运行时环境中,对于任意 ...
- 准备写java学习笔记
准备写java学习笔记 java int 转载于:https://blog.51cto.com/cryingcloud/1975267
- Java学习笔记--StringTokenizer的使用
2019独角兽企业重金招聘Python工程师标准>>> Java Tips: 使用Pattern.split替代String.split String.split方法很常用,用于切割 ...
- java学习笔记12--异常处理
java学习笔记系列: java学习笔记11--集合总结 java学习笔记10--泛型总结 java学习笔记9--内部类总结 java学习笔记8--接口总结 java学习笔记7--抽象类与抽象方法 j ...
- Java学习笔记(十)--控制台输入输出
输入输出 一.控制台输入 在程序运行中要获取用户的输入数据来控制程序,我们要使用到 java.util 包中的 Scanner 类.当然 Java 中还可以使用其他的输入方式,但这里主要讲解 Scan ...
- java学习笔记16--I/O流和文件
本文地址:http://www.cnblogs.com/archimedes/p/java-study-note16.html,转载请注明源地址. IO(Input Output)流 IO流用来处理 ...
- java学习笔记15--多线程编程基础2
本文地址:http://www.cnblogs.com/archimedes/p/java-study-note15.html,转载请注明源地址. 线程的生命周期 1.线程的生命周期 线程从产生到消亡 ...
最新文章
- 2017海克斯康拉斯维加斯美国大会 精彩即将开始
- android 自定义view文字不齐,Android 解决TextView排版参差不齐的问题
- 【ML】Principle Component Analysis 主成分分析
- SAP UI5 global configuration interface
- 【转】服务器维护工程师悲惨的一个星期
- Octave: 'rgb2gray' undefined error
- 前端开发框架整理(一些记录给自己看的)
- 黑苹果mac未能安装在你的电脑上_mac电脑上全新视频剪辑软件安装包分享,让你剪辑视频从此无忧!...
- 谷歌地图自定义popup框
- Linux kmalloc/kfree 源码解读
- leetcode77
- Python字符串、元组、列表、字典互相转换的方法
- vs2005下载,中文版,官方
- Hyper-v安装CentOS
- 实验4、A/D转换实验
- aimesh r6400 开_r6900+r6300v2 aimesh 连接成功!点滴分享
- 知识图谱中三元组抽取
- 浅谈SEO(搜索引擎优化)
- 嫁给年薪百万的程序员,结婚 6 年后的我竟然还是处女
- 张宏 :移动机器人全局定位技术与方法是啥?道翰天琼认知智能机器人平台API接口大脑为您揭秘-1。