Gointerface接口声明实现及作用详解
358
2022-11-06
【Java】常用类 总结
文章目录
JAVA 常用类总结
一、String 和 StringBuffer类
1.1 String类的初始化1.2 String类常见的操作方法1.3 StringBuffer类
二、System 和 Runtime类
2.1 System类2.2 Runtime类
三、Math 和 Random类
3.1 Math类3.2 Random类
四、包装类、日期类的使用
4.1 包装类4.2 日期类
4.2.1 Data类4.2.2 Calendar类4.2.3 JDK 8——新增日期与时间类(了解为主)
五、日期、时间格式器的使用
5.1 格式化类
5.1.1 DateFormat类5.1.2 SimpleDateFormat类5.1.3 DateTimeFomatter类
JAVA 常用类总结
一、String 和 StringBuffer类
字符串是指一串连续的字符,有许多单个字符组成。字符串中可以包含各种字符,但是必须写在 “ ” 内。Java中定义了String 和 StringBuffer类来封装字符,并且均位于java.lang包中,可以直接使用。
1.1 String类的初始化
1.使用字符串常量直接初始化String对象
String 变量名 = 字符串;String str1 = null;String str2 = "";String str3 = "abc";
2.使用String的构造方法初始化String对象
String 变量名 = new String(字符串);
当为具体字符串时,会使用String类的不同参数类型的构造方法(常见3种)来初始化字符串对象。
public class Example{ public static void main(String[] args){ //创建一个空的字符串 String str1 = new String(); //空 //创建一个“abc”字符串 String str2 = new String("abc"); //abc //创建一个内容为字符数组的字符串 char[] charArray = new char[]{'a','b','c'} //abc String str3 = new String(charArray); }}注意: 连接字符串就可以用 + 号来表示,例如 "a"+"b" 就是合并一起生成的新字符串"ab". 在java中,如果 + 号的两边操作数有一个为String类型,那么 +
返回顶部
1.2 String类常见的操作方法
在指定子字符串输出位置时,输出的是字符串第一个字符对应的索引,例如:s.indexOf(“ab”) 返回的是a的索引,反过来也一样。
转换操作主要涉及:字符串转换成字符数组、大小写转换、String数据类型与其他类型数据转换。其中的valueOf()方法还有许多重载方法,支持其他基本类型的数据转换。
trim() 方法 用于去除字符串首尾的空格,若想去除字符串中间的空格,只能通过replace()方法匹配实现;
replace() 方法
在程序中可以通过 “==” 和 equals() 两种方式对字符串进行比较,但是两种方式有区别:equals() 方法用于比较两个字符串中的字符的值是否相等, “==” 方法用于比较两个字符串对象的内存地址是否相同。
对于两个字符串对象,当他们的字符值完全相同时,使用equals判断会是true,但是使用“==”方法时,结果一定为false,因为两个字符串对象,每个在创建时,在堆内存区会创建两个字符串对象,每个对象具有唯一内存地址。
但是对于两个字符串常量来说,就不一样了,字符串常量池中的字符串具有唯一性,两个相同的字符串常量引用指向字符串常量池中的同一个区块,即内存地址相同。
可以参考本人博客:Java.常用类.String 、Java.常用类.StringBuffer和StringBuilder ~(顿号前后两篇 ฅ( ˃̶˙ω˙˂̶ ฅ))
注意字符串下标从0开始!!!
返回顶部
1.3 StringBuffer类
在Java中,由于String类是final类型的,所以使用String定义的字符串是一个常量,因此它一旦创建,其内容和长度是不可改变的。如果需要对一个字符串进行修改,则只能创建新的字符串。解决方法:可以使用StringBuffer类(也称字符串缓冲区)来操作字符串。说明:StringBuffer类和String类最大的区别在于它的内容和长度都是可以改变的。StringBuffer类似一个字符容器,当在其中添加或删除字符时,所操作的都是这个字符容器,因此并不会产生新的StringBuffer对象。
StringBuffer类常用方法:
提示:此处的 setcharat() 在某种程度上可以相等于 replace() 方法!!!
返回顶部
二、System 和 Runtime类
2.1 System类
System类定义了一些与系统相关的属性和方法,它所提供的属性和方法都是静态的,因此,想要引用这些属性和方法,直接使用System类调用即可。
System类常用方法:
利用 getProperties() 获取系统属性,并将其键、值分离:
利用 System.currentTimeMillis() 获取当前系统时间,计算程序运行所需时间:
从srcArry数组下标为2的开始,数四个复制;复制到desArray数组,从下标0开始。
返回顶部
2.2 Runtime类
定义:Runtime类用于表示Java虚拟机运行时的状态,它用于封装Java虚拟机进程。说明:每次使用“java”命令启动Java虚拟机时都会对应一个Runtime实例,并且只有一个实例,应用程序会通过该实例与其运行时的环境相连。注意:Runtime类中提供了一个exec()方法,该方法用于执行一个DOS命令,从而实现和在命令行窗口中输入DOS命令同样的效果。.应用程序不能创建自己的Runtime实例,但是可以通过getRuntime()方法获取对象Runtime run = Runtime.getRuntime();
通过Runtime.getRuntime() 获取一个Runtime的实例对象,并分别调用它的availableprocessors()、freeMemory()、maxMemory()方法得到当前虚拟机的处理器个数、空闲内存数、可用最大内存。
Runtime类提供的exec() 方法,用于执行DOS命令,实现效果与在命令行窗口同样的效果。通过运行“notepad.exe"打开自带的记事本。
exec() 方法还会同时返回一个Process对象,通过该对象可以对产生的进程管理,只需要调用destroy() 方法即可关闭当前进程。
返回顶部
三、Math 和 Random类
3.1 Math类
Math类是一个工具类,主要用于完成复杂的数学运算,如求绝对值、三角函数、指数运算等。由于Math类的构造方法被定义成private,因此无法创建Math类的对象。Math类中的所有方法都是静态方法,可以直接通过类名来调用它们。 除静态方法外,Math类中还有两个静态常量PI和E,分别代表数学中的π和e。
注意:round() 方法会对某个小数进行四舍五入,此方法会将小数点后面的数字全部忽略,返回一个int类型数据,而ceil()、floor() 方法返回的都是double类型的数,该数在数值上等于一个整数。
返回顶部
3.2 Random类
在JDK的java.util包中,有一个Random类,它可以在指定的取值范围内随机产生数字。
Random类的两个构造方法:
通过第一个方法创建的random对象每次使用的种子是随机的,因此每次产生的随机数是不一样的;通过第二个方法创建的random对象可以保证创建的多个random实例对象产生相同序列的随机数,利用这一点可以实现代码的复现。Random类——常用方法:
返回顶部
四、包装类、日期类的使用
4.1 包装类
虽然java是面向对象编程,但是它所包含的8中基本数据类型却不支持面向对象的编程机制(无属性、方法),因为很多类的方法都需要接受引用类型的对象,此时无法将基本数据类型的值传入,所以引入包装类的概念,通过这些包类可以将基本数据类型的值包装为引用数据类型的对象。
自动装箱(Autoboxing):是指将基本数据类型的变量赋给对应的包装类变量;(从右往左看)
自动拆箱(AutoUnboxing):是指将包装类对象类型直接赋给一个对应的基本数据类型变量。(从右往左看)
基本数据类型、基本数据包装类以及字符串之间的相互转换:
通过引用数据类型字符串String类的valueOf()方法可以将8种基本数据类型转换为对应的字符串类型;通过8种包装类的静态方法valueOf()既可以将对应的基本数据类型转换为包装类,也可以将变量内容匹配的字符串转换为对应的包装类(Character包装类除外);通过8种包装类的有参构造方法同样既可以将对应的基本数据类型转换为包装类,也可以将变量内容匹配的字符串转换为对应的包装类(Character包装类除外);通过8种包装类的静态方法parseXxx()可以将变量内容匹配的字符串转换为对应的基本数据类型;包装类都重写了Object类中的toString()方法,以字符串的形式返回被包装的基本数据类型的值。
使用valueOf(String s)和parseXxx(String s)方法注意事项:(类型匹配)
除了Character外,包装类都有valueOf(String s)方法,可以根据String类型的参数创建包装类对象,但参数字符串s不能为null,而且字符串必须是可以解析为相应基本类型的数据,否则虽然编译通过,但运行时会报错。
Integer i = Integer.valueOf("123"); // 合法Integer i = Integer.valueOf("12a"); // 不合法
除了Character外,包装类都有parseXxx(String s)的静态方法,将字符串转换为对应的基本类型的数据。参数s不能为null,而且同样必须是可以解析为相应基本类型的数据,否则虽然编译通过,但运行时会报错。
int i = Integer.parseInt("123"); // 合法 Integer in = Integer.parseInt("itcast"); // 不合法
返回顶部
4.2 日期类
4.2.1 Data类
在JDK的java.util包中,提供了一个Date类用于表示日期和时间。随着JDK版本的不断升级和发展,Date类中大部分的构造方法和普通方法都已经不再推荐使用。 目前JDK8中,Date类只有两个构造方法是可以使用的:Date():用来创建当前日期时间的Date对象。Date(longdate):用于创建指定时间的Date对象,其中date参数表示1970年1月1日0时0分0(称为历元)以来的毫秒数,即时间戳。
返回顶部
4.2.2 Calendar类
Calendar类用于完成日期和时间字段的操作,它可以通过特定的方法设置和读取日期的特定部分 * 比如年、月、日、时、分和秒等。Calendar类是一个抽象类,不可以被实例化。 * 在程序中需要调用其静态方法getInstance()来得到一个Calendar对象,然后才能调用其相应的方法。
Calendar类——常用方法:
get() 方法中的field参数接受Calendar中定义的常量值(年、月、日、时、分、秒)
特别注意这里的月份是从0开始的
根据指令设置或修改某个时间,假设某一工程开始的时间是2018年1月1日,设100天后竣工,求竣工时的日期:
返回顶部
4.2.3 JDK 8——新增日期与时间类(了解为主)
为了满足更多的需求,JDK 8中新增了一个java.time包,在该包下包含了更多的日期和时间操作类
package com.itheima;import java.time.*;public class Example23 { public static void main(String[] args) { // 1、Clock的使用 Clock clock = Clock.systemUTC(); System.out.println("获取UTC时区转换的当前时间:" + clock.instant()); System.out.println("获取UTC时区转换的的毫秒数:" + clock.millis()); // 2、Duration的使用 Duration d = Duration.ofDays(1); System.out.println("一天等于" + d.toHours() +"小时"); System.out.println("一天等于" + d.toMinutes() +"分钟"); System.out.println("一天等于" + d.toMillis() +"秒"); // 3、Instant的使用 Instant instant = Instant.now(); System.out.println("获取UTC时区的当前时间为:" + instant); System.out.println("当前时间一小时后的时间为:" + instant.plusSeconds(3600)); System.out.println("当前时间一小时前的时间为:" + instant.minusSeconds(3600)); // 4、LocalDate的使用 LocalDate localDate = LocalDate.now(); System.out.println("从默认时区的系统时钟获得当前日期:" + localDate); // 5、LocalTime的使用 LocalTime localTime = LocalTime.now(); System.out.println("从默认时区的系统时钟获取当前时间:" + localTime); // 6、LocalDateTime的使用 LocalDateTime localDateTime = LocalDateTime.now(); System.out.println("从默认时区的系统时钟获取日期、时间:" + localDateTime); LocalDateTime times = localDateTime.plusDays(1) .plusHours(3).plusMinutes(30); System.out.println("当前的日期、时间加上1天3小时30分之后:" + times); // 7、Year、YearMonth、MonthDay的使用 Year year = Year.now(); System.out.println("当前年份为:" + year); YearMonth yearMonth = YearMonth.now(); System.out.println("当前年月为:" + yearMonth); MonthDay monthDay = MonthDay.now(); System.out.println("当前月日为:" + monthDay); // 8、 获取系统默认时区 ZoneId zoneId = ZoneId.systemDefault(); System.out.println("当前系统默认时区为:" + zoneId); }}
返回顶部
五、日期、时间格式器的使用
5.1 格式化类
5.1.1 DateFormat类
作用:DateFormat类专门用于将日期格式化为字符串或者将用特定格式显示的日期字符串转换成一个Date对象。说明:DateFormat是一个抽象类,不能被直接实例化,但它提供了一系列的静态方法来获取DateFormat类的实例对象,并能调用其他相应的方法进行操作。
DateFormat类——常用方法:
DateFormat类——常用常量
利用DateFormat提供的parse(String source) 方法,将字符串类解析成Date对象。
返回顶部
5.1.2 SimpleDateFormat类
在使用DateFormat对象的parse()方法将字符串解析为日期时,需要输入固定格式的字符串,这显然不够灵活。为了能够更好地格式化日期、解析字符串,Java中提供了一个SimpleDateFormat类。说明:SimpleDateFormat类是DateFormat类的子类,它可以使用new关键字创建实例对象。在创建实例对象时,它的构造方法需要接收一个表示日期格式模板的字符串参数。
使用SimpleDateFormat类将日期对象以特定的格式转为字符串形式:
SimpleDateFormat sdf = new SimpleDateFormat("Gyyyy年MM月dd日:今天是yyyy年的第D天,E"); System.out.println(sdf.format(new Date())); 公元2020年09月13日:今天是2020年的第257天,星期日
使用SimpleDateFormat类将一个指定日期格式的字符串解析为Date对象:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); String str = "2018/01/27"; System.out.println(sdf.parse(str)); Sat Jan 27 00:00:00 CST 2018
返回顶部
5.1.3 DateTimeFomatter类
JDK 8在java.time.format包下还提供了一个DateTimeFormatter类,该类也是一个格式化类,其功能相当于DataFormat和SimpleDateFormat的合体,它不仅可以将日期、时间对象格式化成字符串,还能将特定格式的字符串解析成日期、时间对象。 要使用DateTimeFormatter进行格式化或者解析,就必须先获得DateTimeFormatter对象。
DateTimeFomatter类——获取实例对象方式:
使用静态常量创建DateTimeFormatter格式器。在DateTimeFormatter类中包含大量的静态常量,如BASIC_ISO_DATE、ISO_LOCAL_DATE、ISO_LOCAL_TIME等,通过这些静态常量都可以获取DateTimeFormatter实例。使用不同风格的枚举值来创建DateTimeFormatter格式器。在FormatStyle类中定义了FULL、LONG、MEDIUM和SHORT四个枚举值,它们表示日期和时间的不同风格。根据模式字符串创建DateTimeFormatter格式器。
DateTimeFomatter类——基本使用:
1.完成日期、时间格式化
2.解析字符串
返回顶部
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~