JavaSE06 Java常用类

一、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(); // 再创建
    }
}

你可能感兴趣的:(JavaSE06 Java常用类)