JavaSE06 Java常用类

一、object类

Object类是一个特殊的类,它是所有类的父类,是JAVA类层中的最顶层类,java.lang.Object类

1、Object类的常用方法

(1)toString()方法:将一个对象返回为字符串形式
(2)getClass()方法:返回对象执行时的Class实例,然后使用此实例调用getName()方法可以取得类的名称
(3)hashCode()方法:返回对象在内存中地址转换成的一个int值(可以就当做地址看),也就是说全局唯一的
(4)clone()方法:克隆
(5)equals()方法:判断值是否相等

2、equals 和 == 的区别

(1)== 是判断两个变量或实例是不是指向同一个内存空间;equals是判断两个变量或实例所指向的内存空间的值是不是相同
(2)== 是指对内存地址进行比较; equals()是对字符串的内容进行比较
(3)== 指引用是否相同; equals()指的是值是否相同

通俗点讲:==是看看左右是不是一个东西。equals是看看左右是不是长得一样

3、clone()方法的使用

clone方法作用对象是类。对于复制对象,首先要分配一个和源对象同样大小的空间,在这个空间中创建一个新的对象。

(1)java中创建对象的两种方式:

  • 使用new操作符创建一个对象
  • 使用clone方法复制一个对象

创建对象的过程是解析new关键字后的类型->根据类型分配内存->调用类的构造函数初始化类结构->完成
Clone方法复制对象的过程是根据调用对象的类型分配内存->根据调用对象的结构去填充内存->完成

(2)浅克隆和深克隆

对于浅克隆,只是对象的引用得到的复制;如果对象中存在其他对象的引用,使用浅复制后,源对象和复制后的对象中对其他对象的引用会指向同一个内存地址。如果要完全把两个对象在内存中分开,必须使用深克隆。
浅克隆和深克隆
继承自java.lang.Object类的clone()方法是浅复制, 在编写程序时要注意

(3)实现深克隆
对于Java自己的类库,Clone方法是自动实现的,我们自己写的类要想实现深克隆,就必须实现Cloneable中的clone()方法

public class Computer implements Cloneable {
.	.....................
	@Override
	protected Object clone() throws CloneNotSupportedException {
			return super.clone();
		}
}

二、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、包装类和基本数据类型的关系
基本数据类型包装类
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean
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(); // 再创建
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值