1 Scanner类
1.1 定义
一个可以解析基本类型和字符串的简单文本扫描器。可以实现键盘输入数据到程序当中。
例如,以下代码使用用户能够从System.in中读取一个数:
Scanner sc=new Scanner(System.in);
int i=sc.nextInt();
注:System.in系统输入指的是通过键盘录入数据。
1.2 引用类型使用步骤
(1)导包
import 包路径.类名称;
-
- 如果需要使用的目标类,和当前类位于同一个包下,则可以省略导包语句不写。
- 只有java.lang包下的内容不需要导包,其他的包都需要import语句。
- 当写对象的创建语句调用Scanner包是,系统会自动书写import语句。
(2)创建
类名称 对象名 = new 类名称();
(3)使用
对象名. 成员方法名()
1.3 功能
(1)获取键盘输入的一个int数字:
int num=sc.nextInt();
import java.util.Scanner;//1.导包
public class Day6_scanner {
public static void main(String[] args) {
//2.创建
//备注:System.in代表从键盘输入
Scanner sc=new Scanner(System.in);
//3.获取键盘输入的int数字
int num=sc.nextInt();
System.out.println("输入的int数字是"+num);
}
}
(2)获取键盘输入的一个字符串:
String str=sc.next();
import java.util.Scanner;//1.导包
public class Day6_scanner {
public static void main(String[] args) {
//2.创建
//备注:System.in代表从键盘输入
Scanner sc=new Scanner(System.in);
//4.获取键盘输入的一个String字符串
String str=sc.next();
System.out.println("输入的string字符串是"+str);
}
}
2 Random类
2.1 定义
Random类用来生成随机数字。
2.2 引用类型使用步骤
(1)导包
import java.util.Random;
(2)创建
Random r = new Random();//小括号当中留空即可
(3)使用
对象名. 成员方法名()
2.3 功能
(1)获取一个随机int数字(int所有范围,有正负两种):
int num = r.nextInt();
public class Day6_random {
public static void main(String[] args) {
//第一种
Random r=new Random();
int num1=r.nextInt();
System.out.println("随机数字是"+num1);
}
}
(2)获取一个随机int数字(参数代表了范围,左闭右开区间):
int num=r.nextInt(3);
即上述代码实际代表含义是[0,3),也就是0~2。
public class Day6_random {
public static void main(String[] args) {
//第二种
for (int i = 0; i < 100; i++) {
int num2=r.nextInt(10);
System.out.println(num2);
}
}
}
3 ArrayList类
3.1 定义
java.util.ArrayList是大小可变的数组的视线,存储在内的诗句称为元素。此类提供一些方法来操作内部存储的元素。ArrayList中可不断添加元素,其大小也自动增长。
3.2 引用类型使用步骤
(1)查看类
java.util.ArrayList<E>:该类需要import导入后使用。
<E>:表示一种指示的数据类型,叫做泛型。E,取自Element(元素)的首字母。在出现E的地方,我们使用一种引用数据类型将其替换即可,表示我们将存储哪种引用类型的元素。
代码如下:
ArrayList<String>,ArrayList<Student>
(2)查看构造方法
public ArrayList():构造一个内容为空的集合。
基本格式:
ArrayList<String> list=new ArrayList<String>();
注:在JDK7后,右侧泛型的尖括号之内可以留空,但是<>仍然要写。
3.3 功能
(1)public boolean add(E e):
向集合中添加元素,参数的类型和泛型一致。返回值代表添加是否成功。
备注:对于ArrayList集合来说,add添加动作一定是成功的,所以返回值可用可不用。但是对于其他集合来说,add添加动作不一定会成功。
public class Day6_arrayList {
public static void main(String[] args) {
//创建了一个ArrayList集合,集合的名称是list,里面装的全都是String字符串类型的数据
//备注:从JDK1.7+开始,右侧的尖括号<E>里面可以不写内容,但是尖括号本身还是要写的
ArrayList<String> list=new ArrayList<>();
System.out.println(list);
//向集合当中添加一些数据,需要用到add方法
list.add("cici");
System.out.println(list);
list.add("casdhf");
System.out.println(list);
}
}
(2)public E get(int index):
从集合中获取元素,参数是索引编号,返回值就是对应位置的元素。
public class Day6_arrayList2 {
public static void main(String[] args) {
ArrayList<String> list=new ArrayList<>();
System.out.println(list);
//从集合中获取元素,get,索引值从0开始
String name=list.get(0);
System.out.println(name);
}
}
(3)public E remove(int index):
从集合中删除元素,参数是索引编号,返回值就是被删除的元素。
public class Day6_arrayList2 {
public static void main(String[] args) {
ArrayList<String> list=new ArrayList<>();
System.out.println(list);
//从集合中删除元素,remove
String whoRemoved=list.remove(0);
System.out.println("被删除的人是谁?"+whoRemoved);
System.out.println(list);
}
}
(4)public int size():
获取集合的尺寸长度,返回值是集合中包含的元素个数。
public class Day6_arrayList2 {
public static void main(String[] args) {
ArrayList<String> list=new ArrayList<>();
System.out.println(list);
//获取集合的长度尺寸,也就是其中元素的个数
int size=list.size();
System.out.println(size);
}
}
3.4 ArrayList集合存储基本数据类型
如果希望向集合ArrayList中存储基本类型数据,必须使用基本类型对应的“包装类”。
基本类型 | 包装类(引用类型,包装类都位于java.lang包下) |
byte | Byte |
short | Short |
int | Integer【特殊】 |
long | Long |
float | Float |
double | Double |
char | Character【特殊】 |
boolean | Boolean |
public class Day6_arrayList3 {
public static void main(String[] args) {
ArrayList<String> list1=new ArrayList<>();
//错误写法,泛型只能是引用类型,不能是基本类型
// ArrayList<int> list2=new ArrayList<>();
ArrayList<Integer> list2=new ArrayList<>();
list2.add(100);
list2.add(200);
System.out.println(list2);
list2.get(1);
System.out.println("第一号元素是"+list2.get(1));
}
}
3.5 注意事项
- 数组的长度不可以发生改变,但是ArrayList集合的长度可以随意变化。
- 泛型只能是引用类型,不能是基本类型。如果想要使用基本类型,就需要使用“包装类”。
- 对于ArrayList集合来说,直接打印得到的不是地址值,而是内容。如果内容为空,得到的是空的括号[ ]。
4 String类
4.1 定义
java.lang.String类代表字符串。
java程序中所有字符串字面值(如:“abc”)都作为此类的实例实现。
也就是说,程序当中的所有的双引号字符串,都是String类的对象。(就算没有new,也照样是。)
4.2 特点
- 字符串的内容永不可变【重点】
- 正是因为字符串不可改变,所以字符串是可以共享使用的。
- 字符串效果上相当于char[ ]字符数组,但是底层原理是byte[ ]字节数组。
4.3 创建字符串的常见3+1种方法
(1)三种构造方法
public String():创建一个空白字符串,不含有任何内容。
public String(char [ ] array):根据字符数组的内容,来创建对应的字符串。
public String(byte[ ] array):根据字节数组的内容,来创建对应的字符串。
(2)一种直接创建
String str =“Hello”;//右边直接用双引号
public class Day7_string {
public static void main(String[] args) {
//使用空参构造
String str1=new String();//小括号留空,说明字符串什么内容都没有
System.out.println("第一个字符串"+str1);
//根据字符数组创建字符串
char[] charArray= {'A','B','C'};
String str2=new String(charArray);
System.out.println("第二个字符串"+str2);
//根据字节数组创建字符串
byte[] byteArrray={97,98,99};
String str3=new String(byteArrray);
System.out.println("第三个字符串"+str3);//第三个字符串abc
//直接创建
String str="Hello";//右边直接用双引号
System.out.println("第四个字符串"+str);
}
}
注意:直接写上双引号,就是字符串对应,不管new不new。
字符串常量池:程序当中直接写上的双引号字符串,就在字符串常量池中。
- 对于基本类型来说,==是进行数值的比较。
- 对于引用类型来说,==是进行【地址值】的比较。
如果需要对字符串的内容进行比较,可以使用以下两个方法:
(1)public boolean equals(Object obj):参数可以是任何对象,只有参数是一个字符串并且内容相同才会给true;否则返回false。
注意事项:
①任何对象都能用Object进行接收。
②equals方法具有对称性,也就是a.equals(b)和b.equals(a)效果一样。
③如果比较双方一个常量一个变量,推荐把常量字符串写在前面。
推荐:“abc”.equals(str) 不推荐:str.equals("abc")
(2)public boolean equalIgnoreCase(String str):忽略大小写,进行内容比较。
注意:只有英文字母可以区分大小写,其他不区分。
public class Day7_string3 {
public static void main(String[] args) {
String str1="abc";
String str2="abc";
char[] charArray={'a','b','c'};
String str3=new String(charArray);
System.out.println(str1.equals(str2));
System.out.println(str2.equals(str3));
System.out.println(str3.equals("abc"));
System.out.println("---------------------");
String str5=null;
System.out.println("abc".equals(str5));//推荐
// System.out.println(str5.equals("abc"));//不推荐,报错:空指针异常NullPointerException
System.out.println("---------------------");
String str6="Abc";
System.out.println(str6.equalsIgnoreCase(str1));
}
}
4.4 String类与获取相关的常用方法
(1)public int length():
获取字符串当中含有的字符个数,拿到字符串长度。
(2)public String concat(String str):
将当前字符串和参数字符串拼接成为返回值新的字符串。
(3)public char charAt(int index):
获取指定索引位置的单个字符。(索引从0开始)
(4)public int indexOf(String str):
查找参数字符串在本字符串当中首次出现的索引位置,如果没有返回-1值。
public class Day7_string4 {
public static void main(String[] args) {
//与获取有关方法
System.out.println("asjfgsjd".length());
System.out.println("skdjf".concat("ajgsdf"));
System.out.println("kjsdhf".charAt(4));
System.out.println("ksjghdga".indexOf("b"));
}
}
4.5 String类与截取相关的常用方法
(1)public String substring(int index):
截取从参数位置一直到字符串末尾,返回新字符串。
(2)public String substring(int begin,int end):
截取从begin开始,一直到end结束,中间的字符串。
【注】:[begin,end),是包含左边,不包含右边的左闭右开区间。
public class Day7_string4 {
public static void main(String[] args) {
//与截取有关方法
System.out.println("sdhfgkasj".substring(5));
System.out.println("ajksgfhsdf".substring(5,8));
//下面这种写法,字符串的内容仍然没有改变
//下面有两个字符串“abc”,“Java”
//StrA中保存的是地址值
//本来的地址值是abc的0x666
//后来地址值变成了java的0x999
String strA="abc";
System.out.println(strA);
strA="java";
System.out.println(strA);
}
}
4.6 String类与转换相关的常用方法
(1)public char[ ] toCharArray():
将当前字符串拆分成为字符数组作为返回值。
(2)public byte[ ] getBytes():
获得当前字符串底层的字节数组。
(3)public String replace(CharSequence oldString,CharSequence newString):
将所有出现的老字符串替换成为新的字符串,返回替换之后的结果新字符串。
备注: CharSequence意思就是说可以接受字符串类型。
public class Day7_string4 {
public static void main(String[] args) {
//与转换有关方法
//转换成为字符数组
char[] chars="hello".toCharArray();
System.out.println(chars);
System.out.println(chars[0]);
System.out.println(chars[1]);
//转换成为字节数组
byte[] bytes="abc".getBytes();
for (int i = 0; i < bytes.length; i++) {
System.out.println(bytes[i]);
}
System.out.println("kjasgdfjhaf".replace("a","0"));
}
}
输出:
4.7 String类与切分有关的常用方法
public String[ ] split(String regex)
按照参数的规则,将字符串切分成为若干部分。
public class Day7_string4 {
public static void main(String[] args) {
String str2="jkjjfhs,aksj,aksjh";
String[] array1=str2.split(",");
for (int i = 0; i < array1.length; i++) {
System.out.println(array1[i]);
}
String str3="jkjjfhs.aksj.aksjh";
String[] array3=str3.split("\\.");
System.out.println(array3.length);
for (int i = 0; i < array3.length; i++) {
System.out.println(array1[i]);
}
}
}
输出:
注意事项:
- split方法的参数其实是一个 正则表达式,今后学习。
- 如果按照“.”进行切分,必须写“\\”(两个反斜杠)
5 数组工具类Arrays
5.1 定义
java.util.Arrays是一个与数组相关的工具类,里面提供了大量静态方法,用来实现数组常见的操作。
5.2 功能
(1)public static String toString(数组):
将参数数组变成字符串(按照默认格式:[元素1,元素2,元素3,...])
(2)public static void sort(数组):
按照默认升序(从小到大)对数组的元素进行排序。
public class Day7_arrays {
public static void main(String[] args) {
int[] arr={10,20,30};
String str= Arrays.toString(arr);
System.out.println(str);
int[] arr2={100,20,30};
Arrays.sort(arr2);
System.out.println(Arrays.toString(arr2));
String[] arr3={"aaa","agsd","iuy"};
Arrays.sort(arr3);
System.out.println(Arrays.toString(arr3));
}
}
输出:
备注:
- 如果是数值,sort默认按照升序从小到大。
- 如果是字符串,sort默认按照字母升序。
- 如果是自定义的类型,那么这个自定义的类需要有Comparable或者Comparator接口支持(今后学习)
6 数学工具类Math
6.1 定义
java.util.Math类是数学相关的工具类,里面提供了大量的静态方法,完成与数学运算相关的操作。
6.2 功能
(1)public static double abs(double num):
获取绝对值,有多种重载。
(2)public static double ceil(double num):
向上取整。
(3)public static double floor(double num):
向下取整。
(4)public static long round(double num):
四舍五入
public class Day7_math {
public static void main(String[] args) {
System.out.println(Math.abs(-3014.14));
System.out.println(Math.ceil(-3014.14));
System.out.println(Math.floor(-3014.14));
System.out.println(Math.round(-3014.14));
}
}
输出:
Math.PI 代表近似的圆周率常量。