Java常用类与常用方法

一. Object类

二. Scanner类

三. String,StringBuffer与StringBuilder

四. Calendar日历类

五. Date日期类

六. Math数学运算工具类

七. Random随机数类

八. System类

九. 基本类型的包装类

十. 内部类

一. Object类

java语言中所有的类都默认继承于Object类,俗称上帝类;

常用方法:
  1. getClass() :
    public final Class<?> getClass()
    返回此对象运行时类的 Class 对象。即当前正在运行的类的class字节文件对象;
    如:在一个学生类中使用getClass()方法:
package gwew;
public class Student {
	public static void main(String[] args) {
		Student student = new Student();
		System.out.println(student.getClass());
	}
}

//输出结果: class gwew.Student

其结果为:class 包目录.类名

  1. hashCode()
    public int hashCode()
    返回该对象的哈希码值;可以理解为类似地址值的数据,实际不是;
package gwew;

public class Student {
	public static void main(String[] args) {
		Student student = new Student();
		System.out.println(student.hashCode());
	}
}
//输出结果:2018699554
//是一个int类型的随机数据
  1. equals()
    public boolean equals(Object obj)
    用来比较两个类型相同的数据是否相等;在Object类和我们自定义的类中,equals()方法没有重写,比较的是内容是否相等;
    但是在其子类,基本上官方写好的常用类都已经重写了equals()方法,比较的是其地址值中存储的内容是否相等;
package gwew;

public class Student {
	public static void main(String[] args) {
		Student s1 = new Student();
		Student s2 = new Student();
		Student s3= s2;
		System.out.println(s1.equals(s2));//输出结果:false
		System.out.println(s3.equals(s2));//输出结果:true
	}
}

由于Student类的equals方法没有重写,比较的是地址值是否相等;new的对象,每一个都会在堆中开辟一个空间,所以第一个地址值不相等;而S3=S2,将s2的地址赋值给S3,地址相等所以输出是true;

  1. toString();
    public String toString()
    应该返回一个表示当前对象信息的字符串;但是Object中没有重写toString()方法,返回的是一个如下的字符串;
    gwew.Student@7de26db8
    但是在其官方的子类基本都重写了改方法,返回的是一个表明自己信息的字符串;

二. Scanner类

java.util.Sanner:
Scanner是简单文本扫描器,用于从文本获取数据;我们常用的是从键盘获取数据;

常用方法:
  1. Scanner(InputStream source)
    构造方法之一,用来从键盘输入数据,其形参通常用System.in返回;
    public static final InputStream in
    System类中的一个字段,表示标准输入流,其返回结果是一个InputStream 类型的数据;
  2. hasNextXxx()
    public boolean hasNextInt()
    public boolean hasNextLine()
    public boolean hasNextShort()
    public boolean hasNextDouble()
    判断下一个接收到的数据是否为指定类型,是返回true,通常用于键盘输入时的类型判断;
  3. nextXxx()
    public int nextInt()
    public String nextString()
    public short nextShort()
    public double nextDouble()
    public long nextlong()
    返回一个接收到的指定数据类型的数据,如果接收到的数据与方法不匹配会报错,通常与hasNextXxx()连用;如下:
package gwew;

import java.util.Scanner;

public class Student {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int a = 0;
		if (sc.hasNextInt()) {
			a = sc.nextInt();
		}
	}
}

四. Calendar日历类

java.util.Calendar

Calendar是一个抽象类,提供了获取年,月,日,时分秒等等相关日历时间.

Calendar类的构造方法是私有的,但是它的getInstance()静态方法可以返回一个具体的子类,间接的实例化.

虽然与单例模式获得对象的方式一样但是Calender并不是单例设计模式.

public static Calendar getInstance()

其默认时间就是当前系统的时间;

  • Calendar中常用静态字段:
字段field说明
YEAR
MONTH月//注意:Calendar中的月份是0~11,获得结果+1为当前月份
Date/DAY_OF_MONTH一个月中的第几天
DAY_OF_WEEK一个星期中的第几天
HOUR_OF_DAY一天中的第几个小时
HOUR上午或下午的第几个小时
MINUTE分钟
  • Calendar中常用方法:
字段field说明
public int get(int field)获取日历字段的内容.
public void set(int field, int value)修改指定字段的内容.
public void set(int year, int month, int date)方法重构,修改年月日
public void set(int year, int month, int date, int hourOfDay, int minute)方法重构,修改月日时分
public abstract void add(int field, int amount)为指定字段设置偏移量
public final Date getTime()获取当前日历的时间,单位为Date
public final void setTime(Date date)设置当前日历的时间,单位为Date
public long getTimeInMillis()获得当前日历的毫秒值
public void setTimeInMillis(long millis)设置当前日历的毫秒值
public class CalendarDemo {
	
	public static void main(String[] args) {
		Calendar c = Calendar.getInstance() ; //这个方法中:return new 抽象类的子类();
		int year = c.get(Calendar.YEAR) ;//	public static final int YEAR:年
		int month = c.get(Calendar.MONTH) ;
		int date = c.get(Calendar.DATE) ;
		System.out.println(year+"-"+(month+1)+"-"+date);
	}
}

五. Date日期类

java.util.Date
Date日期类,一个特定的瞬间,精确到毫秒.

  • 常用方法:
方法说明
public Date()获取当前系统的时间,类型为Date
public Date(long date)用指定的long类型构造一个Date
public long getTime()将Date类型的时间转化为long类型
public long setTime()设置此日期,单位为毫秒值

Date日期类主要用于获取系统的时间,与Calendar相比功能弱一点,在获取时间方面,官方推荐使用Calendar类.Date类很多方法都已过时.

我觉得Date主要用于简单的日期操作,在需求简单时,使用Date类就可以完成时,没必要去选择Calender类时,使用Date类.不过Date类可以完成的功能,Calender类都可以完成.

Date与String的相互转换,需要利用Format抽象类作为中介,Format抽象类提供了敏感环境语言与String类的格式转换,如消息,日期,数字.至于什么是敏感环境语言,我也不太清楚.

我们要使用的是Format的子类,DateFormat类来进行日期和文本的转换,而DateFormat的子类,SimpleDateFormat是用与语言环境有关的方式来解析

Format类有几个重要的方法:

方法说明
public final String format(Object obj)将其他类型的数据转化为字符串类型,按照调用者的格式.
public Object parseObject(String source)将给定格式的字符串转换为其他类型

DateFormat类的方法

方法说明
public final String format(Date date)将日期类型转化为字符串类型,按照调用者的格式.
public Date parse(String source)将给定格式的字符串转换为日期类型
  1. 格式化:Date类转化为文本格式
    1)按照自定义的字符串格式创建SimpleDateForma对象;
    2)使用这个对象调用format()方法,返回值就是String格式
SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd");

String s =sdf.format(new Date());
  1. 解析:将字符串解析为Date类型
    1)按照自定义的格式创建一个SimpleDateFormat类对象
    2)使用这个对象调用parse方法,返回值为Date类型的数据

注意:自定义的格式与parse中的字符串参数格式必须一致

SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd");

Date date = sdf.parse("2020-08-17");

六. Math数学运算工具类

作为一个工具类,提供的方法都是静态的,数学运算工具类,提供了实用的数学运算方法.

方法说明
public static int abs(int a)绝对值
public static double ceil(double a)向上取整
public static double floor(double a)向下取整
public static int max(int a, int b)取两个数据的较大值
public static int min(int a, int b)取两个数据的较小值
public static double pow(double a, double b)a的b次幂
public static double sqrt(double a)对一个正整数开平方根
public static long round(double a)四舍五入
public static double random()0.0-1.0之间的随机数(不包含1.0) (使用居多)

Math.random()方法获取一个10到20的随机数:

int  n =(int)(10+Math.random()*(20-10+1));

七.
Random随机数类

Random类用于生产各种类型的随机数,但是只能设置上限,不能设置下限,也就是下限固定为0.
Random类常用方法

方法说明
public Random()构造方法
public int nextInt(int n)随机生产一个数,范围为[0,n);
public double nextDouble()随机生产一个数,范围为[0,n);

Random类生产一个0到20的随机数:

Random r =new Random();
int n =r.nextInt(20+1);

八. System类

System 类不能被实例化,它包含一些有用的类字段和方法.

字段说明
public static final PrintStream err标准错误流
public static final InputStream in标准输入流
public static final PrintStream out标准输入流
方法说明
public static void gc()手动开启垃圾回收器,jvm会将内存中不用的对象给回收掉,实质调用finalize()方法
public static void exit(int status)终止当前运行的java虚拟机
public static long currentTimeMillis()返回当前系统的毫秒值
public static void arraycopy(Object src,int srcPos,Object dest,int destPos, int length)从指定源数组中的某个位置开始到指定目标数组的某个位置结束,指定多个长度

arraycopy参数代表的意义:

  • 参数1:源数组对象
  • 参数2:源数组中的某个索引值
  • 参数3:目标数组对象
  • 参数4:目标数组对象的某个索引值
  • 参数5:复制的长度

九. 基本类型的包装类

  1. Integer
    Integer 提供了与字符串相互转换的方法
字段说明
MAX_VALUE它表示 int 类型能够表示的最大值。
MIN_VALUE它表示 int 类型能够表示的最小值。
方法说明
public static int parseInt(String s)将字符串转换为int类型
public static Integer valueOf(String s)将字符串转换为Integer对象
int n = Integer.parseInt("100");
Integer ng = Integer.valueOf("100");
  1. Character

Character类提供了字符判断功能

方法说明
public static boolean isDigit(char ch)判断当前字符是否为数字字符
public static boolean isUpperCase(char ch)判断当前字符是否为大写字母字符
public static boolean isLowerCase(char ch)判断当前字符是否为小写字母字

十. 内部类

  • 内部类是定义在类中的类,分为成员内部类,局部内部类,静态内部类 和匿名内部类

1.成员内部类

  • 成员内部类定义在类中的成员位置;
  • 成员内部类中的对象可以随心所欲的访问外部类的成员;
  • 成员内部类中的变量名如果和外部类中的变量名相同的话,会发生隐藏现象;this.变量名 访问的是内部类的变量; 外部类名.this.变量名; 访问的是外部类的成员变量;
  • 外部类的方法要访问内部类的成员时,需要创建对象,用对象去访问.
    Inner i=new Inner();
  • 在其他类去创建成员内部类对象时,需要提前创建一个外部类对象:
    外部类名.内部类名 对象名 = 外部类对象().内部类对象();
    Outter.Inner i = new outter.new Inner();

2.局部内部类

  • 局部内部类是定义在类的方法中的类
  • 局部内部类可以直接访问外部类的成员,包括私有;
  • 局部内部类访问局部变量时,需要加上final修饰,否则编译失败;
    (局部变量随着方法调用完毕而消失,而当前这个局部变量被局部内部类的对象访问,在堆内存中对象不会被立即回收,它还在继续使用这个局部变量,需要将这个变量定义为常量,常驻内存,以便局部内部类对象对该局部变量的访问)
  • 局部内部类类似成员变量,不可以加 public、protected、private 以及 static 修饰符
  • 外部类的方法如果要访问局部内部类的成员,依然要创建局部内部类的对象;
  • 其他类不能直接访问局部内部类,但是可以通过创建外部类对象,调用局部内部类所在的方法;

3.静态内部类

  • 静态内部类是成员内部类加上static 修饰符后的类

  • 静态内部类只能访问外部类的静态成员;

  • 同样静态变量和方法不可以定义在成员内部类中,但是可以定义在静态内部类中;

  • 静态内部类类似于静态方法,不需要依靠外部类的对象;在没有外部类对象的时候依然可以创建静态内部类对象

  • 其他类创建静态内部类的对象:
    外部类名.内部类名 对象名 = new 外部类名.内部类名() ;
    Outer.Inner i = new Outer.Inner() ;

4.匿名内部类

  • 匿名内部类是局部内部类的一种简化形式;
  • 匿名内部类是唯一一种没有构造器的类
  • 匿名内部类的语法:
    new 接口名(){
    重写方法;
    };
  • 其中接口名可以换成抽象类名;匿名内部类实际上是接口的子实现类的对象,使用匿名内部类可以省略子实现类;
  • 匿名内部类经常用于方法参数的传递,或者接口的方法重写并调用;
  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值