day15_常用类
今日内容
零、 复习昨日
一、作业
二、API
三、Object
四、包装类
五、数学和随机
零、 复习昨日
抽象 接口
一、作业
见代码
二、API
API: Application Programing Interface 应用程序编程接口
其实就是Java程序的说明书
使用API学习Java的常用类
- Object
- String
- 包装类
- Math
- Random
- System
- Date
- DateFormat
- Calendar
- 异常
- 集合
- IO
- 线程等等
三、Object
ps: java.lang包下的所有类,使用时不需要导包
Object是一个类,
Object
是类层次结构的根类,即Object是所有类的超类,换句话就是Object是所有类的父类(祖宗…) (Java不支持多继承,但是支持层次继承)
构造方法
- public Object()
Object o = new Object( );System.out.println(o );
返回值 | 方法名 | 解释 |
---|---|---|
boolean | equals(Object obj) |
指示其他某个对象是否与此对象“相等”。 |
int | hashCode() | 返回该对象的哈希码值。 |
String | toString() |
返回该对象的字符串表示。 |
package com.qf.api;/* --- 天道酬勤 --- @author QiuShiju* @desc*/
public class Demo1_Object {public static void main(String[] args) {Student s1 = new Student(18,"张三");Student s2 = new Student(19,"张三");/* equals底层是使用==判断对象地址是否相等* 但是大多数情况下,我们开发时认为两个对象的属性完全一致* 则认为是同一个对象,即每个子类都会重写equals来比较属性是否相等*/System.out.println(s1.equals(s2));}/* 演示toString方法*/private static void show2_toString() {Object o = new Object( );int i = o.hashCode( );// 对象在内存的地址System.out.println(i );/* toString将对象的信息+地址返回了* 输出语句中输出对象,会默认调用toString*/String s = o.toString( );System.out.println(s );System.out.println(o.toString( ) );System.out.println(o );/* 输出语句输出对象,会默认调用toString,打印对象的包名+地址* 但是这些东西其实并不关心,对于开发人员意义不大* 所以一般情况下,所有子类都会重写toString(),打印对象的属性信息*/System.out.println("----------------" );Student student = new Student(18,"张三");System.out.println(student.hashCode( ));// 默认调用toString,自己重写了就调用自己的,打印属性信息System.out.println(student );}// shift+alt+m// ctrl+alt+mprivate static void show1() {Student student = new Student( );// 调用父类Object类中的方法student.toString();student.equals(1);Object o = new Object( );System.out.println(o );}
}
package com.qf.api;import java.util.Objects;/* --- 天道酬勤 --- @author QiuShiju* @desc*/
public class Student {private int age;private String name;// set get方法省略了....@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass( ) != o.getClass( )) return false;Student student = (Student) o;return age == student.age && Objects.equals(name, student.name);}// 自己手动实现// @Override// public boolean equals(Object o) {// Student other = (Student) o;// if (this.age == other.getAge()) {// if (this.name.equals(other.getName())) {// return true;// }// }// return false;// }@Overridepublic String toString(){return "Student {age = "+age+",name = "+name+"}";}
}
四、包装类
将8个基本类型包装成了对应的引用类型,变成包装类
基本类型 | 包装类 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
基本类型包装成包装类后,最主要的目的或者说最主要的使用场景:
基本类型和String之间的相互转换
5.1 Integer
通过查看API得知,数字相关类型,内部的属性和构造方法以及方法都和Integer差不多,就以Integer为例
Integer
类在对象中包装了一个基本类型int
的值。Integer
类型的对象包含一个int
类型的字段。此外,该类提供了多个方法,能在
int
类型和String
类型之间互相转换,还提供了处理int
类型时非常有用的其他一些常量和方法。
属性
static int
MAX_VALUE 值为 231-1 的常量,它表示
int` 类型能够表示的最大值。static int
MIN_VALUE
值为 -231 的常量,它表示int
类型能够表示的最小值。
构造方法
Integer(int value)
构造一个新分配的 Integer 对象,它表示指定的 int 值。
Integer(String s)
构造一个新分配的 Integer 对象,它表示 String 参数所指示的 int 值。
public static void main(String[] args) {System.out.println(Integer.MAX_VALUE );System.out.println(Integer.MIN_VALUE );Integer i1 = new Integer(1);System.out.println(i1 );// 可以将数字转成包装类,但是必须是纯数字字符串Integer i2 = new Integer("2");System.out.println(i2 );}
方法
int intValue()
以 int 类型返回该 Integer 的值。
static int parseInt(String s)
将字符串参数作为有符号的十进制整数进行解析。
String toString()
返回一个表示该 Integer 值的 String 对象。
static String toString(int i)
返回一个表示指定整数的 String 对象。
static Integer valueOf(int i)
返回一个表示指定的 int 值的 Integer 实例。
static Integer valueOf(String s)
返回保存指定的 String 的值的 Integer 对象。
public static void main(String[] args) {System.out.println(Integer.MAX_VALUE );System.out.println(Integer.MIN_VALUE );Integer i1 = new Integer(1);System.out.println(i1 );// 可以将数字转成包装类,但是必须是纯数字字符串Integer i2 = new Integer("2");System.out.println(i2 );int i = i1.intValue( );// [重点][重点][重点][重点][重点]int i3 = Integer.parseInt("1285");System.out.println(i3 );System.out.println(i3 + 1 );System.out.println(i1.toString() );System.out.println(i1.toString() + 1);String s = Integer.toString(1);Integer integer = Integer.valueOf(1);Integer integer1 = Integer.valueOf("11");int a = 1;System.out.println(1+""+1 );}
5.2 自动装箱&拆箱
装箱: 将基本类型 包装 成包装类
拆箱: 将包装类 转成 基本类型
自动装箱/拆箱 ,是指 基本类型和包装类转换可以自动完成
Integer x = 1; // 自动装箱Integer integer2 = new Integer(1);// 自动拆箱int y = integer2;Byte b = 1; // 装箱byte c = b; // 拆箱
5.3 Character
char的包装类,主要用处用来判断和转换单个字符.
static boolean isDigit(char ch)
确定指定字符是否为数字。
static boolean isLetter(char ch)
确定指定字符是否为字母。
static boolean isLowerCase(char ch)
确定指定字符是否为小写字母。
static boolean isUpperCase(char ch)
确定指定字符是否为大写字母
static char toLowerCase(char ch)
使用取自 UnicodeData 文件的大小写映射信息将字符参数转换为小写。
static char toUpperCase(char ch)
使用取自 UnicodeData 文件的大小写映射信息将字符参数转换为大写。
package com.qf.api;/* --- 天道酬勤 --- @author QiuShiju* @desc*/
public class Demo3_Character {public static void main(String[] args) {char c = 'A';// 判断是否是字母System.out.println(Character.isLetter(c));// 判断是否是数字System.out.println(Character.isDigit(c));// 判断是否是大写字母System.out.println(Character.isUpperCase(c));// 判断是否是小写字母System.out.println(Character.isLowerCase(c));// 转成大写System.out.println(Character.toUpperCase('a'));System.out.println(Character.toLowerCase('A'));}
}
五、数学和随机
6.1 Math
Math提供了一些列数学运算,如初等指数、对数、平方根和三角函数。
方法都是静态的,直接通过类名调用,将构造方法私有了,不能创建对象的!
static double
PI
比任何其他值都更接近 pi(即圆的周长与直径之比)的double
值。static double E 比任何其他值都更接近 e(即自然对数的底数)的
double` 值。
static int abs(int a)
返回 int 值的绝对值。
static double ceil(double a)
返回最小的(最接近负无穷大)double 值,该值大于等于参数,并等于某个整数。
static double floor(double a)
返回最大的(最接近正无穷大)double 值,该值小于等于参数,并等于某个整数。
static double max(double a, double b)
返回两个 double 值中较大的一个。
static double pow(double a, double b)
返回第一个参数的第二个参数次幂的值。
static double random()
返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。
static long round(double a)
返回最接近参数的 long。
public static void main(String[] args) {// 返回 int 值的绝对值。System.out.println(Math.abs(-1));// 1// static double ceil(double a)// 返回最小的(最接近负无穷大)double 值,该值大于等于参数,并等于某个整数。// 向上找最小System.out.println(Math.ceil(11.2));// 12.0// static double floor(double a)// 返回最大的(最接近正无穷大)double 值,该值小于等于参数,并等于某个整数。// 向下找最大System.out.println(Math.floor(11.2));// 11.0// static double max(double a, double b)// 返回两个 double 值中较大的一个。System.out.println(Math.max(1,2) );// static double pow(double a, double b)// 返回第一个参数的第二个参数次幂的值。System.out.println(Math.pow(2,3));// 8System.out.println(Math.pow(2,0.5));// 根号2// 开平方根System.out.println(Math.sqrt(5) );// static double random()// 返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。System.out.println(Math.random() );// static long round(double a)// 返回最接近参数的 long。// 四舍五入System.out.println(Math.round(1.4));System.out.println(Math.round(1.5));// 随机返回1-10System.out.println(Math.round(Math.random()*10 ));}
6.2 Random
随机数生成器.
构造方法
Random() 创建一个新的随机数生成器。
Random(long seed)
使用单个 long 种子创建一个新的随机数生成器。 (后续创建出的随机数固定)
方法
int nextInt()
返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的 int 值。 (正负21亿之间随机)
int nextInt(int n)
返回一个伪随机数,它是取自此随机数生成器序列的、在 0(包括)和指定值(不包括)之间均匀分布的 int 值。
public static void main(String[] args) {Random random = new Random( );Random random2 = new Random(1);// 返回写一个随机整数int i = random.nextInt( );int i2 = random2.nextInt( );System.out.println(i );System.out.println(i2 );// 返回0-n之间的数据int x = random.nextInt(10);System.out.println(x );System.out.println("-----------" );// 摇色子System.out.println(random.nextInt(6)+1 );// 产生4位随机数String code = "";for (int j = 1; j < 7; j++) {int n = random.nextInt(10);code += n;}System.out.println("验证码:" + code );// 思考题: 产生随机数,要包含大写,小写和数字// 练习题: 设计方法,随机输出一人名字,来回答问题// 数组存人名,随机当下标}
六、总结
重点: 要知道为什么重写equals 和tosting, 以及怎么重写?int 和 String 之间相互转换的方法装箱拆箱
熟悉Character,Math,Random