JAVA笔记—常用类

得意时要看淡,失意时要看开。不论得意失意,切莫大意;不论成功失败,切莫止步。志得意满时,需要的是淡然,给自己留一条退路;失意落魄时,需要的是泰然,给自己觅一条出路JAVA笔记—常用类,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

目录

此笔记包含

Stirng类

 String的新特性

String的说明

String的实例化方式

字符串的连接(及内存分析)

JAVA1.6—1.8版本  常量池-perm的位置(内存解析)

一道面试题(理解String的不可变性)

String的常用方法

​编辑

 String与包装类,基本数据类型的转换方法

String和hcar【】型数组的转化

String和字节Byte之间的转化

 StringBuffer 、Stringbuilder 和 String

三者的异同

三者的效率对比

类Stringbuffer和 类Stringbuilder的常用方法

JAVA关于时间日期的API

JDK1.8 之前日期和时间的API

JAVA.lang.System类

JAVA中两个Date类的使用

Java.text.SimpleDateFormater类

Calendar 日历类—具有可变性

JDK1.8以后新的日期时间类

新时间类出现的背景:

 LocalDate , LocalTime , LocalDateTime的使用

 常用类—Instant(瞬时)

DateTimeFormatter—格式化日期时间

其他关于时间的API

 Java比较器

Comparable接口的使用举例:

自然排序:

举例

Comparator(定制排序) 

 定制规则比较compare

System类 

 Math类

 

BigInteger类

BigInteger类常用方法: 

 

BigDecimal类


此笔记包含

1 字符串相关类
2 JDK8之前的时间日期
3 JDK8中新时间日期API

Stirng类

 String的新特性

JAVA笔记—常用类

String的说明

 String:字符串,使用一对” “引起来表示。

1.String声明为final的,不可被继承。

2.String实现了Serializable接口:表示字符串是支持序列化的。

    实现了Comparable接口,表示String可以比较大小。

3.String内部定义了final char[ ] value用于存储字符串数据。

4.String:代表不可变序列。简称:不可变性。

        体现:1.当对字符串重新赋值时,需要重新写指定区域赋值,不能使用原有的

                       value进行赋值。

                    2.当对现有的字符串进行连接操作时,也需要重新指定内存区域赋值,

                        不能使用原有的value赋值。

                     3.当调试String的replace()方法修改指定字符或字符串时,也需要重

                        新指定内存区域中存放的值。

5.通过字面量的方式(区别于new)给一个字符串赋值,此时的字符串声明在字符

串常量池中(new的方式是放在堆空间中)。

6.字符串常量池中是不会存储相同内容的字符串的。

String的实例化方式

//方式一:通过字面量的方式
String str = "string";

//方式二:通过new + 构造器 
String str = new String("stirng");

字符串的连接(及内存分析)

JAVA笔记—常用类

 结论:

        1.常量与常量拼接结果在常量池中。且常量池中不会存在相同的常量。

        2.只要其中有一个是变量,结果就在堆中。

        3.如果拼接的结果调用intern()方法,返回值就在常量池中。

JAVA1.6—1.8版本  常量池-perm的位置(内存解析)

JAVA笔记—常用类

JAVA笔记—常用类

JAVA笔记—常用类

一道面试题(理解String的不可变性)

JAVA笔记—常用类

String的常用方法

JAVA笔记—常用类

JAVA笔记—常用类

JAVA笔记—常用类

 String与包装类,基本数据类型的转换方法

String – – >基本数据类型,包装类:调用包装类的静态方法:parseXxx(str)

基本数据类型,包装类 – – > String: 调用String重载的valueOf(xxx)   

String和hcar【】型数组的转化

String —àchar[]:调用String的toCharArry()        

String str = "string_Test"
char[] charArray = str.toCharArray();

Char[] —àString:调用String的构造器

char[] charArr = new char[]{'t','e','s','t'};
String str = new String(charArr);

String和字节Byte之间的转化

编码:String – ->byte[]:调用String的getBytes();

解码:byte[ ] – ->String:通过调用String构造器。

说明:编码和解码使用的字符集要一致,否则会出现乱码的情况

 StringBuffer 、Stringbuilder 和 String

三者的异同

String不可变序列

Stringbuffer可变的字符序列:线程安全的,效率低

Stringbuilder可变的字符序列:jdk5.0新增,线程不安全,但效率高

Stringbuffer,Stringbuilder:在底层创建一个长度为16的char型数组

三者的效率对比

Stringbuilder > Stringbuffer > String

类Stringbuffer和 类Stringbuilder的常用方法

JAVA笔记—常用类

JAVA关于时间日期的API

JDK1.8 之前日期和时间的API

JAVA.lang.System

JAVA笔记—常用类

 @Test
    public void test1(){
        long l = System.currentTimeMillis();
        System.out.println(l); //返回值:1659785492214

    }

JAVA中两个Date类的使用

java.util.Date类

             |—-java.sql.Date类

java.util.Date类

 1.两个构造器的使用

        >构造器一:Date( ):创建一个对应当前时间的Date对象

        >构造器二:创建指定毫秒数的Date对象

2.两个方法的使用

        >toString( ):显示当前的年、月、日、时、分、秒

        >getTime( ):获取当前Data对象对应的毫秒数。(时间戳)

Java.sql.Date类—-数据库Date类

Sql_Date – ->util_Date  

建参数为utilDate对象调用的gettime()方法的值的sql_Date对象

Java.text.SimpleDateFormater类

JAVA笔记—常用类

 使用空参的创建对象

创建对象后,Format和parse都应该遵循默认的时间格式

JAVA笔记—常用类

使用带参的构造器—自定义时间格式

JAVA笔记—常用类

java.util.Date转换成java.sql.Date

JAVA笔记—常用类

Calendar 日历类—具有可变性

实例化

方式一:创建其子类对象(因为Calendar是抽象类

方式二:调用其静态方法:getinstance( );

JAVA笔记—常用类

常用的方法: 

get() 、set()

JAVA笔记—常用类

 add()

JAVA笔记—常用类

getTime() ,setTime

设置自定义格式的时间,setTime接收的格式为:Date

JAVA笔记—常用类

JDK1.8以后新的日期时间类

JAVA笔记—常用类

新时间类出现的背景:

JAVA笔记—常用类

JDK8之前的日期时间类存在的问题

可变性:像日期和时间这样的类应该时不可变的。

偏移性:Date中的年份是从1900年开始的,而月份都是从0开始的。

格式化:格式化只对Date有用,Calendar则不行。

此外,他们是线程不安全的;不能处理闰秒等。 

 偏移量问题解读:

JAVA笔记—常用类

调用此构造器设置年月日时,年份需要减去1900,月分=份需要减去1 ,年份和月份

才会显示正常。

不然会出现以下情况

JAVA笔记—常用类

输出结果如下(明显是错误的):

JAVA笔记—常用类


 LocalDate , LocalTime , LocalDateTime的使用

JAVA笔记—常用类


 JAVA笔记—常用类

JAVA笔记—常用类

 常用方法:

JAVA笔记—常用类

 实例化方式一(now() ):

JAVA笔记—常用类

控制台输出如下:

JAVA笔记—常用类

实例化方式二(of() ):JAVA笔记—常用类

 控制台输出如下:

JAVA笔记—常用类

常用方式实现:

get()获取

JAVA笔记—常用类

 with()修改

JAVA笔记—常用类

 plus()增加

JAVA笔记—常用类

minus()减少 

JAVA笔记—常用类

 常用类—Instant(瞬时)

JAVA笔记—常用类

 Instant常用方法

JAVA笔记—常用类

Instant的实例化

JAVA笔记—常用类

 控制台输出结果:

JAVA笔记—常用类

我当前输出的时间为:20:17:15

发现慢了8个小时 – – – – – 原因:Instant获取的时间是本初子午线的时间

 时区图:

JAVA笔记—常用类

解决偏移量的问题

增加对应偏移量使时间正确操作:atoffset

JAVA笔记—常用类

输出结果为(发现时间已正确): 

JAVA笔记—常用类

toEpochMilli方法

JAVA笔记—常用类

 利用毫秒数创建实例

JAVA笔记—常用类

DateTimeFormatter—格式化日期时间

SimpleDateFormatSimpleDateFormatSimpleDateFormat不同的是,DateTimeFormatter不但是不变对象,它还是线程安全的。

可以看成SimpleDateFormatter的升级版。

JAVA笔记—常用类

 DateTimeFormatter常用方法

JAVA笔记—常用类

 DateTimeFormatter三种使用方式:

异同:三种方式的日期时间格式不一样。

 方式一:预定义格式

JAVA笔记—常用类

 方式一的格式化和解析

JAVA笔记—常用类

方式二:本地相关格式—日期时间

 (注意看代码注释)

JAVA笔记—常用类

方式二格式化和解析

JAVA笔记—常用类

方式二的另一种格式—仅日期 

JAVA笔记—常用类

方式三:用户自定义格式(开发中常用) 

JAVA笔记—常用类

 (E 表示星期)

其他关于时间的API

JAVA笔记—常用类

 Java比较器

JAVA笔记—常用类

说明:Java中的对象,正常情况下,只能进行比较:== 或 !=  。 不能使用 > 或 < 。

           但是在开放场景中,我们需要对多个对象进行排序,言外之意,就需要比较对象的大小。

           如何实现呢?使用两个接口中的任意一个:Comparable 或 Comparator 接口。

Comparable接口的使用举例:

1.像String、包装类等实现了Comparable接口,重写了comparaTo(obj)方法,给出了比较两个对象的方法。

2.像Stirng,包装类重写了compareTo()方法后,进行了从小到大的排序

3.重写compareTo(obj)的规则:

        如果当前对象this大于形参对象obj,则返回正整数。

        如果当前对象this小于形参对象obj,则返回负整数。

        如果当前对象this等于形参对象obj,则返回零。

自然排序:

重写Compareto()方法
* 重写后此类方可使用Arrays.sort()方法比较大小并排序

*需要同时重写toString()方法

*toString方法alt+enter自动生成


举例

商品类属性

JAVA笔记—常用类

 重写的Compareto()方法(没使用泛型的情况) 

JAVA笔记—常用类

排序后调用

JAVA笔记—常用类

Comparator(定制排序) 

 定制规则比较compare

JAVA笔记—常用类

System类 

JAVA笔记—常用类

JAVA笔记—常用类

 Math类

JAVA笔记—常用类

BigInteger

JAVA笔记—常用类

BigInteger类常用方法: 

JAVA笔记—常用类

BigDecimal

JAVA笔记—常用类

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/154592.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!