常用的API
第一节:API概述
1.1 概述
**API:**应用程序编程接口。Java API是一本程序员的字典,是JDK中提供给我们使用的类的说明文档。这些类将底层的代码实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可。所以我们可以通过查阅API的方式,来学习Java提供的类,并得知如何使用它们
1.2 API使用步骤
1、打开帮助文档
2、点击显示,找到索引,看到输入框
3、你要找谁,就在输入框里输入,然后回车
4、看包,java.lang下的类不需要导包,其他需要
5、看类的解释和说明
6、学习构造方法
7、使用成员方法
第二节:Scanner类
2.1 什么是Scanner类
**Scanner类的功能:**可以实现键盘输入数据到程序中
引用类型的一般使用步骤:
1、导包
import 包路径.类名称;
在package之后写,但在public之前写
如果需要使用的目标类和当前类位于同一个包下,则可以省略导包语句不写
只有java.lang包下的内容不需要导包,其他的包都需要import语句
2、创建
类名称 对象名=new 类名称();
3、使用
对象名.成员方法名()
package cn....;
import java.util.Scanner;
public class Demo01Scanner{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);//现阶段一成不变
//System.in代表从键盘进行输入
int num=sc.nextInt();//获取键盘输入的一个int数字:
String str=sc.next();//获取键盘输入的一个字符串;
}
}
第三节:匿名对象
3.1 匿名对象的说明
创建对象的标准格式:
类名称 对象名=new 类名称();
匿名对象就是只有右边的对象,没有左边的名字和赋值运算符
new 对象名().成员变量;//定义
注意:匿名对象只能使用唯一的依次,下次使用不得不再创建一个新对象
使用建议:如果确定有一个对象只需要使用唯一的一次,就可以用匿名对象
3.2 匿名对象作为返回值的参数
public static void main(String[] args){
//普通使用Scanner方式:
Scanner sc=new Scanner(System.in);
int num=sc.nextInt();
//匿名对象的方式:
int num=new Scanner(System.in).nextInt();
System.out.println("输入的是:"+num);
//使用一般写法传入参数:
Scanner sc=new Scanner(System.in);
methodparam(sc);
//使用匿名对象来进行传参:
methodparam(new Scanner(System.in));
}
第四节:ArrayList 集合
4.1 对象数组
数组有一个缺点:一旦创建,程序运行期间长度不可以发生改变
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("古力娜扎",28);
Person three=new Person("玛尔扎哈",38);
//将one当中的地址值赋值到数组0号元素位置
array[0]=one;
array[1]=two;
array[2]=three;
System.out.println(attay[0]);//地址值
System.out.println(attay[1]);//地址值
System.out.println(attay[2]);//地址值
System.out.println(attay[1].getName);//古力娜扎
}
}
4.2 ArrayList 集合概述和基本使用
**与数组的区别:**数组的长度不可以发生改变,但是ArrayList的长度可以发生改变
对于ArrayList来说,有一个代表泛型。
泛型:也就是装在集合当中的所有元素,全部都是统一的什么类型。
注意:1、泛型只能是引用类型,不能是基本类型
2、对于ArrayList集合来说,直接打印得到的不是地址值,而是内容,如果内容是空,得到的是空 的中括号,[]
3、创建的时候尖括号泛型说的是什么类型,添加进去的元素就必须是什么类型
package cn.Test2;
import java.util.ArrayList;
public class Arraytest {
public static void main(String[] args) {
//创建了一个ArrayList集合,集合的名称是list,里面装的全都是String字符串类型的数据
//备注:从JDK 1.7+开始,右侧的尖括号内部可以不写内容,但是<>本身还是要写的
ArrayList<String> list=new ArrayList<>();
System.out.println(list);
//向集合中添加一些数据,需要用到add方法
list.add("赵丽颖");
System.out.println(list);
list.add("da");
list.add("as");
System.out.println(list);
}
}
常用方法:(重点)
1、向集合中添加元素,参数的类型和泛型一致,返回值是对应的boolean值 list.add(“想加的元素”);
public boolean add(E e);
2、从集合中获取元素,参数是索引编号,返回值就是对应位置的元素 list.get(索引值);
public E get(int index);
3、从集合中删除元素,参数是索引编号,返回值就是被删除的元素 list.remove(3);
public E remove(int index);
4、获取集合的尺寸长度,返回值是集合中包含的元素个数 list.size();
public int size();
4.3 ArrayList集合存储基本数据
如果希望向集合ArrayList中存储基本类型,必须使用基本类型对应的“包装类”
基本类型 | 包装类(引用类型,包装类都位于java.lang包下) | |
byte | Byte | |
short | Short | |
int | Integer | 【特殊】 |
long | Long | |
float | Float | |
double | Double | |
char | Character | 【特殊】 |
boolean | Boolean |
在这八个类名中,除了Integer和Character类以后,其它六个类的类名和基本数据类型一致,只是类名的第一个字母大写即可。
ArrayList<Integer> list=new ArrayList<>();
list.add(100);
从JDK 1.5+开始,支持自动装箱,自动拆箱
**自动装箱:**基本类型----->包装类型
**自动拆箱:**包装类型------>基本类型
第五节: String类
5.1 字符串概括和特点
String类代表字符串,JAVA程序中的所有字符串字面值(如"abc")都作为此类的实例实现
其实就是说:程序中所有双引号字符串,都是String类的对象(就算没有new,也照样是)
字符串的特点:
1、字符串的内容永不可变【重点】
2、正是因为字符串不可改变,所以字符串是可以共享使用的
3、字符串效果上相当于是char[]字符数组,但是底层原理是byte[]字节数组
5.2 字符串的构造方法和创建方法
创建字符串的常见3+1种方式:
三种构造方法:
public String();//创建一个空白字符串,不含有任何内容
String str1=new String();//小括号留空,说明字符串什么内容都没有
public String(char[] array);//根据字符数组的内容,来创建对应的字符串
char[] charArray={'a','b','c'};
String str2=new String(charArray);//abc
public String(byte[] array);//根据字节数组的内容,来创建对应的字符串
byte[] byteArray={97,98,99};
String str3=new String(byteArray);//abc
一种直接创建:
String str="Hello";//右边直接用双引号
注意:直接写上双引号,就是字符串对象
5.3 字符串的常量池
字符串的常量池:程序当中直接写上的双引号字符串,就在字符串常量中,从JDK1.7开始,常量池在堆中
对于基本类型来说,==是进行数值的比较
对于引用类型来说,==是进行【地址值】的比较
常量池的工作内存图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DpxpA5jv-1611640039012)(D:/学习/Java/图片/16.png)]
注意:
1、对于引用类型来说,==进行的是地址值的比较
2、双引号直接写的字符串在常量池中,new的不在池当中
5.4 字符串的比较相关方法
==是进行对象的地址值比较,如果确实需要字符串的内容比较,可以使用两个方法:
一、严格区分大小写
public boolean equals(Object obj);//参数可以是任何对象,只有参数是一个字符串并且内容相同的才会给true,否则返回flase,任何对象都能用Object进行接收
System.out.println(str1.equals(str2));
System.out.println(str1.equals("Hello"));
System.out.println("Hello".equals(str1));
注意:
1、任何对象都能用Object进行接收
2、equals方法具有对称性,也就是a.equals(b)和b.equals(a)效果一样
3、如果比较双方一个常量一个变量,推荐把常量字符串写在前面
推荐:“abc”.equals(str); 不推荐:str.equals(“abc”);
**当str=null时,不推荐的写法会报错:空指针异常(NullPorinterException)**
二、不区分大小写
public boolean equalsIgnoreCase(String str);//忽略大小写,进行内容比较
System.out.println(str1.equalsIgnoreCase(str2));
System.out.println(str1.equalsIgnoreCase("Hello"));
System.out.println("Hello".equalsIgnoreCase(str2));
注意:只有英文字母区分大小写,其他都不区分大小写
5.4 字符串的获取相关方法
String中与获取相关的常用方法:
public int length();//获取字符串中含有的字符个数,拿到字符串长度
int length="asfahfhlafhla".length();
public String concat(String str);//将当前字符串和参数字符串拼接,返回新的字符串
String str3=str1.concat(str2);
public char charAt(int index);//获取指定索引位置的单个字符(索引从0开始)
char ch="Hello".charAt(1);//e
public int indexOf(String str);//查找参数字符串在本字符串中首次出现的索引位置,如果没有,返回-1
int index=str1.indexOf(str2);
5.5 字符串的截取方法
截取方法:
public String substring(int index);//截取从参数位置一直到字符串末尾,返回新字符串
String str2=str1.substring(5);
public String substring(int begin,int end);//截取区间从begin开始,一直到end结束,中间的字符串,而且是个左闭右开,[begin,end)
String str3=str1.substring(4,7);
5.6 字符串的转换相关方法
String中与转换相关的常用方法:
public char[] toCharArray();//将当前字符串拆分成字符数组作为返回值
char[] chars="Hello".toCharArray();
public byte[] getBytes();//获得当前字符串底层的字节数组
byte[] bytes="Hello".getBytes();
public String replace(CharSequence oldString,CharSequence newString);//将所有出现的老字符串替换成为新的字符串,返回替换之后的结果新字符串.CharSequence意思是可以接受字符串类型
String str1="How do you do?";
String str2=str1.replace("o","*");//H*w d* y*u d*?
5.7 字符串的分割相关方法
分割字符串的方法:
public String[] split(String regex);//按照参数的规则,将字符串切分成为若干部分
String str1="aaa,bbb,ccc";
String[] array1=str1.split(",");//aaa bbb ccc
注意:
split方法的参数其实是一个“正则表达式”,如果要按照英文句点".“进行切分,必须写”\\."(两个反斜杠)
第六节 关键字Static静态
6.1 概述
一旦使用了static关键字,那么这样的内容不再属于对象自己,而是属于类的,所以凡是本类的对象,都共享一份
6.2 static修饰成员
static String room;
6.3 static修饰方法
public void method(){
System.out.println("这是一个普通的成员方法。");
}
public static void methodStatic(){
System.out.println("这是一个静态方法");
}
一旦使用static修饰成员方法,那么这就成为了静态方法。静态方法不属于对象,而是属于类的
如果没有static关键字,那么必须首先创建对象,然后通过对象才能使用它
如果有了static关键字,那么不需要创建对象,直接就能通过类名称来使用它
无论是成员变量还是成员方法,如果有了static,都推荐使用类名称进行调用
推荐格式:
静态变量:类名称.静态变量
静态方法:类名称.静态方法()
注意:
1、静态只能直接访问静态,不能直接访问非静态
**原因:因为在内存中是先有静态内容,后有的非静态内容**
2、静态方法中不能用this
原因:this代表当前对象,通过谁调用的方法,谁就是当前对象
6.4 静态static的内存图
在方法区中有一块静态区,专门用来存储静态static类型
注意:根据类名称访问静态成员变量的时候,全程和对象向就没关系,只和类有关系
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ugzLCYzY-1611640039015)(D:/学习/Java/图片/17.png)]
6.5 静态代码块
格式:
public class 类名称{
static{
//静态代码块的内容
}
}
**特点:**当第一次用到本类时,静态代码块执行唯一的依次
注意:静态内容总是优先于非静态,所以静态代码块比构造方法先执行
静态代码块的典型用途:用来一次性地对静态成员变量进行赋值
第七节:Arrays工具类
7.1 数组工具类Arrays
java.util.Arrays是一个与数组相关的工具类,里面提供了大量静态方法,用来实现数组常见操作
常见的操作:
public static String toString(数组);//将参数数组变成字符串(按照默认格式:[元素1,元素2,...])
String intstr=Arrays.toString(intArray2);
public static String void sort(数组);//按照默认升序(从小到大)对数组的元素进行排序
Arrays.sort(array);//直接将数组排序,没有返回对应数组
注意:
1、如果是数值,sort默认按照升序从小到大排序
2、如果是字母,sort默认按照字母升序
3、如果是自定义的类型,那么这个自定义的类需要有Comparable或者Comparator接口的支持
第八节: Math类
java.utli.Math类是数学相关的工具类,里面提供了大量的静态方法,完成与数学运算相关的操作
public static double abs(double num);//获取绝对值
System.out.println(Math.abs(3.14));//3.14
System.out.println(Math.abs(0));//0
System.out.println(Math.abs(-2.5));//2.5
public static double ceil(double num);//向上取整
System.out.println(Math.ceil(2.5));//3.0
public static double floor(double num);//向下取整
System.out.println(Math.floor(2.5));//2.0
public static long round(double num);//四舍五入
System.out.println(Math.round(2.5));//3.0
Math.PI//代表近似的圆周率常量(默认为double)