???????????????????常用API
API(Application Progarmming Interface)
Java API是一本程序员的 字典 ,是JDK中提供给使用的类的说明文档。这些类将底层的代码实现封装了来我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可。所以我们可以通过查询API的方式,来学习Java提供的类,并得知如何使用它们。
使用方法:
- import导包
- 创建对象
- 调用方法
Sacnner 类
Random类
Random:创建一个新的随机数生成器。此构造方法将随机数生成器的种子设置为某个值,该值与此构造方法的所有其他调用所用的值完全不同。
ArrayList集合
ArrayList是大小可变的数组的实现,存储在内的数剧称为元素。ArrayList中可以不断添加元素,其大小也自动增加。
ArrayList对象只能存储引用类型而不能存储基本数据类型。类似
String类
-
特点:
1.字符串的值在创建后不能被更改。
2.String对象是不可变的,所以他们可以被共享。
3.“abc”等效为char[] data={’a‘,’b‘,’c‘}
-
常用方法
public boolean equals (Object anObject):将此字符串与指定对象进行比较。 //推荐"abc".equals(str) 不推荐str.equals.("abc") public boolean equalsIgnoreCase (String anotherString):将此字符串与指定对象进行比较,忽略大小写。 public int length ():返回此字符串的长度。 public String concat (String str):将指定的字符串连接到该字符串的末尾。 public char charAt (int index):返回指定索引处的 char值。 public int indexOf (String str):返回指定子字符串第一次出现在该字符串内的索引。 public String substring (int beginIndex):返回一个子字符串,从beginIndex开始截取字符串到字符串结尾。 public String substring (int beginIndex, int endIndex):返回一个子字符串,从beginIndex到endIndex截取字符串。含beginIndex,不含endIndex。 public char[] toCharArray ():将此字符串转换为新的字符数组。 public byte[] getBytes ():使用平台的默认字符集将该 String编码转换为新的字节数组。 public String replace (CharSequence target, CharSequence replacement) :将与target匹配的字符串使用replacement字符串替换。 public String[] split(String regex) :将此字符串按照给定的regex(规则)拆分为字符串数组。
关于字符串常量值
Arrays类
Arrays类包含了用来操作数组的各种方法,比如排序和搜索,气所有方法均为静态方法。
public?static?void?sort(int[]?a) :对指定的 int 型数组按数字升序进行排序。
Math类
Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。类似这样的工具
类,其所有方法均为静态方法
public?static?double?abs(double?a) :返回 double 值的绝对值。
public?static?double?floor(double?a) :返回小于等于参数最大的整数
public?static double ceil(double a) :返回大于等于参数的最小整数。
public?static?long?round(double?a) :返回最接近参数的 long。(相当于四舍五入方法)
Object类
Object类是Java语言中的根类,即所有类的父类。它中描述的所有方法子类都可以使用。在对象实例化的时候,最终找的父类就是Object。
* public String toString()`:返回该对象的字符串表示。
* public boolean equals(Object obj)`:指示其他某个对象是否与此对象“相等”。
* public Class<?> getClass() 返回调用者的类型信。
Date类
? java.util.Date类 表示特定的瞬间,精确到毫秒
//构造方法
public Date():分配Date对象并初始化此对象,以表示分配它的时间(精确到毫秒)。
public Date(long date)`:分配Date对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即1970年1月1日00:00:00 GMT)以来的指定毫秒数。
//Date类中的多数方法已经过时,常用的方法有:
public long getTime()` 把日期对象转换成对应的时间毫秒值。
? 日期格式:
-
DateFormat类
java.text.DateFormat
是日期/时间格式化子类的抽象类,我们通过这个类可以帮我们完成日期和文本之间的转换,也就是可以在Date对象与String对象之间进行来回转换。/*构造方法:public SimpleDateFormat(String pattern) :用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。pattern是一个字符串,代表日期时间的自定义格式。*/ ?DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //常用的方法 public String format(Date date) :将Date对象格式化为字符串。 public Date parse(String source) :将字符串解析为Date对象 /*将Date对象格式化为指定格式。*/ ??public static void dateToString(String[] args) { ????Date date = new Date(); ????// 创建日期格式化对象,在获取格式化对象时可以指定风格 ????DateFormat df = new SimpleDateFormat("yyyy年MM月dd日"); ????String str = df.format(date); ????System.out.println(str); // 2008年1月23日 ?} /*将字符串解析为date*/ ??public static void stringToDate(String[] args) throws ParseException { ????DateFormat df = new SimpleDateFormat("yyyy年MM月dd日"); ????String str = "2018年12月11日"; ????Date date = df.parse(str); ????System.out.println(date); // Tue Dec 11 00:00:00 CST 2018 ?}
Calendar类
java.util.Calendar 是日历类,在Date后出现,替换掉了许多Date的方法。该类将所有可能用到的时间信息封装为静态成员变量,方便获取。日历类就是方便获取各个时间属性的。
Calendar类的成员变量
/*构造方法:ublic static Calendar getInstance() :使用默认时区和语言环境获得一个日历*/ ?Calendar cal = Calendar.getInstance(); /*常用方法*/ public int get(int field) :返回给定日历字段的值。 public void set(int field, int value) :将给定的日历字段设置为给定值。 public abstract void add(int field, int amount) :根据日历的规则,为给定的日历字段添加或 减去指定的时间量。 public Date getTime() :返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对 象。 ?public static void main(String[] args) { ????// 创建Calendar对象 ????Calendar cal = Calendar.getInstance(); ????int year = cal.get(Calendar.YEAR);??// 获取年 cal.set(Calendar.YEAR, 2020); //设置月 cal.add(Calendar.DAY_OF_MONTH, 2); // 加2天 Date date = cal.getTime(); //拿到当前的Date对象。 ?} ?
System类
java.lang.System 类中提供了大量的静态方法,可以获取与系统相关的信息或系统级操作
//常用方法 public static long currentTimeMillis() :返回以毫秒为单位的当前时间(取当前系统时间与1970年01月01日00:00点之间的毫秒差值)。 public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) :将数组中指定的数据拷贝到另一个数组中。
StringBuilder类
java.lang.StringBuilder 的API,StringBuilder又称为可变字符序列,它是一个类似于 String 的字符串
缓冲区,通过某些方法调用可以改变该序列的长度和内容。-
字符串拼接问题
字符串是常量,它们的值在创建后不能被更改。所以每当进行字符串拼接时,总是会在内存中创建一个新的对象。如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费空间。为了解决这一问题,可以使用 java.lang.StringBuilder 类。
//构造方法 public StringBuilder() :构造一个空的StringBuilder容器。 public StringBuilder(String str) :构造一个StringBuilder容器,并将字符串添加进去。 //常用方法(很多方法和String类似) public StringBuilder append(...) :添加任意类型数据的字符串形式,并返回当前对象自身。 public String toString() :将当前StringBuilder对象转换为String对象。 public StringBuilder replace(int start, int end, String str) 使用给定 String 中的字符替换此序列的子字符串中的字符。 public int indexOf(String str) 返回第一次出现的指定子字符串在该字符串中的索引。 public int indexOf(int ch) 返回指定字符在此字符串中第一次出现处的索引。
-
匿名对象
匿名对象:没有变量名的对象。即创建对象时只创建对象的语句,却没有把对象地址值赋值给某个变量。虽然是创建对象的简化方法,但是应用场景非常有现。
-
应用场景
-
创建匿名对象直接调用方法
new Scanner (System.in).nextInt();
-
匿名对象作为方法的参数或者返回值
//作为参数 class?Test?{ ????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?Scanner?getScanner(){ ? ????????//普通方式 ????????Scanner?sc?=?new?Scanner(System.in);? ????????//return?sc; ????????//匿名对象作为方法返回值 ????????return?new?Scanner(System.in); } ??? }
-
static关键字
static关键字可以用来修饰成员变量和成员方法,被修饰的成员是属于类的,而不单单属于对象,即可以不靠创建对象来调用该方法或变量。
-
静态变量(类变量)
当 static 修饰成员变量时,该变量称为类变量。该类的每个对象都共享同一个类变量的值。任何对象都可以更改该类变量的值,但也可以在不创建该类的对象的情况下对类变量进行操作。
-
静态方法(类方法)
当 static 修饰成员方法时,该方法称为类方法 。静态方法在声明中有 static ,建议使用类名来调用,不需要创建类的对象。调用方式非常简单。
-
调用格式
//?访问类变量 类名.类变量名; //?调用静态方法 类名.静态方法名(参数);
-
注意事项(静态方法只能访问静态成员):
静态方法可以直接访问类变量和静态方法。
静态方法不能直接访问普通成员变量或成员方法。反之,成员方法可以直接访问类变量或静态方法。
静态方法中,不能使用 this关键字。
-
-
静态代码块
静态代码块 :定义在成员位置,使用static修饰的代码块{ }。随着类的加载而执行且执行一次,优先于 main方法和构造方法的执行。
静态原理图解
包装类
Java提供了两个类型系统,基本类型与引用类型,使用基本类型在于效率,然而很多情况,会创建对象使用,因为对象可以做更多的功能,如果想要我们的基本类型像对象一样操作,就可以使用基本类型对应的包装类:[08包装类]
-
拆箱与装箱
装箱:从基本类型转换为对应的包装类对象。
拆箱:从包装类对象转换为对应的基本类型。Integer i = 4;//自动装箱。相当于Integer i = Integer.valueOf(4); i = i + 5;//等号右边:将i对象转成基本数值(自动拆箱) i.intValue() + 5; //加法运算完成后,再次装箱,把基本数值转成对象。
-
基本数据类型与字符串的转换
-
基本类型转String
a).基本类型直接与””相连接。如34+“”
b).String string = String.valueOf(int i);
c).String string = Integer.toString(int i);
-
String转基本类型
(除了Character类之外,其他所有包装类都具有parseXxx静态方法可以将字符串参数转换为对应的基本类型)
public static byte parseByte(String s) :将字符串参数转换为对应的byte基本类型。 public static short parseShort(String s) :将字符串参数转换为对应的short基本类型。 public static int parseInt(String s) :将字符串参数转换为对应的int基本类型。 public static long parseLong(String s) :将字符串参数转换为对应的long基本类型。 public static float parseFloat(String s) :将字符串参数转换为对应的float基本类型。 public static double parseDouble(String s) :将字符串参数转换为对应的double基本型。 public static boolean parseBoolean(String s) :将字符串参数转换为对应的boolean基本类型。 //以Integer类的静态方法parseXxx为例: int num = Integer.parseInt("100");
-