一、object类
Object类是一个特殊的类,它是所有类的父类,是JAVA类层中的最顶层类,java.lang.Object类
1、Object类的常用方法
(1)toString()方法:将一个对象返回为字符串形式
(2)getClass()方法:返回对象执行时的Class实例,然后使用此实例调用getName()方法可以取得类的名称
(3)hashCode()方法:返回对象在内存中地址转换成的一个int值(可以就当做地址看),也就是说全局唯一的
(4)equals()方法:判断值是否相等
2、equals 和 == 的区别
(1)== 是判断两个变量或实例是不是指向同一个内存空间;equals是判断两个变量或实例所指向的内存空间的值是不是相同
(2)== 是指对内存地址进行比较; equals()是对字符串的内容进行比较
(3)== 指引用是否相同; equals()指的是值是否相同
通俗点讲:==是看看左右是不是一个东西。equals是看看左右是不是长得一样
二、Math类
Math类是一个很有用的数学帮助类,做数学运算等操作。
1、Math类的常用方法
(1)Math.abs 求绝对值
(2)Math.ceil 得到不小于某数的最大整数
(3)Math.floor 得到不大于某数的最大整数
(4)Math.max 求两数中最大
(5)Math.min 求两数中最小
(6)Math.random 返回0,1之间的一个随机数
2、UUID
- UUID 含义是通用唯一识别码 (Universally Unique Identifier),这是一个软件建构的标准。
- UUID 来作为数据库数据表主键是非常不错的选择,保证每次生成的UUID 是唯一的。
三、Date类
Date类用于表示日期和时间,java.util.Date
1、Date类的常见用法
(1)Date d = new Date():创建一个代表系统当前日期的Date对象
(2)Date(int year, int month, int day): 创建一个指定日期的Date对象
(3)int compareTo(Date anotherDate):比较两个日期的顺序。例:
//如果date2大于date返回 1 等于返回 0 小于 -1
System.out.println(date2.compareTo(date));
2、SimpleDateFormat 类
要想格式化时间或者把字符串转换为Date类,可以使用java.text.Dateformat抽象类规定日期格式化的操作,具体常用的实现是java.text.SimpleDateformat类
//日期转换为字符串
SimpleDateFormat sdformat = new SimpleDateFormat("yyy y-MM-dd HH:mm:ss");
String text = sdformat .format(new Date());
//把字符串转换为日期
String text = "2021年1月1日 1:11:11";
SimpleDateFormat sdformat= new SimpleDateFormat("yyyy年M月dd日 H:mm:ss");
Date date= sdformat.parse(text);
System.out.println("date = " + date);
3、Calendar类
抽象类 Calendar 提供了一组方法,允许把以毫秒为单位的时间转换成一些有用的时间组成部分。Calendar 不能直接创建对象,但可以使用静态方法 getInstance() 获得代表当前日期的日历对象
//根据当前的语言地区环境获取一个日历对象
Calendar c = Calendar.getInstance();
System.out.println(c);
System.out.println("获取年份:"+c.get(Calendar.YEAR));
System.out.println("获取月份:"+(c.get(Calendar.MONTH)+1));//月份0~11
System.out.println("获取日期(今天是该月的第几天):"+c.get(Calendar.DAY_OF_MONTH));
System.out.println("获取小时数(12小时制):"+c.get(Calendar.HOUR));
System.out.println("获取小时数(24小时制):"+c.get(Calendar.HOUR_OF_DAY));
System.out.println("获取分钟数:"+c.get(Calendar.MINUTE));
System.out.println("获取秒钟数:"+c.get(Calendar.SECOND));
System.out.println("获取毫秒数:"+c.get(Calendar.MILLISECOND));
System.out.println("获取当前是该年中的第几天:"+c.get(Calendar.DAY_OF_YEAR));
System.out.println("获取今天是周几:"+c.get(Calendar.DAY_OF_WEEK));
//将月份设置到6月份
c.set(Calendar.MONTH, 5);
//如何获取该月的总天数与该月第一天的周数?
//获取今年的总天数
System.out.println(c.getActualMaximum(Calendar.DAY_OF_YEAR));
//获取当前日历表示的该月份的最大天数(总天数)
System.out.println(c.getActualMaximum(Calendar.DAY_OF_MONTH));
//获取该月的第一天是周几?
//将日期设置到这个月的第一天
c.set(Calendar.DAY_OF_MONTH, 1);
System.out.println("获取今天是周几:"+c.get(Calendar.DAY_OF_WEEK));
四、String类
1、String 、StringBuffer、StringBuilder
String:(1)不可变性,底层是final修饰的char[]数组,private
final char value[] ;(2)常量,不可变,所以线程安全;
StringBuffer:(1)可变性,可以使用append()方法;(2)多线程数据量较大;(3)效率低,安全。对方法加了同步锁或者对调用的方法加了同步锁,所以是线程安全的,
StringBuilder:(1)可变性,可以使用append()方法;(2)单线程数据量较大;(3)效率高,不安全。StringBuilder 并没有对方法进行加同步锁,所以是非线程安全的。
对于三者使用的总结:
- 操作少量的数据 = String
- 单线程操作字符串缓冲区下操作大量数据 = StringBuilder
- 多线程操作字符串缓冲区下操作大量数据 = StringBuffer
2、String 的常用方法
- length()字符串的长度
- charAt() 截取一个字符
- equals()和equalsIgnoreCase() 比较两个字符串
- compareTo()和compareToIgnoreCase() 比较字符串
- concat() 连接两个字符串
- replace() 替换
- toUpperCase() /toLowerCase() 转换为大小写
- trim() 去掉起始和结尾的空格
3、String的使用
String str = "a" + 1 +2 结果为“a12”
String str = ‘a’+ 1 +2 结果为100
String str = 1 + 2 + "a" 结果为"3a"
4、String str="str"与 String str=new String("str")的内存分配
因为内存的分配方式是不一样的,
- String str="str"的方式,java 虚拟机会将其分配到常量池中;
- 而 String str=new String("str") 则会被分到堆内存中。
5、值传递和引用传递
- 值传递是对基本类型变量而言的,传递的是该变量的一个副本,改变副本不影响原来变量.
- 引用传递一般是对于对象型变量而言的,传递的是该对象地址的一个副本, 并不是原对象本身
一般认为,java内的基础类型数据传递都是值传递. java中实例对象的传递是引用传递
五、包装类
java语言是一个面向对象的语言,但是java中的基本数据类型却不是面向对象的,但是我们在实际使用中经常将基本数据类型转换成对象,便于操作,比如,集合的操作中,这时,我们就需要将基本类型数据转化成对象!
1、包装类和基本数据类型的关系
基本数据类型 | 包装类 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
2、自动装箱拆箱
Java 5 增加了自动装箱、拆箱机制,提供基本数据类型和包装类型的相互转换操作。
(1)自动装箱
自动装箱即自动将基本数据类型转换成包装类型
Integer i2 = Integer.valueOf(8);
// 自动装箱
Integer i3 = 8;
(2)自动拆箱
自动拆箱即自动将包装类型转换成基本数据类型
// 自动拆箱
int i4 = i3;
int i5 = i3.intValue();
六、file类
File类主要是JAVA为文件这块的操作(如删除、新增等)而设计的相关类
- 可以实现获取文件和目录属性等功能
- 可以实现对文件和目录的创建、删除等功能
1、file类的三种构造方法
(1)File(String path):如果 path 是实际存在的路径,则该 File 对象表示的是目录;如果 path 是文件名,则该 File 对象表示的是文件。
(2)File(String path, String name):path 是路径名,name 是文件名。
(3)File(File dir, String name):dir 是路径对象,name 是文件名。
使用任意一个构造方法都可以创建一个 File 对象,然后调用其提供的方法对文件进行操作
2、file类的常用方法
- createNewFile() //有则不创建 返回false,没有则创建 返回true
- delete() //删除成功 返回true ,失败返回false
- getAbsoluteFile() //返回绝对路径
- getPath() //返回相对路径
- getName() //返回文件名
- isFile() //是否为文件 boolean
- length //长度
- mkdir() //创建单层目录
- mkdirs() //创建多级目录
- delete() //只能删除空目录
- list() //返回一个字符串数组,命名由此抽象路径名表示的目录中的文件和目录。
- listFiles() //返回一个抽象路径名数组,表示由该抽象路径名表示的目录中的文件和目录。
3、file类的使用
(1)获取文件属性
public class Test0 {
public static void main(String[] args) {
String path = "C:/windows/"; // 指定文件所在的目录
File f = new File(path, "text.txt"); // 建立File变量,并设定由f变量引用
System.out.println("文件信息如下:");
System.out.println("============================================");
System.out.println("文件长度:" + f.length() + "字节");
System.out.println("文件或者目录:" + (f.isFile() ? "是文件" : "不是文件"));
System.out.println("文件或者目录:" + (f.isDirectory() ? "是目录" : "不是目录"));
System.out.println("是否可读:" + (f.canRead() ? "可读取" : "不可读取"));
System.out.println("是否可写:" + (f.canWrite() ? "可写入" : "不可写入"));
System.out.println("是否隐藏:" + (f.isHidden() ? "是隐藏文件" : "不是隐藏文件"));
System.out.println("最后修改日期:" + new Date(f.lastModified()));
System.out.println("文件名称:" + f.getName());
System.out.println("文件路径:" + f.getPath());
System.out.println("绝对路径:" + f.getAbsolutePath());
}
}
(2)创建和删除文件
public class Test {
public static void main(String[] args) throws IOException {
File f = new File("C:\\test.txt"); // 创建指向文件的File对象
if (f.exists()) // 判断文件是否存在
{
f.delete(); // 存在则先删除
}
f.createNewFile(); // 再创建
}
}