(一)Object类
Object类是所有类的父类,也就是说任何一个类在定义时如果没有明确地继承一个父类,那它就是Object类的子类,也就是说以下两种类定义的最终效果是完全相同的。
Object类的常用方法 | 说明 |
int hashCode() | 返回该对象的散列码值 |
String toString() | 返回该对象的字符串表示,默认返回运行时类名+@+对象的hashCode的16进制数 |
Object clone() | 创建与该对象的类相同的新对象 |
Class getClass() | 返回一个对象运行时的实例类(.class文件) |
void notify() | 激活等待在该对象的监视器上的一个线程 |
void wait() | 在其他线程调用此对象的 notify() 方法或 notifyAll() 方法前,导致当前线程等待 |
boolean equals(Object) | 比较两个对象是否相等。默认比较的是地址值。 |
(二)Math类
java.lang.Math类提供了常用的数学运算方法和两个静态常量E(自然对数的底数)和PI(圆周率)
import java.lang.Math;
public class Math01 {
public static void main(String[] args) {
//提供数学运算的功能
System.out.println(Math.abs(-8.7)); //求绝对值
System.out.println(Math.max(10,9)); //求最大值
System.out.println(Math.min(10,9)); //求最小值
//生成0.0-1.0之间的随机数
System.out.println(Math.random());
//生成0-9之间的随机数
int random=(int)(Math.random()*10);
System.out.println(random);
}
}
(三)Random类
import java.util.Random;
public class Random01 {
public static void main(String[] args) {
//创建随机数生成器
//随机数生成器的种子相同,每次生成的随机数是相同的
//随机数生成器的种子不同,每次生成的随机数是不同的
/*常用写法 1:Random random=new Random(); */
/*常用写法 2:Random random=new Random(时间的毫秒); */
Random random=new Random();
//生成随机数
System.out.println(random.nextInt()); //生成一个int范围内的随机整数
System.out.println(random.nextInt(10)); //生成一个0-10范围内的随机整数
}
}
(四)File类
- File类可以表示一个文件,还可以表示一个目录(Directory),所以我们可以在程序中用File 类的对象可以表示一个文件 或者 目录
- 当创建了 File 对象之后,我们可以利用该对象来对文件或者目录进行书属性修改:例如:文件的名称,修改日期的日期等等
- File 类的对象 还不能直接对文件进行读写操作,只能修改文件的属性
import java.io.File;
public class FileDemo {
public static void main(String[] args) {
File f1=new File("src\\aa.txt");
//相对路径,如果没有前面的src,就在当前目录创建文件
if(f1.exists()) {
System.out.println("文件已经存在");
}
System.out.println("文件已经存在:"+f1.exists());
System.out.println("文件的名字:"+f1.getName());
System.out.println("文件的路径:"+f1.getPath());
System.out.println("文件的绝对路径:"+f1.getAbsolutePath());
System.out.println("是目录吗:"+f1.isDirectory());
System.out.println("文件大小:"+f1.length());
}
}
(五)包装类
包装类把基本数据类型转换为对象,每个基本数据类型在java.long包中都有一个相应的包装类
包装类的作用
- 提供了一系列实用的方法
- 集合不允许存放基本数据类型,存放数字时,要用包装类型
包装类的构造方法
- 以每个包装类对应的基本数据类型作为参数
int iNum=9;
Integer i1=new Integer(iNum);
- 除Character类型外,以字符串作为参数(Character没有带字符串作为参数的构造方法)
Integer i2=new Integer("123");
System.out.println(i2+1); //124,而并非是1231.
- Boolean类型构造方法参数为String类型时,若该字符串内容为true(不考虑大小写),则该Boolean对象表示true,否则表示false
- 当Number包装类构造方法参数为String类型时,字符串不能为null,且该字符串必须可解析为相应的基本数据类型的数据,否则编译不通过,运行时会抛出NumberFormatException异常
包装类的常用方法
- XXXValue() —— 包装类转换为基本类型
Integer i=new Integer(100);
int iNum=i.intValue();
System.out.println(iNum); //100
- toString() —— 基本类型转换为字符串(更常用)
int s=100;
String sNum1=Integer.toString(s);
System.out.println(sNum1);
//也可简写为:
String sNum2=100+"";
- parseXXX() —— 字符串转换为基本类型(Character除外)(很常用)
String age="18";
int ageNum=Integer.parseInt(age);
- valueOf() —— 基本类型或字符串转换为包装类
//valueOf() —— 基本类型转换为包装类
//当包装类为Number时,参数字符串必须为数字兼容的字符串,NumberFormatException异常
int j=90;
Integer j1=Integer.valueOf(j);
char sex='女';
Character sex1=Character.valueOf(sex);
//valueOf() —— 字符串转换为包装类
//Boolean类型调用valueOf(字符串)时,若该字符串内容为true(不考虑大小写),
//则该Boolean对象表示true,否则表示false
String m="123";
Integer mi=Integer.valueOf(m);
装箱和拆箱
基本类型和包装类的自动转换
- 装箱:基本类型转换为包装类的对象
//基本数据类型-->包装类 自动转换——装箱
int j=90;
Integer j1=j;
System.out.println(j1);
- 拆箱:包装类对象转换为基本类型的值
//包装类-->基本数据类型 自动转换——拆箱
Integer i=new Integer(100);
int i1=i;
System.out.println(i1);
//集合中只能存取包装类型,不能存基本数据类型
// List list=new ArrayList();
// int num=100;
// Integer numInteger=new Integer(num);
// list.add(numInteger);
List list=new ArrayList();
list.add(100); //int 100————自动装箱为Integer
(六)时间日期
Date类
import java.util.Date;
//获取当前日期
Date date=new Date();
System.out.println(date);
//结果:Tue Mar 15 11:20:03 CST 2022
SimpleDateFormat
import java.text.SimpleDateFormat;
//定制日期格式:年 月 日 ~ 时 分 秒
Date date=new Date();
SimpleDateFormat formater =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateStr=formater.format(date);
System.out.println(dateStr);
//结果:2022-03-15 11:20:03
Calendar
- 抽象类,用于设置和获取时间或日期数据的特定部分
方法或属性 | 说明 |
int get(int field) | 返回给指定日历字段的值 |
MONTH | 指示月 |
DAY_OF_MONTH | 指示一个月中的某天 |
DAY_OF_WEEK | 指示一个星期中的某天 |
import java.util.Calendar;
Calendar c=Calendar.getInstance();
int year=c.get(Calendar.YEAR);
int month=c.get(Calendar.MONTH)+1;
int day=c.get(Calendar.DAY_OF_MONTH);
int week=c.get(Calendar.DAY_OF_WEEK)-1; //Sunday是1
System.out.print("今天是:"+year+"年"+month+"月"+day+"日");
System.out.println("-星期"+week);
//结果:今天是:2022年3月15日-星期2
练习
//计算2021-04-06是一年中的第几个星期
Calendar c= Calendar.getInstance();
c.set(Calendar.YEAR,2021);
c.set(Calendar.MONTH,4-1);
c.set(Calendar.DAY_OF_MONTH,6);
int n=c.get(Calendar.WEEK_OF_YEAR);
System.out.println("2021-04-06 是一年中的第"+n+"个星期");
//结果:2021-04-06 是一年中的第15个星期
(七)String类
length()
用来获取一个String对象的字符序列的长度
equals()
比较当前String对象的字符序列是否与参数s指定的String对象的字符序列相同
- equals():比较两个字符串内容是否相同————String类重写过该方法 == :比较两个字符串内存地址是否相等,比较两个字符串是否为同一对象
- 字符串对象创建问题(面试经常出题)
//以下代码创建了 1 个对象
String s1="Hello"; //此时s1指向字符串池中的"Hello"对象
String s2="Hello"; //此时s2指向字符串池中的"Hello"对象
System.out.println(s1.equals(s2)); //true
System.out.println(s1==s2); //true
//以下代码创建了 2 个对象
String s1="Hello";//此时s1指向字符串池中的"Hello"对象
String s2=new String("Hello");//此时s2指向堆中的"Hello"对象
System.out.println(s1.equals(s2)); //true
System.out.println(s1==s2); //false
//以下代码创建了 3 个对象
String s1="hello";//此时s1指向字符串池中的"hello"对象
String s2=new String("Hello");
//s2指向堆中的"Hello"对象;该行代码创建了2个对象,堆中的"Hello"对象和字符串池中的"Hello"对象
System.out.println(s1.equals(s2)); //false
System.out.println(s1==s2); //false
//以下代码创建了 4 个对象
String s1="hello";
//s1指向堆中的"hello"对象;该行代码创建了2个对象,堆中的"hello"对象和字符串池中的"hello"对象
String s2=new String("Hello");
//s2指向堆中的"Hello"对象;该行代码创建了2个对象,堆中的"Hello"对象和字符串池中的"Hello"对象
System.out.println(s1.equals(s2)); //false
System.out.println(s1==s2); //false
其他
- starts With(String s):判断当前String对象的字符序列前缀是否是参数指定的String对象s的字符序列
- compare To(String s):按字典序与参数指定的String对象s的字符序列比较大小
- contains(String s):判断当前String对象的字符序列是否包含参数s的字符序列
- indexOf(String s):从当前String对象的字符序列的0索引位置开始检索首次出现s的字符序列的位置,并返回该位置
- lastIndexOf(String s):从当前String对象的字符序列的0索引位置开始检索最后一次出现s的字符序列的位置,并返回该位置
- substring(int start,int end):获得一个新的String对象,新的String对象的字符序列是复制当前String对象的字符序列中的startpoint位置至最后位置上的字符所得到的字符序列
- trim():得到一个新String对象,新String对象的字符序列是当字符序列去掉两端空格后的字符序列
字符串拆分函数
split()——字符串拆分函数
public class StrMethods {
public static void main(String[] args) {
System.out.println("*原歌词*");
String song="长亭外 古道边 芳草碧连天";
System.out.println(song);
String[] songs=song.split(" ");
System.out.println("*按空格拆分后的歌词*");
for(String s:songs){
System.out.println(s);
}
}
}
StringBuffer
- 对字符串的频繁修改(如字符串连接)时,使用StringBuffer类可以大大提高程序执行效率
- StringBuffer声明
StringBuffer s = new StringBuffer();
StringBuffer s = new StringBuffer("aaa");
- StringBuffer使用
s.toString(); //转化为String类型
s.append("**"); //追加字符串
s.insert(1,"**"); //插入字符串
import java.util.Scanner;
//将一个数字字符串转换成逗号分隔的数字串,即从右边开始每隔三个数字用逗号分隔开
public class StringBufferDemo02 {
public static void main(String[] args) {
Scanner input= new Scanner(System.in);
System.out.println("输入一个字符串:");
String s = input.next();
StringBuffer a = new StringBuffer(s);
for (int i=a.length()-3;i>0;i=i-3){
a.insert(i,","); //在特定位置插入字符串
}
System.out.println(a);
}
}